diff options
Diffstat (limited to 'cmd/gen-imworkingon/src_mastodon.go')
-rw-r--r-- | cmd/gen-imworkingon/src_mastodon.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cmd/gen-imworkingon/src_mastodon.go b/cmd/gen-imworkingon/src_mastodon.go new file mode 100644 index 0000000..a3b9617 --- /dev/null +++ b/cmd/gen-imworkingon/src_mastodon.go @@ -0,0 +1,41 @@ +package main + +import ( + "html/template" + "net/url" + "time" + + "git.lukeshu.com/www/lib/httpcache" +) + +type MastodonStatus struct { + ID string `json:"id"` + CreatedAt time.Time `json:"created_at"` + URL string `json:"url"` + Content template.HTML `json:"content"` +} + +// Returns statuses sorted from newest to oldest. +func ReadStandups(server, username string) ([]*MastodonStatus, error) { + var account struct { + ID string `json:"id"` + } + if err := httpcache.GetJSON(server+"/api/v1/accounts/lookup?acct="+username, nil, &account); err != nil { + return nil, err + } + + var statuses []*MastodonStatus + if err := httpcache.GetPaginatedJSON(server+"/api/v1/accounts/"+account.ID+"/statuses", nil, &statuses, func(_ int) url.Values { + params := make(url.Values) + params.Set("tagged", "DailyStandUp") + params.Set("exclude_reblogs", "true") + if len(statuses) > 0 { + params.Set("max_id", statuses[len(statuses)-1].ID) + } + return params + }); err != nil { + return nil, err + } + + return statuses, nil +} |