-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathegose.go
96 lines (82 loc) · 2.51 KB
/
egose.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package main
import (
"strconv"
"github.com/dghubble/go-twitter/twitter"
"github.com/dghubble/oauth1"
)
// Egose manage twitter related processing
type Egose struct {
client *twitter.Client
}
// NewEgose generate new Egose
func NewEgose(cfg *Config) *Egose {
var egose Egose
egose.init(cfg)
return &egose
}
func (e *Egose) init(cfg *Config) {
e.client = buildTwitterClient(cfg)
}
func buildTwitterClient(cfg *Config) *twitter.Client {
oauthConfig := oauth1.NewConfig(cfg.TwitterConsumerKey, cfg.TwitterConsumerSecret)
token := oauth1.NewToken(cfg.TwitterAccessToken, cfg.TwitterAccessSecret)
httpClient := oauthConfig.Client(oauth1.NoContext, token)
return twitter.NewClient(httpClient)
}
// GetTimelineTweets get timeline tweet
func (e *Egose) GetTimelineTweets(count int) ([]twitter.Tweet, error) {
tweets, _, err := e.client.Timelines.HomeTimeline(&twitter.HomeTimelineParams{
Count: count,
})
return tweets, err
}
func (e *Egose) GetDebugTweets(count int) ([]twitter.Tweet, error) {
var tweets []twitter.Tweet
for i := 0; i < count; i++ {
u := twitter.User{Name: strconv.Itoa(i)}
tweet := twitter.Tweet{Text: "text" + strconv.Itoa(i), User: &u}
tweets = append(tweets, tweet)
}
return tweets, nil
}
// GetUserTimelineTweets get specified user timeline tweets
func (e *Egose) GetUserTimelineTweets(screenName string, count int) ([]twitter.Tweet, error) {
tweets, _, err := e.client.Timelines.UserTimeline(&twitter.UserTimelineParams{
ScreenName: screenName,
Count: count,
})
return tweets, err
}
// SearchTweets search tweets
func (e *Egose) SearchTweets(count int, query string) ([]twitter.Tweet, error) {
search, _, err := e.client.Search.Tweets(&twitter.SearchTweetParams{
Query: query,
Count: count,
})
if err != nil {
return nil, err
}
return search.Statuses, nil
}
// UpdateStatus update my curent status
func (e *Egose) UpdateStatus(status string) error {
_, _, err := e.client.Statuses.Update(status, nil)
return err
}
// GetListTweets get list Statuses
func (e *Egose) GetListTweets(listID string, count int) ([]twitter.Tweet, error) {
id, _ := strconv.ParseInt(listID, 10, 64)
tweets, _, err := e.client.Lists.Statuses(&twitter.ListsStatusesParams{
ListID: id,
Count: count,
})
return tweets, err
}
func (e *Egose) GetListMembers(listID string) (*twitter.Members, error) {
id, _ := strconv.ParseInt(listID, 10, 64)
members, _, err := e.client.Lists.Members(&twitter.ListsMembersParams{
ListID: id,
Count: 100, // TODO: allow to specify via command line
})
return members, err
}