favourites.go
changeset 155 0c581e0108da
parent 149 5f922977d7c7
child 156 70aadba26338
--- a/favourites.go	Sat Apr 29 10:51:45 2017 +0200
+++ b/favourites.go	Sat Apr 29 12:16:16 2017 +0200
@@ -13,9 +13,22 @@
 // GetFavourites returns the list of the user's favourites
 func (mc *Client) GetFavourites(lopt *LimitParams) ([]Status, error) {
 	var faves []Status
-	err := mc.apiCall("favourites", rest.Get, nil, lopt, &faves)
+	var links apiLinks
+	err := mc.apiCall("favourites", rest.Get, nil, lopt, &links, &faves)
 	if err != nil {
 		return nil, err
 	}
+	if lopt != nil { // Fetch more pages to reach our limit
+		var faveSlice []Status
+		for lopt.Limit > len(faves) && links.next != nil {
+			newlopt := links.next
+			links = apiLinks{}
+			if err := mc.apiCall("favourites", rest.Get, nil, newlopt, &links, &faveSlice); err != nil {
+				return nil, err
+			}
+			faves = append(faves, faveSlice...)
+			faveSlice = faveSlice[:0] // Clear struct
+		}
+	}
 	return faves, nil
 }