mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-27 19:01:01 +00:00
more mastotypes
This commit is contained in:
parent
bc7302afa1
commit
1165d247a1
18 changed files with 604 additions and 20 deletions
|
@ -21,13 +21,13 @@ package mastotypes
|
||||||
// AnnouncementReaction represents a user reaction to admin/moderator announcement. See here: https://docs.joinmastodon.org/entities/announcementreaction/
|
// AnnouncementReaction represents a user reaction to admin/moderator announcement. See here: https://docs.joinmastodon.org/entities/announcementreaction/
|
||||||
type AnnouncementReaction struct {
|
type AnnouncementReaction struct {
|
||||||
// The emoji used for the reaction. Either a unicode emoji, or a custom emoji's shortcode.
|
// The emoji used for the reaction. Either a unicode emoji, or a custom emoji's shortcode.
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
// The total number of users who have added this reaction.
|
// The total number of users who have added this reaction.
|
||||||
Count int `json:"count"`
|
Count int `json:"count"`
|
||||||
// Whether the authorized user has added this reaction to the announcement.
|
// Whether the authorized user has added this reaction to the announcement.
|
||||||
Me bool `json:"me"`
|
Me bool `json:"me"`
|
||||||
// A link to the custom emoji.
|
// A link to the custom emoji.
|
||||||
URL string `json:"url,omitempty"`
|
URL string `json:"url,omitempty"`
|
||||||
// A link to a non-animated version of the custom emoji.
|
// A link to a non-animated version of the custom emoji.
|
||||||
StaticURL string `json:"static_url,omitempty"`
|
StaticURL string `json:"static_url,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
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"`
|
||||||
|
}
|
|
@ -31,4 +31,4 @@ type Field struct {
|
||||||
|
|
||||||
// Timestamp of when the server verified a URL value for a rel="me” link. String (ISO 8601 Datetime) if value is a verified URL
|
// Timestamp of when the server verified a URL value for a rel="me” link. String (ISO 8601 Datetime) if value is a verified URL
|
||||||
VerifiedAt string `json:"verified_at,omitempty"`
|
VerifiedAt string `json:"verified_at,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
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"`
|
||||||
|
}
|
|
@ -29,25 +29,25 @@ type Poll struct {
|
||||||
// Does the poll allow multiple-choice answers?
|
// Does the poll allow multiple-choice answers?
|
||||||
Multiple bool `json:"multiple"`
|
Multiple bool `json:"multiple"`
|
||||||
// How many votes have been received.
|
// How many votes have been received.
|
||||||
VotesCount int `json:"votes_count"`
|
VotesCount int `json:"votes_count"`
|
||||||
// How many unique accounts have voted on a multiple-choice poll. Null if multiple is false.
|
// How many unique accounts have voted on a multiple-choice poll. Null if multiple is false.
|
||||||
VotersCount int `json:"voters_count,omitempty"`
|
VotersCount int `json:"voters_count,omitempty"`
|
||||||
// When called with a user token, has the authorized user voted?
|
// When called with a user token, has the authorized user voted?
|
||||||
Voted bool `json:"voted,omitempty"`
|
Voted bool `json:"voted,omitempty"`
|
||||||
// When called with a user token, which options has the authorized user chosen? Contains an array of index values for options.
|
// When called with a user token, which options has the authorized user chosen? Contains an array of index values for options.
|
||||||
OwnVotes []int `json:"own_votes,omitempty"`
|
OwnVotes []int `json:"own_votes,omitempty"`
|
||||||
// Possible answers for the poll.
|
// Possible answers for the poll.
|
||||||
Options []PollOptions `json:"options"`
|
Options []PollOptions `json:"options"`
|
||||||
// Custom emoji to be used for rendering poll options.
|
// Custom emoji to be used for rendering poll options.
|
||||||
Emojis []Emoji `json:"emojis"`
|
Emojis []Emoji `json:"emojis"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PollOptions represents the current vote counts for different poll options
|
// PollOptions represents the current vote counts for different poll options
|
||||||
type PollOptions struct {
|
type PollOptions struct {
|
||||||
// The text value of the poll option. String.
|
// The text value of the poll option. String.
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
// The number of received votes for this option. Number, or null if results are not published yet.
|
// The number of received votes for this option. Number, or null if results are not published yet.
|
||||||
VotesCount int `json:"votes_count,omitempty"`
|
VotesCount int `json:"votes_count,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PollRequest represents a mastodon-api poll attached to a status POST request, as defined here: https://docs.joinmastodon.org/methods/statuses/
|
// PollRequest represents a mastodon-api poll attached to a status POST request, as defined here: https://docs.joinmastodon.org/methods/statuses/
|
||||||
|
|
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…
Reference in a new issue