110 lines
4.5 KiB
Go
110 lines
4.5 KiB
Go
package twitter
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/dghubble/sling"
|
|
)
|
|
|
|
// TimelineService provides methods for accessing Twitter status timeline
|
|
// API endpoints.
|
|
type TimelineService struct {
|
|
sling *sling.Sling
|
|
}
|
|
|
|
// newTimelineService returns a new TimelineService.
|
|
func newTimelineService(sling *sling.Sling) *TimelineService {
|
|
return &TimelineService{
|
|
sling: sling.Path("statuses/"),
|
|
}
|
|
}
|
|
|
|
// UserTimelineParams are the parameters for TimelineService.UserTimeline.
|
|
type UserTimelineParams struct {
|
|
UserID int64 `url:"user_id,omitempty"`
|
|
ScreenName string `url:"screen_name,omitempty"`
|
|
Count int `url:"count,omitempty"`
|
|
SinceID int64 `url:"since_id,omitempty"`
|
|
MaxID int64 `url:"max_id,omitempty"`
|
|
TrimUser *bool `url:"trim_user,omitempty"`
|
|
ExcludeReplies *bool `url:"exclude_replies,omitempty"`
|
|
IncludeRetweets *bool `url:"include_rts,omitempty"`
|
|
TweetMode string `url:"tweet_mode,omitempty"`
|
|
}
|
|
|
|
// UserTimeline returns recent Tweets from the specified user.
|
|
// https://dev.twitter.com/rest/reference/get/statuses/user_timeline
|
|
func (s *TimelineService) UserTimeline(params *UserTimelineParams) ([]Tweet, *http.Response, error) {
|
|
tweets := new([]Tweet)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("user_timeline.json").QueryStruct(params).Receive(tweets, apiError)
|
|
return *tweets, resp, relevantError(err, *apiError)
|
|
}
|
|
|
|
// HomeTimelineParams are the parameters for TimelineService.HomeTimeline.
|
|
type HomeTimelineParams struct {
|
|
Count int `url:"count,omitempty"`
|
|
SinceID int64 `url:"since_id,omitempty"`
|
|
MaxID int64 `url:"max_id,omitempty"`
|
|
TrimUser *bool `url:"trim_user,omitempty"`
|
|
ExcludeReplies *bool `url:"exclude_replies,omitempty"`
|
|
ContributorDetails *bool `url:"contributor_details,omitempty"`
|
|
IncludeEntities *bool `url:"include_entities,omitempty"`
|
|
TweetMode string `url:"tweet_mode,omitempty"`
|
|
}
|
|
|
|
// HomeTimeline returns recent Tweets and retweets from the user and those
|
|
// users they follow.
|
|
// Requires a user auth context.
|
|
// https://dev.twitter.com/rest/reference/get/statuses/home_timeline
|
|
func (s *TimelineService) HomeTimeline(params *HomeTimelineParams) ([]Tweet, *http.Response, error) {
|
|
tweets := new([]Tweet)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("home_timeline.json").QueryStruct(params).Receive(tweets, apiError)
|
|
return *tweets, resp, relevantError(err, *apiError)
|
|
}
|
|
|
|
// MentionTimelineParams are the parameters for TimelineService.MentionTimeline.
|
|
type MentionTimelineParams struct {
|
|
Count int `url:"count,omitempty"`
|
|
SinceID int64 `url:"since_id,omitempty"`
|
|
MaxID int64 `url:"max_id,omitempty"`
|
|
TrimUser *bool `url:"trim_user,omitempty"`
|
|
ContributorDetails *bool `url:"contributor_details,omitempty"`
|
|
IncludeEntities *bool `url:"include_entities,omitempty"`
|
|
TweetMode string `url:"tweet_mode,omitempty"`
|
|
}
|
|
|
|
// MentionTimeline returns recent Tweet mentions of the authenticated user.
|
|
// Requires a user auth context.
|
|
// https://dev.twitter.com/rest/reference/get/statuses/mentions_timeline
|
|
func (s *TimelineService) MentionTimeline(params *MentionTimelineParams) ([]Tweet, *http.Response, error) {
|
|
tweets := new([]Tweet)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("mentions_timeline.json").QueryStruct(params).Receive(tweets, apiError)
|
|
return *tweets, resp, relevantError(err, *apiError)
|
|
}
|
|
|
|
// RetweetsOfMeTimelineParams are the parameters for
|
|
// TimelineService.RetweetsOfMeTimeline.
|
|
type RetweetsOfMeTimelineParams struct {
|
|
Count int `url:"count,omitempty"`
|
|
SinceID int64 `url:"since_id,omitempty"`
|
|
MaxID int64 `url:"max_id,omitempty"`
|
|
TrimUser *bool `url:"trim_user,omitempty"`
|
|
IncludeEntities *bool `url:"include_entities,omitempty"`
|
|
IncludeUserEntities *bool `url:"include_user_entities"`
|
|
TweetMode string `url:"tweet_mode,omitempty"`
|
|
}
|
|
|
|
// RetweetsOfMeTimeline returns the most recent Tweets by the authenticated
|
|
// user that have been retweeted by others.
|
|
// Requires a user auth context.
|
|
// https://dev.twitter.com/rest/reference/get/statuses/retweets_of_me
|
|
func (s *TimelineService) RetweetsOfMeTimeline(params *RetweetsOfMeTimelineParams) ([]Tweet, *http.Response, error) {
|
|
tweets := new([]Tweet)
|
|
apiError := new(APIError)
|
|
resp, err := s.sling.New().Get("retweets_of_me.json").QueryStruct(params).Receive(tweets, apiError)
|
|
return *tweets, resp, relevantError(err, *apiError)
|
|
}
|