diff -r 8f478162d991 -r 05c40b36d3b2 vendor/github.com/McKael/madon/v2/notifications.go --- a/vendor/github.com/McKael/madon/v2/notifications.go Thu Sep 22 16:37:07 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* -Copyright 2017-2018 Mikael Berthe - -Licensed under the MIT license. Please see the LICENSE file is this directory. -*/ - -package madon - -import ( - "fmt" - "strconv" - - "github.com/sendgrid/rest" -) - -// GetNotifications returns the list of the user's notifications -// excludeTypes is an array of notifications to exclude ("follow", "favourite", -// "reblog", "mention"). It can be nil. -// If lopt.All is true, several requests will be made until the API server -// has nothing to return. -// If lopt.Limit is set (and not All), several queries can be made until the -// limit is reached. -func (mc *Client) GetNotifications(excludeTypes []string, lopt *LimitParams) ([]Notification, error) { - var notifications []Notification - var links apiLinks - var params apiCallParams - - if len(excludeTypes) > 0 { - params = make(apiCallParams) - for i, eType := range excludeTypes { - qID := fmt.Sprintf("[%d]exclude_types", i) - params[qID] = eType - } - } - - if err := mc.apiCall("v1/notifications", rest.Get, params, lopt, &links, ¬ifications); err != nil { - return nil, err - } - if lopt != nil { // Fetch more pages to reach our limit - var notifSlice []Notification - for (lopt.All || lopt.Limit > len(notifications)) && links.next != nil { - newlopt := links.next - links = apiLinks{} - if err := mc.apiCall("v1/notifications", rest.Get, nil, newlopt, &links, ¬ifSlice); err != nil { - return nil, err - } - notifications = append(notifications, notifSlice...) - notifSlice = notifSlice[:0] // Clear struct - } - } - return notifications, nil -} - -// GetNotification returns a notification -// The returned notification can be nil if there is an error or if the -// requested notification does not exist. -func (mc *Client) GetNotification(notificationID int64) (*Notification, error) { - if notificationID < 1 { - return nil, ErrInvalidID - } - - var endPoint = "notifications/" + strconv.FormatInt(notificationID, 10) - var notification Notification - if err := mc.apiCall("v1/"+endPoint, rest.Get, nil, nil, nil, ¬ification); err != nil { - return nil, err - } - if notification.ID == 0 { - return nil, ErrEntityNotFound - } - return ¬ification, nil -} - -// DismissNotification deletes a notification -func (mc *Client) DismissNotification(notificationID int64) error { - if notificationID < 1 { - return ErrInvalidID - } - - endPoint := "notifications/dismiss" - params := apiCallParams{"id": strconv.FormatInt(notificationID, 10)} - err := mc.apiCall("v1/"+endPoint, rest.Post, params, nil, nil, &Notification{}) - return err -} - -// ClearNotifications deletes all notifications from the Mastodon server for -// the authenticated user -func (mc *Client) ClearNotifications() error { - err := mc.apiCall("v1/notifications/clear", rest.Post, nil, nil, nil, &Notification{}) - return err -}