236fcbffb89e2252df895f19337de04cd92c47fe
[bloat] / mastodon / notification.go
1 package mastodon
2
3 import (
4         "context"
5         "fmt"
6         "net/http"
7         "time"
8 )
9
10 // Notification hold information for mastodon notification.
11 type Notification struct {
12         ID        string    `json:"id"`
13         Type      string    `json:"type"`
14         CreatedAt time.Time `json:"created_at"`
15         Account   Account   `json:"account"`
16         Status    *Status   `json:"status"`
17 }
18
19 // GetNotifications return notifications.
20 func (c *Client) GetNotifications(ctx context.Context, pg *Pagination) ([]*Notification, error) {
21         var notifications []*Notification
22         err := c.doAPI(ctx, http.MethodGet, "/api/v1/notifications", nil, &notifications, pg)
23         if err != nil {
24                 return nil, err
25         }
26         return notifications, nil
27 }
28
29 // GetNotification return notification.
30 func (c *Client) GetNotification(ctx context.Context, id string) (*Notification, error) {
31         var notification Notification
32         err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/notifications/%v", id), nil, &notification, nil)
33         if err != nil {
34                 return nil, err
35         }
36         return &notification, nil
37 }
38
39 // ClearNotifications clear notifications.
40 func (c *Client) ClearNotifications(ctx context.Context) error {
41         return c.doAPI(ctx, http.MethodPost, "/api/v1/notifications/clear", nil, nil, nil)
42 }