instance.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package mastodon
  2. import (
  3. "context"
  4. "net/http"
  5. )
  6. // Instance hold information for mastodon instance.
  7. type Instance struct {
  8. URI string `json:"uri"`
  9. Title string `json:"title"`
  10. Description string `json:"description"`
  11. EMail string `json:"email"`
  12. Version string `json:"version,omitempty"`
  13. Thumbnail string `json:"thumbnail,omitempty"`
  14. URLs map[string]string `json:"urls,omitempty"`
  15. Stats *InstanceStats `json:"stats,omitempty"`
  16. Languages []string `json:"languages"`
  17. ContactAccount *Account `json:"account"`
  18. }
  19. // InstanceStats hold information for mastodon instance stats.
  20. type InstanceStats struct {
  21. UserCount int64 `json:"user_count"`
  22. StatusCount int64 `json:"status_count"`
  23. DomainCount int64 `json:"domain_count"`
  24. }
  25. // GetInstance return Instance.
  26. func (c *Client) GetInstance(ctx context.Context) (*Instance, error) {
  27. var instance Instance
  28. err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance", nil, &instance, nil)
  29. if err != nil {
  30. return nil, err
  31. }
  32. return &instance, nil
  33. }
  34. // WeeklyActivity hold information for mastodon weekly activity.
  35. type WeeklyActivity struct {
  36. Week Unixtime `json:"week"`
  37. Statuses int64 `json:"statuses,string"`
  38. Logins int64 `json:"logins,string"`
  39. Registrations int64 `json:"registrations,string"`
  40. }
  41. // GetInstanceActivity return instance activity.
  42. func (c *Client) GetInstanceActivity(ctx context.Context) ([]*WeeklyActivity, error) {
  43. var activity []*WeeklyActivity
  44. err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance/activity", nil, &activity, nil)
  45. if err != nil {
  46. return nil, err
  47. }
  48. return activity, nil
  49. }
  50. // GetInstancePeers return instance peers.
  51. func (c *Client) GetInstancePeers(ctx context.Context) ([]string, error) {
  52. var peers []string
  53. err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance/peers", nil, &peers, nil)
  54. if err != nil {
  55. return nil, err
  56. }
  57. return peers, nil
  58. }
  59. // GetInstanceEmojis return instance emojis.
  60. func (c *Client) GetInstanceEmojis(ctx context.Context) ([]*Emoji, error) {
  61. var emojis []*Emoji
  62. err := c.doAPI(ctx, http.MethodGet, "/api/v1/custom_emojis", nil, &emojis, nil)
  63. if err != nil {
  64. return nil, err
  65. }
  66. return emojis, nil
  67. }