mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 23:52:26 -05:00 
			
		
		
		
	more mastotypes
This commit is contained in:
		
					parent
					
						
							
								bc7302afa1
							
						
					
				
			
			
				commit
				
					
						1165d247a1
					
				
			
		
					 18 changed files with 604 additions and 20 deletions
				
			
		
							
								
								
									
										27
									
								
								pkg/mastotypes/model/context.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								pkg/mastotypes/model/context.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Context represents the tree around a given status. Used for reconstructing threads of statuses. See: https://docs.joinmastodon.org/entities/context/ | ||||
| type Context struct { | ||||
| 	// Parents in the thread. | ||||
| 	Ancestors []Status `json:"ancestors"` | ||||
| 	// Children in the thread. | ||||
| 	Descendants []Status `json:"descendants"` | ||||
| } | ||||
							
								
								
									
										36
									
								
								pkg/mastotypes/model/conversation.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								pkg/mastotypes/model/conversation.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Conversation represents a conversation with "direct message" visibility. See https://docs.joinmastodon.org/entities/conversation/ | ||||
| type Conversation struct { | ||||
| 	// REQUIRED | ||||
| 
 | ||||
| 	// Local database ID of the conversation. | ||||
| 	ID string `json:"id"` | ||||
| 	// Participants in the conversation. | ||||
| 	Accounts []Account `json:"accounts"` | ||||
| 	// Is the conversation currently marked as unread? | ||||
| 	Unread bool `json:"unread"` | ||||
| 
 | ||||
| 	// OPTIONAL | ||||
| 
 | ||||
| 	// The last status in the conversation, to be used for optional display. | ||||
| 	LastStatus *Status `json:"last_status"` | ||||
| } | ||||
							
								
								
									
										32
									
								
								pkg/mastotypes/model/error.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								pkg/mastotypes/model/error.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Error represents an error message returned from the API. See https://docs.joinmastodon.org/entities/error/ | ||||
| type Error struct { | ||||
| 	// REQUIRED | ||||
| 
 | ||||
| 	// The error message. | ||||
| 	Error string `json:"error"` | ||||
| 
 | ||||
| 	// OPTIONAL | ||||
| 
 | ||||
| 	// A longer description of the error, mainly provided with the OAuth API. | ||||
| 	ErrorDescription string `json:"error_description"` | ||||
| } | ||||
							
								
								
									
										33
									
								
								pkg/mastotypes/model/featuredtag.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								pkg/mastotypes/model/featuredtag.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // FeaturedTag represents a hashtag that is featured on a profile. See https://docs.joinmastodon.org/entities/featuredtag/ | ||||
| type FeaturedTag struct { | ||||
| 	// The internal ID of the featured tag in the database. | ||||
| 	ID string `json:"id"` | ||||
| 	// The name of the hashtag being featured. | ||||
| 	Name string `json:"name"` | ||||
| 	// A link to all statuses by a user that contain this hashtag. | ||||
| 	URL string `json:"url"` | ||||
| 	// The number of authored statuses containing this hashtag. | ||||
| 	StatusesCount int `json:"statuses_count"` | ||||
| 	// The timestamp of the last authored status containing this hashtag. (ISO 8601 Datetime) | ||||
| 	LastStatusAt string `json:"last_status_at"` | ||||
| } | ||||
							
								
								
									
										46
									
								
								pkg/mastotypes/model/filter.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								pkg/mastotypes/model/filter.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Filter represents a user-defined filter for determining which statuses should not be shown to the user. See https://docs.joinmastodon.org/entities/filter/ | ||||
| // If whole_word is true , client app should do: | ||||
| // Define ‘word constituent character’ for your app. In the official implementation, it’s [A-Za-z0-9_] in JavaScript, and [[:word:]] in Ruby. | ||||
| // Ruby uses the POSIX character class (Letter | Mark | Decimal_Number | Connector_Punctuation). | ||||
| // If the phrase starts with a word character, and if the previous character before matched range is a word character, its matched range should be treated to not match. | ||||
| // If the phrase ends with a word character, and if the next character after matched range is a word character, its matched range should be treated to not match. | ||||
| // Please check app/javascript/mastodon/selectors/index.js and app/lib/feed_manager.rb in the Mastodon source code for more details. | ||||
| type Filter struct { | ||||
| 	// The ID of the filter in the database. | ||||
| 	ID string `json:"id"` | ||||
| 	// The text to be filtered. | ||||
| 	Phrase string `json:"text"` | ||||
| 	// The contexts in which the filter should be applied. | ||||
| 	// Array of String (Enumerable anyOf) | ||||
| 	// 	home = home timeline and lists | ||||
| 	// 	notifications = notifications timeline | ||||
| 	// 	public = public timelines | ||||
| 	// 	thread = expanded thread of a detailed status | ||||
| 	Context []string `json:"context"` | ||||
| 	// Should the filter consider word boundaries? | ||||
| 	WholeWord bool `json:"whole_word"` | ||||
| 	// When the filter should no longer be applied (ISO 8601 Datetime), or null if the filter does not expire | ||||
| 	ExpiresAt string `json:"expires_at,omitempty"` | ||||
| 	// Should matching entities in home and notifications be dropped by the server? | ||||
| 	Irreversible bool `json:"irreversible"` | ||||
| } | ||||
							
								
								
									
										29
									
								
								pkg/mastotypes/model/history.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								pkg/mastotypes/model/history.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // History represents daily usage history of a hashtag. See https://docs.joinmastodon.org/entities/history/ | ||||
| type History struct { | ||||
| 	// UNIX timestamp on midnight of the given day (string cast from integer). | ||||
| 	Day string `json:"day"` | ||||
| 	// The counted usage of the tag within that day (string cast from integer). | ||||
| 	Uses string `json:"uses"` | ||||
| 	// The total of accounts using the tag within that day (string cast from integer). | ||||
| 	Accounts string `json:"accounts"` | ||||
| } | ||||
							
								
								
									
										33
									
								
								pkg/mastotypes/model/identityproof.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								pkg/mastotypes/model/identityproof.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // IdentityProof represents a proof from an external identity provider. See https://docs.joinmastodon.org/entities/identityproof/ | ||||
| type IdentityProof struct { | ||||
| 	// The name of the identity provider. | ||||
| 	Provider string `json:"provider"` | ||||
| 	// The account owner's username on the identity provider's service. | ||||
| 	ProviderUsername string `json:"provider_username"` | ||||
| 	// The account owner's profile URL on the identity provider. | ||||
| 	ProfileURL string `json:"profile_url"` | ||||
| 	// A link to a statement of identity proof, hosted by the identity provider. | ||||
| 	ProofURL string `json:"proof_url"` | ||||
| 	// When the identity proof was last updated. | ||||
| 	UpdatedAt string `json:"updated_at"` | ||||
| } | ||||
							
								
								
									
										72
									
								
								pkg/mastotypes/model/instance.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								pkg/mastotypes/model/instance.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Instance represents the software instance of Mastodon running on this domain. See https://docs.joinmastodon.org/entities/instance/ | ||||
| type Instance struct { | ||||
| 	// REQUIRED | ||||
| 
 | ||||
| 	// The domain name of the instance. | ||||
| 	URI string `json:"uri"` | ||||
| 	// The title of the website. | ||||
| 	Title string `json:"title"` | ||||
| 	// Admin-defined description of the Mastodon site. | ||||
| 	Description string `json:"description"` | ||||
| 	// A shorter description defined by the admin. | ||||
| 	ShortDescription string `json:"short_description"` | ||||
| 	// An email that may be contacted for any inquiries. | ||||
| 	Email string `json:"email"` | ||||
| 	// The version of Mastodon installed on the instance. | ||||
| 	Version string `json:"version"` | ||||
| 	// Primary langauges of the website and its staff. | ||||
| 	Languages []string `json:"languages"` | ||||
| 	// Whether registrations are enabled. | ||||
| 	Registrations bool `json:"registrations"` | ||||
| 	// Whether registrations require moderator approval. | ||||
| 	ApprovalRequired bool `json:"approval_required"` | ||||
| 	// Whether invites are enabled. | ||||
| 	InvitesEnabled bool `json:"invites_enabled"` | ||||
| 	// URLs of interest for clients apps. | ||||
| 	URLS *InstanceURLs `json:"urls"` | ||||
| 	// Statistics about how much information the instance contains. | ||||
| 	Stats *InstanceStats `json:"stats"` | ||||
| 
 | ||||
| 	// OPTIONAL | ||||
| 
 | ||||
| 	// Banner image for the website. | ||||
| 	Thumbnail string `json:"thumbnail,omitempty"` | ||||
| 	// A user that can be contacted, as an alternative to email. | ||||
| 	ContactAccount *Account `json:"contact_account,omitempty"` | ||||
| } | ||||
| 
 | ||||
| // InstanceURLs represents URLs necessary for successfully connecting to the instance as a user. See https://docs.joinmastodon.org/entities/instance/ | ||||
| type InstanceURLs struct { | ||||
| 	// Websockets address for push streaming. | ||||
| 	StreamingAPI string `json:"streaming_api"` | ||||
| } | ||||
| 
 | ||||
| // InstanceStats represents some public-facing stats about the instance. See https://docs.joinmastodon.org/entities/instance/ | ||||
| type InstanceStats struct { | ||||
| 	// Users registered on this instance. | ||||
| 	UserCount int `json:"user_count"` | ||||
| 	// Statuses authored by users on instance. | ||||
| 	StatusCount int `json:"status_count"` | ||||
| 	// Domains federated with this instance. | ||||
| 	DomainCount int `json:"domain_count"` | ||||
| } | ||||
							
								
								
									
										31
									
								
								pkg/mastotypes/model/list.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								pkg/mastotypes/model/list.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // List represents a list of some users that the authenticated user follows. See https://docs.joinmastodon.org/entities/list/ | ||||
| type List struct { | ||||
| 	// The internal database ID of the list. | ||||
| 	ID string `json:"id"` | ||||
| 	// The user-defined title of the list. | ||||
| 	Title string `json:"title"` | ||||
| 	// followed = Show replies to any followed user | ||||
| 	//	list = Show replies to members of the list | ||||
| 	//	none = Show replies to no one | ||||
| 	RepliesPolicy string `json:"replies_policy"` | ||||
| } | ||||
							
								
								
									
										37
									
								
								pkg/mastotypes/model/marker.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								pkg/mastotypes/model/marker.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Marker represents the last read position within a user's timelines. See https://docs.joinmastodon.org/entities/marker/ | ||||
| type Marker struct { | ||||
| 	// Information about the user's position in the home timeline. | ||||
| 	Home *TimelineMarker `json:"home"` | ||||
| 	// Information about the user's position in their notifications. | ||||
| 	Notifications *TimelineMarker `json:"notifications"` | ||||
| } | ||||
| 
 | ||||
| // TimelineMarker contains information about a user's progress through a specific timeline. See https://docs.joinmastodon.org/entities/marker/ | ||||
| type TimelineMarker struct { | ||||
| 	// The ID of the most recently viewed entity. | ||||
| 	LastReadID string `json:"last_read_id"` | ||||
| 	// The timestamp of when the marker was set (ISO 8601 Datetime) | ||||
| 	UpdatedAt string `json:"updated_at"` | ||||
| 	// Used for locking to prevent write conflicts. | ||||
| 	Version string `json:"version"` | ||||
| } | ||||
							
								
								
									
										45
									
								
								pkg/mastotypes/model/notification.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								pkg/mastotypes/model/notification.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Notification represents a notification of an event relevant to the user. See https://docs.joinmastodon.org/entities/notification/ | ||||
| type Notification struct { | ||||
| 	// REQUIRED | ||||
| 
 | ||||
| 	// The id of the notification in the database. | ||||
| 	ID string `json:"id"` | ||||
| 	// The type of event that resulted in the notification. | ||||
| 	// 	follow = Someone followed you | ||||
| 	// 	follow_request = Someone requested to follow you | ||||
| 	// 	mention = Someone mentioned you in their status | ||||
| 	// 	reblog = Someone boosted one of your statuses | ||||
| 	// 	favourite = Someone favourited one of your statuses | ||||
| 	// 	poll = A poll you have voted in or created has ended | ||||
| 	// 	status = Someone you enabled notifications for has posted a status | ||||
| 	Type string `json:"type"` | ||||
| 	// The timestamp of the notification (ISO 8601 Datetime) | ||||
| 	CreatedAt string `json:"created_at"` | ||||
| 	// The account that performed the action that generated the notification. | ||||
| 	Account *Account `json:"account"` | ||||
| 
 | ||||
| 	// OPTIONAL | ||||
| 
 | ||||
| 	// Status that was the object of the notification, e.g. in mentions, reblogs, favourites, or polls. | ||||
| 	Status *Status `json:"status"` | ||||
| } | ||||
							
								
								
									
										40
									
								
								pkg/mastotypes/model/preferences.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								pkg/mastotypes/model/preferences.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Preferences represents a user's preferences. See https://docs.joinmastodon.org/entities/preferences/ | ||||
| type Preferences struct { | ||||
| 	// Default visibility for new posts. | ||||
| 	// 	public = Public post | ||||
| 	// 	unlisted = Unlisted post | ||||
| 	// 	private = Followers-only post | ||||
| 	// 	direct = Direct post | ||||
| 	PostingDefaultVisibility string `json:"posting:default:visibility"` | ||||
| 	// Default sensitivity flag for new posts. | ||||
| 	PostingDefaultSensitive bool `json:"posting:default:sensitive"` | ||||
| 	// Default language for new posts. (ISO 639-1 language two-letter code), or null | ||||
| 	PostingDefaultLanguage string `json:"posting:default:language,omitempty"` | ||||
| 	// Whether media attachments should be automatically displayed or blurred/hidden. | ||||
| 	// 	default = Hide media marked as sensitive | ||||
| 	// 	show_all = Always show all media by default, regardless of sensitivity | ||||
| 	// 	hide_all = Always hide all media by default, regardless of sensitivity | ||||
| 	ReadingExpandMedia string `json:"reading:expand:media"` | ||||
| 	// Whether CWs should be expanded by default. | ||||
| 	ReadingExpandSpoilers bool `json:"reading:expand:spoilers"` | ||||
| } | ||||
							
								
								
									
										45
									
								
								pkg/mastotypes/model/pushsubscription.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								pkg/mastotypes/model/pushsubscription.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // PushSubscription represents a subscription to the push streaming server. See https://docs.joinmastodon.org/entities/pushsubscription/ | ||||
| type PushSubscription struct { | ||||
| 	// The id of the push subscription in the database. | ||||
| 	ID string `json:"id"` | ||||
| 	// Where push alerts will be sent to. | ||||
| 	Endpoint string `json:"endpoint"` | ||||
| 	// The streaming server's VAPID key. | ||||
| 	ServerKey string `json:"server_key"` | ||||
| 	// Which alerts should be delivered to the endpoint. | ||||
| 	Alerts *PushSubscriptionAlerts `json:"alerts"` | ||||
| } | ||||
| 
 | ||||
| // PushSubscriptionAlerts represents the specific alerts that this push subscription will give. | ||||
| type PushSubscriptionAlerts struct { | ||||
| 	// Receive a push notification when someone has followed you? | ||||
| 	Follow bool `json:"follow"` | ||||
| 	// Receive a push notification when a status you created has been favourited by someone else? | ||||
| 	Favourite bool `json:"favourite"` | ||||
| 	// Receive a push notification when someone else has mentioned you in a status? | ||||
| 	Mention bool `json:"mention"` | ||||
| 	// Receive a push notification when a status you created has been boosted by someone else? | ||||
| 	Reblog bool `json:"reblog"` | ||||
| 	// Receive a push notification when a poll you voted in or created has ended? | ||||
| 	Poll bool `json:"poll"` | ||||
| } | ||||
							
								
								
									
										49
									
								
								pkg/mastotypes/model/relationship.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								pkg/mastotypes/model/relationship.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Relationship represents a relationship between accounts. See https://docs.joinmastodon.org/entities/relationship/ | ||||
| type Relationship struct { | ||||
| 	// The account id. | ||||
| 	ID string `json:"id"` | ||||
| 	// Are you following this user? | ||||
| 	Following bool `json:"following"` | ||||
| 	// Are you receiving this user's boosts in your home timeline? | ||||
| 	ShowingReblogs bool `json:"showing_reblogs"` | ||||
| 	// Have you enabled notifications for this user? | ||||
| 	Notifying bool `json:"notifying"` | ||||
| 	// Are you followed by this user? | ||||
| 	FollowedBy bool `json:"followed_by"` | ||||
| 	// Are you blocking this user? | ||||
| 	Blocking bool `json:"blocking"` | ||||
| 	// Is this user blocking you? | ||||
| 	BlockedBy bool `json:"blocked_by"` | ||||
| 	// Are you muting this user? | ||||
| 	Muting bool `json:"muting"` | ||||
| 	// Are you muting notifications from this user? | ||||
| 	MutingNotifications bool `json:"muting_notifications"` | ||||
| 	// Do you have a pending follow request for this user? | ||||
| 	Requested bool `json:"requested"` | ||||
| 	// Are you blocking this user's domain? | ||||
| 	DomainBlocking bool `json:"domain_blocking"` | ||||
| 	// Are you featuring this user on your profile? | ||||
| 	Endorsed bool `json:"endorsed"` | ||||
| 	// Your note on this account. | ||||
| 	Note string `json:"note"` | ||||
| } | ||||
							
								
								
									
										29
									
								
								pkg/mastotypes/model/results.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								pkg/mastotypes/model/results.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org | ||||
| 
 | ||||
|    This program is free software: you can redistribute it and/or modify | ||||
|    it under the terms of the GNU Affero General Public License as published by | ||||
|    the Free Software Foundation, either version 3 of the License, or | ||||
|    (at your option) any later version. | ||||
| 
 | ||||
|    This program is distributed in the hope that it will be useful, | ||||
|    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|    GNU Affero General Public License for more details. | ||||
| 
 | ||||
|    You should have received a copy of the GNU Affero General Public License | ||||
|    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| */ | ||||
| 
 | ||||
| package mastotypes | ||||
| 
 | ||||
| // Results represents the results of a search. See https://docs.joinmastodon.org/entities/results/ | ||||
| type Results struct { | ||||
| 	// Accounts which match the given query | ||||
| 	Accounts []Account `json:"accounts"` | ||||
| 	// Statuses which match the given query | ||||
| 	Statuses []Status `json:"statuses"` | ||||
| 	// Hashtags which match the given query | ||||
| 	Hashtags []Tag `json:"hashtags"` | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue