mastodon

package module
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2019 License: MIT Imports: 21 Imported by: 0

README ¶

go-mastodon

GoDoc

Usage

Application
package main

import (
	"context"
	"fmt"
	"log"

	"git.dtluna.net/dtluna/go-mastodon"
)

func main() {
	app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
		Server:     "https://mstdn.jp",
		ClientName: "client-name",
		Scopes:     "read write follow",
		Website:    "https://git.dtluna.net/dtluna/go-mastodon",
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("client-id    : %s\n", app.ClientID)
	fmt.Printf("client-secret: %s\n", app.ClientSecret)
}
Client
package main

import (
	"context"
	"fmt"
	"log"

	"git.dtluna.net/dtluna/go-mastodon"
)

func main() {
	c := mastodon.NewClient(&mastodon.Config{
		Server:       "https://mstdn.jp",
		ClientID:     "client-id",
		ClientSecret: "client-secret",
	})
	err := c.Authenticate(context.Background(), "your-email", "your-password")
	if err != nil {
		log.Fatal(err)
	}
	timeline, err := c.GetTimelineHome(context.Background(), nil)
	if err != nil {
		log.Fatal(err)
	}
	for i := len(timeline) - 1; i >= 0; i-- {
		fmt.Println(timeline[i])
	}
}

Status of implementations

  • GET /api/v1/accounts/:id
  • GET /api/v1/accounts/verify_credentials
  • PATCH /api/v1/accounts/update_credentials
  • GET /api/v1/accounts/:id/followers
  • GET /api/v1/accounts/:id/following
  • GET /api/v1/accounts/:id/statuses
  • POST /api/v1/accounts/:id/follow
  • POST /api/v1/accounts/:id/unfollow
  • GET /api/v1/accounts/:id/block
  • GET /api/v1/accounts/:id/unblock
  • GET /api/v1/accounts/:id/mute
  • GET /api/v1/accounts/:id/unmute
  • GET /api/v1/accounts/:id/lists
  • GET /api/v1/accounts/relationships
  • GET /api/v1/accounts/search
  • POST /api/v1/apps
  • GET /api/v1/blocks
  • GET /api/v1/favourites
  • GET /api/v1/follow_requests
  • POST /api/v1/follow_requests/:id/authorize
  • POST /api/v1/follow_requests/:id/reject
  • POST /api/v1/follows
  • GET /api/v1/instance
  • GET /api/v1/instance/activity
  • GET /api/v1/instance/peers
  • GET /api/v1/lists
  • GET /api/v1/lists/:id/accounts
  • GET /api/v1/lists/:id
  • POST /api/v1/lists
  • PUT /api/v1/lists/:id
  • DELETE /api/v1/lists/:id
  • POST /api/v1/lists/:id/accounts
  • DELETE /api/v1/lists/:id/accounts
  • POST /api/v1/media
  • GET /api/v1/mutes
  • GET /api/v1/notifications
  • GET /api/v1/notifications/:id
  • POST /api/v1/notifications/dismiss
  • POST /api/v1/notifications/clear
  • POST /api/v1/push/subscription
  • GET /api/v1/push/subscription
  • PUT /api/v1/push/subscription
  • DELETE /api/v1/push/subscription
  • GET /api/v1/reports
  • POST /api/v1/reports
  • GET /api/v1/search
  • GET /api/v1/statuses/:id
  • GET /api/v1/statuses/:id/context
  • GET /api/v1/statuses/:id/card
  • GET /api/v1/statuses/:id/reblogged_by
  • GET /api/v1/statuses/:id/favourited_by
  • POST /api/v1/statuses
  • DELETE /api/v1/statuses/:id
  • POST /api/v1/statuses/:id/reblog
  • POST /api/v1/statuses/:id/unreblog
  • POST /api/v1/statuses/:id/favourite
  • POST /api/v1/statuses/:id/unfavourite
  • GET /api/v1/timelines/home
  • GET /api/v1/timelines/public
  • GET /api/v1/timelines/tag/:hashtag
  • GET /api/v1/timelines/list/:id

Installation

$ go get git.dtluna.net/dtluna/go-mastodon

License

MIT

Authors

  • Yasuhiro Matsumoto (a.k.a. mattn)
  • dtluna

Documentation ¶

Overview ¶

Package mastodon provides functions and structs for accessing the mastodon API.

Index ¶

Examples ¶

Constants ¶

This section is empty.

Variables ¶

This section is empty.

Functions ¶

func Base64Encode ¶

func Base64Encode(file *os.File) (string, error)

Base64Encode returns the base64 data URI format string of the file.

func Base64EncodeFileName ¶

func Base64EncodeFileName(filename string) (string, error)

Base64EncodeFileName returns the base64 data URI format string of the file with the file name.

func GetAuthorizeURL ¶ added in v1.2.0

func GetAuthorizeURL(serverURL, redirectURI, clientID, scope string) (*url.URL, error)

GetAuthorizeURL returns a URL for OAuth authorization

func String ¶

func String(v string) *string

String is a helper function to get the pointer value of a string.

Types ¶

type Account ¶

type Account struct {
	ID             ID        `json:"id"`
	Username       string    `json:"username"`
	Acct           string    `json:"acct"`
	DisplayName    string    `json:"display_name"`
	Locked         bool      `json:"locked"`
	CreatedAt      time.Time `json:"created_at"`
	FollowersCount int64     `json:"followers_count"`
	FollowingCount int64     `json:"following_count"`
	StatusesCount  int64     `json:"statuses_count"`
	Note           string    `json:"note"`
	URL            string    `json:"url"`
	Avatar         string    `json:"avatar"`
	AvatarStatic   string    `json:"avatar_static"`
	Header         string    `json:"header"`
	HeaderStatic   string    `json:"header_static"`
	Emojis         []Emoji   `json:"emojis"`
	Moved          *Account  `json:"moved"`
	Fields         []Field   `json:"fields"`
	Bot            bool      `json:"bot"`
}

Account hold information for mastodon account.

type AccountSource ¶ added in v1.0.0

type AccountSource struct {
	Privacy   *string  `json:"privacy"`
	Sensitive *bool    `json:"sensitive"`
	Language  *string  `json:"language"`
	Note      *string  `json:"note"`
	Fields    *[]Field `json:"fields"`
}

AccountSource is a Mastodon account profile field.

type AppConfig ¶

type AppConfig struct {
	http.Client
	Server     string
	ClientName string

	// Where the user should be redirected after authorization (for no redirect, use urn:ietf:wg:oauth:2.0:oob)
	RedirectURIs string

	// This can be a space-separated list of items listed on the /settings/applications/new page of any Mastodon
	// instance. "read", "write", and "follow" are top-level scopes that include all the permissions of the more
	// specific scopes like "read:favourites", "write:statuses", and "write:follows".
	Scopes string

	// Optional.
	Website string
}

AppConfig is a setting for registering applications.

type Application ¶

type Application struct {
	ID           ID     `json:"id"`
	RedirectURI  string `json:"redirect_uri"`
	ClientID     string `json:"client_id"`
	ClientSecret string `json:"client_secret"`

	// AuthURI is not part of the Mastodon API; it is generated by go-mastodon.
	AuthURI string `json:"auth_uri,omitempty"`
}

Application is mastodon application.

func RegisterApp ¶

func RegisterApp(ctx context.Context, appConfig *AppConfig) (*Application, error)

RegisterApp returns the mastodon application.

Example ¶
app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
	Server:     "https://mstdn.jp",
	ClientName: "client-name",
	Scopes:     "read write follow",
	Website:    "https://git.dtluna.net/dtluna/go-mastodon",
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("client-id    : %s\n", app.ClientID)
fmt.Printf("client-secret: %s\n", app.ClientSecret)
Output:

type Attachment ¶

type Attachment struct {
	ID          ID             `json:"id"`
	Type        string         `json:"type"`
	URL         string         `json:"url"`
	RemoteURL   string         `json:"remote_url"`
	PreviewURL  string         `json:"preview_url"`
	TextURL     string         `json:"text_url"`
	Description string         `json:"description"`
	Meta        AttachmentMeta `json:"meta"`
}

Attachment hold information for attachment.

type AttachmentMeta ¶ added in v1.0.0

type AttachmentMeta struct {
	Original AttachmentSize `json:"original"`
	Small    AttachmentSize `json:"small"`
}

AttachmentMeta holds information for attachment metadata.

type AttachmentSize ¶ added in v1.0.0

type AttachmentSize struct {
	Width  int64   `json:"width"`
	Height int64   `json:"height"`
	Size   string  `json:"size"`
	Aspect float64 `json:"aspect"`
}

AttachmentSize holds information for attatchment size.

type Card ¶

type Card struct {
	URL          string `json:"url"`
	Title        string `json:"title"`
	Description  string `json:"description"`
	Image        string `json:"image"`
	Type         string `json:"type"`
	AuthorName   string `json:"author_name"`
	AuthorURL    string `json:"author_url"`
	ProviderName string `json:"provider_name"`
	ProviderURL  string `json:"provider_url"`
	HTML         string `json:"html"`
	Width        int64  `json:"width"`
	Height       int64  `json:"height"`
}

Card hold information for mastodon card.

type Client ¶

type Client struct {
	http.Client
	Config    *Config
	UserAgent string
}

Client is a API client for mastodon.

Example ¶
c := mastodon.NewClient(&mastodon.Config{
	Server:       "https://mstdn.jp",
	ClientID:     "client-id",
	ClientSecret: "client-secret",
})
err := c.Authenticate(context.Background(), "your-email", "your-password")
if err != nil {
	log.Fatal(err)
}
timeline, err := c.GetTimelineHome(context.Background(), nil)
if err != nil {
	log.Fatal(err)
}
for i := len(timeline) - 1; i >= 0; i-- {
	fmt.Println(timeline[i])
}
Output:

func NewClient ¶

func NewClient(config *Config) *Client

NewClient return new mastodon API client.

func (*Client) AccountBlock ¶

func (c *Client) AccountBlock(ctx context.Context, id ID) (*Relationship, error)

AccountBlock block the account.

func (*Client) AccountFollow ¶

func (c *Client) AccountFollow(ctx context.Context, id ID) (*Relationship, error)

AccountFollow follow the account.

func (*Client) AccountMute ¶

func (c *Client) AccountMute(ctx context.Context, id ID) (*Relationship, error)

AccountMute mute the account.

func (*Client) AccountUnblock ¶

func (c *Client) AccountUnblock(ctx context.Context, id ID) (*Relationship, error)

AccountUnblock unblock the account.

func (*Client) AccountUnfollow ¶

func (c *Client) AccountUnfollow(ctx context.Context, id ID) (*Relationship, error)

AccountUnfollow unfollow the account.

func (*Client) AccountUnmute ¶

func (c *Client) AccountUnmute(ctx context.Context, id ID) (*Relationship, error)

AccountUnmute unmute the account.

func (*Client) AccountUpdate ¶

func (c *Client) AccountUpdate(ctx context.Context, profile *Profile) (*Account, error)

AccountUpdate updates the information of the current user.

func (*Client) AccountsSearch ¶

func (c *Client) AccountsSearch(ctx context.Context, q string, limit int64) ([]*Account, error)

AccountsSearch search accounts by query.

func (*Client) AddPushSubscription ¶ added in v1.1.0

func (c *Client) AddPushSubscription(ctx context.Context, endpoint string, public ecdsa.PublicKey, shared []byte, alerts PushAlerts) (*PushSubscription, error)

AddPushSubscription adds a new push subscription.

func (*Client) AddToList ¶ added in v1.0.0

func (c *Client) AddToList(ctx context.Context, list ID, accounts ...ID) error

AddToList adds accounts to a list.

Only accounts already followed by the user can be added to a list.

func (*Client) Authenticate ¶

func (c *Client) Authenticate(ctx context.Context, username, password string) error

Authenticate get access-token to the API.

func (*Client) AuthenticateToken ¶ added in v0.0.3

func (c *Client) AuthenticateToken(ctx context.Context, authCode, redirectURI string) error

AuthenticateToken logs in using a grant token returned by Application.AuthURI.

redirectURI should be the same as Application.RedirectURI.

func (*Client) ClearNotifications ¶

func (c *Client) ClearNotifications(ctx context.Context) error

ClearNotifications clear notifications.

func (*Client) CreateList ¶ added in v1.0.0

func (c *Client) CreateList(ctx context.Context, title string) (*List, error)

CreateList creates a new list with a given title.

func (*Client) DeleteList ¶ added in v1.0.0

func (c *Client) DeleteList(ctx context.Context, id ID) error

DeleteList removes a list.

func (*Client) DeleteStatus ¶

func (c *Client) DeleteStatus(ctx context.Context, id ID) error

DeleteStatus delete the toot.

func (*Client) DismissNotification ¶ added in v1.0.0

func (c *Client) DismissNotification(ctx context.Context, id ID) error

DismissNotification deletes a single notification.

func (*Client) Favourite ¶

func (c *Client) Favourite(ctx context.Context, id ID) (*Status, error)

Favourite is favourite the toot of id and return status of the favourite toot.

func (*Client) FollowRemoteUser ¶

func (c *Client) FollowRemoteUser(ctx context.Context, uri string) (*Account, error)

FollowRemoteUser send follow-request.

func (*Client) FollowRequestAuthorize ¶

func (c *Client) FollowRequestAuthorize(ctx context.Context, id ID) error

FollowRequestAuthorize is authorize the follow request of user with id.

func (*Client) FollowRequestReject ¶

func (c *Client) FollowRequestReject(ctx context.Context, id ID) error

FollowRequestReject is rejects the follow request of user with id.

func (*Client) GetAccount ¶

func (c *Client) GetAccount(ctx context.Context, id ID) (*Account, error)

GetAccount return Account.

func (*Client) GetAccountCurrentUser ¶

func (c *Client) GetAccountCurrentUser(ctx context.Context) (*Account, error)

GetAccountCurrentUser return Account of current user.

func (*Client) GetAccountFollowers ¶

func (c *Client) GetAccountFollowers(ctx context.Context, id ID, pg *Pagination) ([]*Account, error)

GetAccountFollowers return followers list.

func (*Client) GetAccountFollowing ¶

func (c *Client) GetAccountFollowing(ctx context.Context, id ID, pg *Pagination) ([]*Account, error)

GetAccountFollowing return following list.

func (*Client) GetAccountLists ¶ added in v1.0.0

func (c *Client) GetAccountLists(ctx context.Context, id ID) ([]*List, error)

GetAccountLists returns the lists containing a given account.

func (*Client) GetAccountRelationships ¶

func (c *Client) GetAccountRelationships(ctx context.Context, ids []string) ([]*Relationship, error)

GetAccountRelationships return relationship for the account.

func (*Client) GetAccountStatuses ¶

func (c *Client) GetAccountStatuses(ctx context.Context, id ID, pg *Pagination) ([]*Status, error)

GetAccountStatuses return statuses by specified accuont.

func (*Client) GetBlocks ¶

func (c *Client) GetBlocks(ctx context.Context, pg *Pagination) ([]*Account, error)

GetBlocks return block list.

func (*Client) GetFavouritedBy ¶

func (c *Client) GetFavouritedBy(ctx context.Context, id ID, pg *Pagination) ([]*Account, error)

GetFavouritedBy returns the account list of the user who liked the toot of id.

func (*Client) GetFavourites ¶

func (c *Client) GetFavourites(ctx context.Context, pg *Pagination) ([]*Status, error)

GetFavourites return the favorite list of the current user.

func (*Client) GetFollowRequests ¶

func (c *Client) GetFollowRequests(ctx context.Context, pg *Pagination) ([]*Account, error)

GetFollowRequests return follow-requests.

func (*Client) GetInstance ¶

func (c *Client) GetInstance(ctx context.Context) (*Instance, error)

GetInstance return Instance.

func (*Client) GetInstanceActivity ¶ added in v0.0.3

func (c *Client) GetInstanceActivity(ctx context.Context) ([]*WeeklyActivity, error)

GetInstanceActivity return instance activity.

func (*Client) GetInstancePeers ¶ added in v0.0.3

func (c *Client) GetInstancePeers(ctx context.Context) ([]string, error)

GetInstancePeers return instance peers.

func (*Client) GetList ¶ added in v1.0.0

func (c *Client) GetList(ctx context.Context, id ID) (*List, error)

GetList retrieves a list by ID.

func (*Client) GetListAccounts ¶ added in v1.0.0

func (c *Client) GetListAccounts(ctx context.Context, id ID) ([]*Account, error)

GetListAccounts returns the accounts in a given list.

func (*Client) GetLists ¶ added in v1.0.0

func (c *Client) GetLists(ctx context.Context) ([]*List, error)

GetLists returns all the lists on the current account.

func (*Client) GetMutes ¶

func (c *Client) GetMutes(ctx context.Context, pg *Pagination) ([]*Account, error)

GetMutes returns the list of users muted by the current user.

func (*Client) GetNotification ¶

func (c *Client) GetNotification(ctx context.Context, id ID) (*Notification, error)

GetNotification return notification.

func (*Client) GetNotifications ¶

func (c *Client) GetNotifications(ctx context.Context, pg *Pagination) ([]*Notification, error)

GetNotifications return notifications.

func (*Client) GetPushSubscription ¶ added in v1.1.0

func (c *Client) GetPushSubscription(ctx context.Context) (*PushSubscription, error)

GetPushSubscription retrieves information about the active push subscription.

func (*Client) GetRebloggedBy ¶

func (c *Client) GetRebloggedBy(ctx context.Context, id ID, pg *Pagination) ([]*Account, error)

GetRebloggedBy returns the account list of the user who reblogged the toot of id.

func (*Client) GetReports ¶

func (c *Client) GetReports(ctx context.Context) ([]*Report, error)

GetReports return report of the current user.

func (*Client) GetStatus ¶

func (c *Client) GetStatus(ctx context.Context, id ID) (*Status, error)

GetStatus return status specified by id.

func (*Client) GetStatusCard ¶

func (c *Client) GetStatusCard(ctx context.Context, id ID) (*Card, error)

GetStatusCard return status specified by id.

func (*Client) GetStatusContext ¶

func (c *Client) GetStatusContext(ctx context.Context, id ID) (*Context, error)

GetStatusContext return status specified by id.

func (*Client) GetTimelineDirect ¶ added in v1.0.0

func (c *Client) GetTimelineDirect(ctx context.Context, pg *Pagination) ([]*Status, error)

GetTimelineDirect return statuses from direct timeline.

func (*Client) GetTimelineHashtag ¶

func (c *Client) GetTimelineHashtag(ctx context.Context, tag string, isLocal bool, pg *Pagination) ([]*Status, error)

GetTimelineHashtag return statuses from tagged timeline.

func (*Client) GetTimelineHome ¶

func (c *Client) GetTimelineHome(ctx context.Context, pg *Pagination) ([]*Status, error)

GetTimelineHome return statuses from home timeline.

func (*Client) GetTimelineList ¶ added in v1.0.0

func (c *Client) GetTimelineList(ctx context.Context, id ID, pg *Pagination) ([]*Status, error)

GetTimelineList return statuses from a list timeline.

func (*Client) GetTimelineMedia ¶

func (c *Client) GetTimelineMedia(ctx context.Context, isLocal bool, pg *Pagination) ([]*Status, error)

GetTimelineMedia return statuses from media timeline. NOTE: This is an experimental feature of pawoo.net.

func (*Client) GetTimelinePublic ¶

func (c *Client) GetTimelinePublic(ctx context.Context, isLocal bool, pg *Pagination) ([]*Status, error)

GetTimelinePublic return statuses from public timeline.

func (*Client) NewWSClient ¶

func (c *Client) NewWSClient() *WSClient

NewWSClient return WebSocket client.

func (*Client) PostScrobble ¶ added in v1.2.0

func (c *Client) PostScrobble(ctx context.Context, scrobble Scrobble) (*Scrobble, error)

PostScrobble posts a scrobble (a.k.a. "Now listening to") NOTE: is a Pleroma feature

func (*Client) PostStatus ¶

func (c *Client) PostStatus(ctx context.Context, toot *Toot) (*Status, error)

PostStatus post the toot.

func (*Client) Reblog ¶

func (c *Client) Reblog(ctx context.Context, id ID) (*Status, error)

Reblog is reblog the toot of id and return status of reblog.

func (*Client) RemoveFromList ¶ added in v1.0.0

func (c *Client) RemoveFromList(ctx context.Context, list ID, accounts ...ID) error

RemoveFromList removes accounts from a list.

func (*Client) RemovePushSubscription ¶ added in v1.1.0

func (c *Client) RemovePushSubscription(ctx context.Context) error

RemovePushSubscription deletes the active push subscription.

func (*Client) RenameList ¶ added in v1.0.0

func (c *Client) RenameList(ctx context.Context, id ID, title string) (*List, error)

RenameList assigns a new title to a list.

func (*Client) Report ¶

func (c *Client) Report(ctx context.Context, accountID ID, ids []ID, comment string) (*Report, error)

Report reports the report

func (*Client) Search ¶

func (c *Client) Search(ctx context.Context, q string, resolve bool) (*Results, error)

Search search content with query.

func (*Client) StreamingHashtag ¶

func (c *Client) StreamingHashtag(ctx context.Context, tag string, isLocal bool) (chan Event, error)

StreamingHashtag return channel to read events on tagged timeline.

func (*Client) StreamingList ¶ added in v1.0.0

func (c *Client) StreamingList(ctx context.Context, id ID) (chan Event, error)

StreamingList return channel to read events on a list.

func (*Client) StreamingPublic ¶

func (c *Client) StreamingPublic(ctx context.Context, isLocal bool) (chan Event, error)

StreamingPublic return channel to read events on public.

func (*Client) StreamingUser ¶

func (c *Client) StreamingUser(ctx context.Context) (chan Event, error)

StreamingUser return channel to read events on home.

func (*Client) Unfavourite ¶

func (c *Client) Unfavourite(ctx context.Context, id ID) (*Status, error)

Unfavourite is unfavourite the toot of id and return status of the unfavourite toot.

func (*Client) Unreblog ¶

func (c *Client) Unreblog(ctx context.Context, id ID) (*Status, error)

Unreblog is unreblog the toot of id and return status of the original toot.

func (*Client) UpdatePushSubscription ¶ added in v1.1.0

func (c *Client) UpdatePushSubscription(ctx context.Context, alerts *PushAlerts) (*PushSubscription, error)

UpdatePushSubscription updates which type of notifications are sent for the active push subscription.

func (*Client) UploadMedia ¶

func (c *Client) UploadMedia(ctx context.Context, file string) (*Attachment, error)

UploadMedia upload a media attachment from a file.

func (*Client) UploadMediaFromReader ¶ added in v1.0.0

func (c *Client) UploadMediaFromReader(ctx context.Context, reader io.Reader) (*Attachment, error)

UploadMediaFromReader uploads a media attachment from a io.Reader.

type Config ¶

type Config struct {
	Server       string
	ClientID     string
	ClientSecret string
	AccessToken  string
}

Config is a setting for access mastodon APIs.

type Context ¶

type Context struct {
	Ancestors   []*Status `json:"ancestors"`
	Descendants []*Status `json:"descendants"`
}

Context hold information for mastodon context.

type DeleteEvent ¶

type DeleteEvent struct{ ID ID }

DeleteEvent is struct for passing deletion event to app.

type Emoji ¶ added in v0.0.3

type Emoji struct {
	ShortCode       string `json:"shortcode"`
	StaticURL       string `json:"static_url"`
	URL             string `json:"url"`
	VisibleInPicker bool   `json:"visible_in_picker"`
}

Emoji hold information for CustomEmoji.

type ErrorEvent ¶

type ErrorEvent struct {
	// contains filtered or unexported fields
}

ErrorEvent is struct for passing errors to app.

func (*ErrorEvent) Error ¶

func (e *ErrorEvent) Error() string

type Event ¶

type Event interface {
	// contains filtered or unexported methods
}

Event is interface passing events to app.

type Field ¶ added in v0.0.3

type Field struct {
	Name       string    `json:"name"`
	Value      string    `json:"value"`
	VerifiedAt time.Time `json:"verified_at"`
}

Field is a Mastodon account profile field.

type History ¶ added in v0.0.3

type History struct {
	Day      string `json:"day"`
	Uses     int64  `json:"uses"`
	Accounts int64  `json:"accounts"`
}

History hold information for history.

type ID ¶ added in v0.0.2

type ID string

func (*ID) UnmarshalJSON ¶ added in v0.0.2

func (id *ID) UnmarshalJSON(data []byte) error

type Instance ¶

type Instance struct {
	URI            string            `json:"uri"`
	Title          string            `json:"title"`
	Description    string            `json:"description"`
	EMail          string            `json:"email"`
	Version        string            `json:"version,omitempty"`
	Thumbnail      string            `json:"thumbnail,omitempty"`
	URLs           map[string]string `json:"urls,omitempty"`
	Stats          *InstanceStats    `json:"stats,omitempty"`
	Languages      []string          `json:"languages"`
	ContactAccount *Account          `json:"account"`
}

Instance hold information for mastodon instance.

type InstanceStats ¶ added in v0.0.3

type InstanceStats struct {
	UserCount   int64 `json:"user_count"`
	StatusCount int64 `json:"status_count"`
	DomainCount int64 `json:"domain_count"`
}

InstanceStats hold information for mastodon instance stats.

type List ¶ added in v1.0.0

type List struct {
	ID    ID     `json:"id"`
	Title string `json:"title"`
}

List is metadata for a list of users.

type Mention ¶

type Mention struct {
	URL      string `json:"url"`
	Username string `json:"username"`
	Acct     string `json:"acct"`
	ID       ID     `json:"id"`
}

Mention hold information for mention.

type Notification ¶

type Notification struct {
	ID        ID        `json:"id"`
	Type      string    `json:"type"`
	CreatedAt time.Time `json:"created_at"`
	Account   Account   `json:"account"`
	Status    *Status   `json:"status"`
}

Notification hold information for mastodon notification.

type NotificationEvent ¶

type NotificationEvent struct {
	Notification *Notification `json:"notification"`
}

NotificationEvent is struct for passing notification event to app.

type Pagination ¶

type Pagination struct {
	MaxID   ID
	SinceID ID
	MinID   ID
	Limit   int64
}

Pagination is a struct for specifying the get range.

Example ¶
c := mastodon.NewClient(&mastodon.Config{
	Server:       "https://mstdn.jp",
	ClientID:     "client-id",
	ClientSecret: "client-secret",
})
var followers []*mastodon.Account
var pg mastodon.Pagination
for {
	fs, err := c.GetAccountFollowers(context.Background(), "1", &pg)
	if err != nil {
		log.Fatal(err)
	}
	followers = append(followers, fs...)
	if pg.MaxID == "" {
		break
	}
	time.Sleep(10 * time.Second)
}
for _, f := range followers {
	fmt.Println(f.Acct)
}
Output:

type Profile ¶

type Profile struct {
	// If it is nil it will not be updated.
	// If it is empty, update it with empty.
	DisplayName *string
	Note        *string
	Locked      *bool
	Fields      *[]Field
	Source      *AccountSource

	// Set the base64 encoded character string of the image.
	Avatar string
	Header string
}

Profile is a struct for updating profiles.

type PushAlerts ¶ added in v1.1.0

type PushAlerts struct {
	Follow    *Sbool `json:"follow"`
	Favourite *Sbool `json:"favourite"`
	Reblog    *Sbool `json:"reblog"`
	Mention   *Sbool `json:"mention"`
}

type PushSubscription ¶ added in v1.1.0

type PushSubscription struct {
	ID        ID          `json:"id"`
	Endpoint  string      `json:"endpoint"`
	ServerKey string      `json:"server_key"`
	Alerts    *PushAlerts `json:"alerts"`
}

type Relationship ¶

type Relationship struct {
	ID                  ID   `json:"id"`
	Following           bool `json:"following"`
	FollowedBy          bool `json:"followed_by"`
	Blocking            bool `json:"blocking"`
	Muting              bool `json:"muting"`
	MutingNotifications bool `json:"muting_notifications"`
	Requested           bool `json:"requested"`
	DomainBlocking      bool `json:"domain_blocking"`
	ShowingReblogs      bool `json:"showing_reblogs"`
	Endorsed            bool `json:"endorsed"`
}

Relationship hold information for relation-ship to the account.

type Report ¶

type Report struct {
	ID          int64 `json:"id"`
	ActionTaken bool  `json:"action_taken"`
}

Report hold information for mastodon report.

type Results ¶

type Results struct {
	Accounts []*Account `json:"accounts"`
	Statuses []*Status  `json:"statuses"`
	Hashtags []string   `json:"hashtags"`
}

Results hold information for search result.

type Sbool ¶ added in v1.1.0

type Sbool bool

func (*Sbool) UnmarshalJSON ¶ added in v1.1.0

func (s *Sbool) UnmarshalJSON(data []byte) error

type Scrobble ¶ added in v1.2.0

type Scrobble struct {
	ID        ID        `json:"id"`
	Title     string    `json:"title"`
	Album     string    `json:"album"`
	Artist    string    `json:"artist"`
	Length    int64     `json:"length"`
	CreatedAt time.Time `json:"created_at"`
}

Scrobble is a struct to hold data of a Listen activity.

type Status ¶

type Status struct {
	ID                 ID           `json:"id"`
	URI                string       `json:"uri"`
	URL                string       `json:"url"`
	Account            Account      `json:"account"`
	InReplyToID        interface{}  `json:"in_reply_to_id"`
	InReplyToAccountID interface{}  `json:"in_reply_to_account_id"`
	Reblog             *Status      `json:"reblog"`
	Content            string       `json:"content"`
	CreatedAt          time.Time    `json:"created_at"`
	Emojis             []Emoji      `json:"emojis"`
	RepliesCount       int64        `json:"replies_count"`
	ReblogsCount       int64        `json:"reblogs_count"`
	FavouritesCount    int64        `json:"favourites_count"`
	Reblogged          interface{}  `json:"reblogged"`
	Favourited         interface{}  `json:"favourited"`
	Muted              interface{}  `json:"muted"`
	Sensitive          bool         `json:"sensitive"`
	SpoilerText        string       `json:"spoiler_text"`
	Visibility         string       `json:"visibility"`
	MediaAttachments   []Attachment `json:"media_attachments"`
	Mentions           []Mention    `json:"mentions"`
	Tags               []Tag        `json:"tags"`
	Card               *Card        `json:"card"`
	Application        Application  `json:"application"`
	Language           string       `json:"language"`
	Pinned             interface{}  `json:"pinned"`
}

Status is struct to hold status.

type Stream ¶

type Stream struct {
	Event   string      `json:"event"`
	Payload interface{} `json:"payload"`
}

Stream is a struct of data that flows in streaming.

type Tag ¶

type Tag struct {
	Name    string    `json:"name"`
	URL     string    `json:"url"`
	History []History `json:"history"`
}

Tag hold information for tag.

type Toot ¶

type Toot struct {
	Status      string `json:"status"`
	InReplyToID ID     `json:"in_reply_to_id"`
	MediaIDs    []ID   `json:"media_ids"`
	Sensitive   bool   `json:"sensitive"`
	SpoilerText string `json:"spoiler_text"`
	Visibility  string `json:"visibility"`
}

Toot is struct to post status.

type Unixtime ¶ added in v0.0.3

type Unixtime time.Time

func (*Unixtime) UnmarshalJSON ¶ added in v0.0.3

func (t *Unixtime) UnmarshalJSON(data []byte) error

type UpdateEvent ¶

type UpdateEvent struct {
	Status *Status `json:"status"`
}

UpdateEvent is struct for passing status event to app.

type WSClient ¶

type WSClient struct {
	websocket.Dialer
	// contains filtered or unexported fields
}

WSClient is a WebSocket client.

func (*WSClient) StreamingWSHashtag ¶

func (c *WSClient) StreamingWSHashtag(ctx context.Context, tag string, isLocal bool) (chan Event, error)

StreamingWSHashtag return channel to read events on tagged timeline using WebSocket.

func (*WSClient) StreamingWSList ¶ added in v1.0.0

func (c *WSClient) StreamingWSList(ctx context.Context, id ID) (chan Event, error)

StreamingWSList return channel to read events on a list using WebSocket.

func (*WSClient) StreamingWSPublic ¶

func (c *WSClient) StreamingWSPublic(ctx context.Context, isLocal bool) (chan Event, error)

StreamingWSPublic return channel to read events on public using WebSocket.

func (*WSClient) StreamingWSUser ¶

func (c *WSClient) StreamingWSUser(ctx context.Context) (chan Event, error)

StreamingWSUser return channel to read events on home using WebSocket.

type WeeklyActivity ¶ added in v0.0.3

type WeeklyActivity struct {
	Week          Unixtime `json:"week"`
	Statuses      int64    `json:"statuses,string"`
	Logins        int64    `json:"logins,string"`
	Registrations int64    `json:"registrations,string"`
}

WeeklyActivity hold information for mastodon weekly activity.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳