--- a/notifications.go Sat Apr 15 00:39:43 2017 +0200
+++ b/notifications.go Sat Apr 15 10:26:36 2017 +0200
@@ -1,8 +1,6 @@
package gondole
import (
- "encoding/json"
- "fmt"
"strconv"
"github.com/sendgrid/rest"
@@ -11,23 +9,9 @@
// GetNotifications returns the list of the user's notifications
func (g *Client) GetNotifications() ([]Notification, error) {
var notifications []Notification
-
- req := g.prepareRequest("notifications")
- r, err := rest.API(req)
- if err != nil {
- return notifications, fmt.Errorf("notifications API query: %s", err.Error())
+ if err := g.apiCall("notifications", rest.Get, nil, ¬ifications); err != nil {
+ return nil, err
}
-
- err = json.Unmarshal([]byte(r.Body), ¬ifications)
- if err != nil {
- var errorRes Error
- err2 := json.Unmarshal([]byte(r.Body), &errorRes)
- if err2 == nil {
- return notifications, fmt.Errorf("%s", errorRes.Text)
- }
- return notifications, fmt.Errorf("notifications API: %s", err.Error())
- }
-
return notifications, nil
}
@@ -35,40 +19,23 @@
// The returned notification can be nil if there is an error or if the
// requested notification does not exist.
func (g *Client) GetNotification(id int) (*Notification, error) {
- var notification Notification
-
- req := g.prepareRequest("notifications/" + strconv.Itoa(id))
- r, err := rest.API(req)
- if err != nil {
- return ¬ification, fmt.Errorf("notification API query: %s", err.Error())
+ if id < 1 {
+ return nil, ErrInvalidID
}
- err = json.Unmarshal([]byte(r.Body), ¬ification)
- if err != nil {
- var errorRes Error
- err2 := json.Unmarshal([]byte(r.Body), &errorRes)
- if err2 == nil {
- return ¬ification, fmt.Errorf("%s", errorRes.Text)
- }
- return ¬ification, fmt.Errorf("notification API: %s", err.Error())
+ var endPoint = "notifications/" + strconv.Itoa(id)
+ var notification Notification
+ if err := g.apiCall(endPoint, rest.Get, nil, ¬ification); err != nil {
+ return nil, err
}
-
if notification.ID == 0 {
return nil, ErrEntityNotFound
}
-
return ¬ification, nil
}
// ClearNotifications deletes all notifications from the Mastodon server for
// the authenticated user
func (g *Client) ClearNotifications() error {
- req := g.prepareRequest("notifications/clear")
- req.Method = rest.Post
- _, err := rest.API(req)
- if err != nil {
- return fmt.Errorf("notifications/clear API query: %s", err.Error())
- }
-
- return nil // TODO: check returned object (should be empty)
+ return g.apiCall("notifications/clear", rest.Post, nil, &Notification{})
}