74 lines
2.6 KiB
Go
74 lines
2.6 KiB
Go
package twitter
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/dghubble/sling"
|
|
)
|
|
|
|
// FollowerIDs is a cursored collection of follower ids.
|
|
type FollowerIDs struct {
|
|
IDs []int64 `json:"ids"`
|
|
NextCursor int64 `json:"next_cursor"`
|
|
NextCursorStr string `json:"next_cursor_str"`
|
|
PreviousCursor int64 `json:"previous_cursor"`
|
|
PreviousCursorStr string `json:"previous_cursor_str"`
|
|
}
|
|
|
|
// Followers is a cursored collection of followers.
|
|
type Followers struct {
|
|
Users []User `json:"users"`
|
|
NextCursor int64 `json:"next_cursor"`
|
|
NextCursorStr string `json:"next_cursor_str"`
|
|
PreviousCursor int64 `json:"previous_cursor"`
|
|
PreviousCursorStr string `json:"previous_cursor_str"`
|
|
}
|
|
|
|
// FollowerService provides methods for accessing Twitter followers endpoints.
|
|
type FollowerService struct {
|
|
sling *sling.Sling
|
|
}
|
|
|
|
// newFollowerService returns a new FollowerService.
|
|
func newFollowerService(sling *sling.Sling) *FollowerService {
|
|
return &FollowerService{
|
|
sling: sling.Path("followers/"),
|
|
}
|
|
}
|
|
|
|
// FollowerIDParams are the parameters for FollowerService.Ids
|
|
type FollowerIDParams struct {
|
|
UserID int64 `url:"user_id,omitempty"`
|
|
ScreenName string `url:"screen_name,omitempty"`
|
|
Cursor int64 `url:"cursor,omitempty"`
|
|
Count int `url:"count,omitempty"`
|
|
}
|
|
|
|
// IDs returns a cursored collection of user ids following the specified user.
|
|
// https://dev.twitter.com/rest/reference/get/followers/ids
|
|
func (s *FollowerService) IDs(params *FollowerIDParams) (*FollowerIDs, *http.Response, error) {
|
|
ids := new(FollowerIDs)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("ids.json").QueryStruct(params).Receive(ids, apiError)
|
|
return ids, resp, relevantError(err, *apiError)
|
|
}
|
|
|
|
// FollowerListParams are the parameters for FollowerService.List
|
|
type FollowerListParams struct {
|
|
UserID int64 `url:"user_id,omitempty"`
|
|
ScreenName string `url:"screen_name,omitempty"`
|
|
Cursor int64 `url:"cursor,omitempty"`
|
|
Count int `url:"count,omitempty"`
|
|
SkipStatus *bool `url:"skip_status,omitempty"`
|
|
IncludeUserEntities *bool `url:"include_user_entities,omitempty"`
|
|
}
|
|
|
|
// List returns a cursored collection of Users following the specified user.
|
|
// https://dev.twitter.com/rest/reference/get/followers/list
|
|
func (s *FollowerService) List(params *FollowerListParams) (*Followers, *http.Response, error) {
|
|
followers := new(Followers)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("list.json").QueryStruct(params).Receive(followers, apiError)
|
|
return followers, resp, relevantError(err, *apiError)
|
|
}
|