favourites.go
changeset 155 0c581e0108da
parent 149 5f922977d7c7
child 156 70aadba26338
equal deleted inserted replaced
154:eb83fd052cc5 155:0c581e0108da
    11 )
    11 )
    12 
    12 
    13 // GetFavourites returns the list of the user's favourites
    13 // GetFavourites returns the list of the user's favourites
    14 func (mc *Client) GetFavourites(lopt *LimitParams) ([]Status, error) {
    14 func (mc *Client) GetFavourites(lopt *LimitParams) ([]Status, error) {
    15 	var faves []Status
    15 	var faves []Status
    16 	err := mc.apiCall("favourites", rest.Get, nil, lopt, &faves)
    16 	var links apiLinks
       
    17 	err := mc.apiCall("favourites", rest.Get, nil, lopt, &links, &faves)
    17 	if err != nil {
    18 	if err != nil {
    18 		return nil, err
    19 		return nil, err
    19 	}
    20 	}
       
    21 	if lopt != nil { // Fetch more pages to reach our limit
       
    22 		var faveSlice []Status
       
    23 		for lopt.Limit > len(faves) && links.next != nil {
       
    24 			newlopt := links.next
       
    25 			links = apiLinks{}
       
    26 			if err := mc.apiCall("favourites", rest.Get, nil, newlopt, &links, &faveSlice); err != nil {
       
    27 				return nil, err
       
    28 			}
       
    29 			faves = append(faves, faveSlice...)
       
    30 			faveSlice = faveSlice[:0] // Clear struct
       
    31 		}
       
    32 	}
    20 	return faves, nil
    33 	return faves, nil
    21 }
    34 }