aboutsummaryrefslogtreecommitdiff
path: root/mastodon/instance.go
diff options
context:
space:
mode:
authorr <r@freesoftwareextremist.com>2019-12-13 18:08:26 +0000
committerr <r@freesoftwareextremist.com>2019-12-13 18:26:24 +0000
commit5e4da01c3ae3ae2e870faba9085d9d9213c01c29 (patch)
tree39d6f1e76b901549f194ddbac3c6cb82e0abd019 /mastodon/instance.go
downloadbloat-5e4da01c3ae3ae2e870faba9085d9d9213c01c29.tar.gz
bloat-5e4da01c3ae3ae2e870faba9085d9d9213c01c29.zip
Initial commit
Diffstat (limited to 'mastodon/instance.go')
-rw-r--r--mastodon/instance.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/mastodon/instance.go b/mastodon/instance.go
new file mode 100644
index 0000000..3217450
--- /dev/null
+++ b/mastodon/instance.go
@@ -0,0 +1,65 @@
+package mastodon
+
+import (
+ "context"
+ "net/http"
+)
+
+// Instance hold information for mastodon 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"`
+}
+
+// InstanceStats hold information for mastodon instance stats.
+type InstanceStats struct {
+ UserCount int64 `json:"user_count"`
+ StatusCount int64 `json:"status_count"`
+ DomainCount int64 `json:"domain_count"`
+}
+
+// GetInstance return Instance.
+func (c *Client) GetInstance(ctx context.Context) (*Instance, error) {
+ var instance Instance
+ err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance", nil, &instance, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &instance, nil
+}
+
+// WeeklyActivity hold information for mastodon weekly activity.
+type WeeklyActivity struct {
+ Week Unixtime `json:"week"`
+ Statuses int64 `json:"statuses,string"`
+ Logins int64 `json:"logins,string"`
+ Registrations int64 `json:"registrations,string"`
+}
+
+// GetInstanceActivity return instance activity.
+func (c *Client) GetInstanceActivity(ctx context.Context) ([]*WeeklyActivity, error) {
+ var activity []*WeeklyActivity
+ err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance/activity", nil, &activity, nil)
+ if err != nil {
+ return nil, err
+ }
+ return activity, nil
+}
+
+// GetInstancePeers return instance peers.
+func (c *Client) GetInstancePeers(ctx context.Context) ([]string, error) {
+ var peers []string
+ err := c.doAPI(ctx, http.MethodGet, "/api/v1/instance/peers", nil, &peers, nil)
+ if err != nil {
+ return nil, err
+ }
+ return peers, nil
+}