You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
package twitter
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/dghubble/go-twitter/twitter"
|
|
oauth "github.com/dustinpianalto/overpass/internal/oauth2"
|
|
)
|
|
|
|
func Connect() *twitter.Client {
|
|
httpClient := oauth.GetClient()
|
|
return twitter.NewClient(httpClient)
|
|
}
|
|
|
|
func StartUserScanner(client *twitter.Client, userID string) (chan *twitter.Tweet, *twitter.Stream) {
|
|
demux := twitter.NewSwitchDemux()
|
|
tweetChan := make(chan *twitter.Tweet, 10)
|
|
demux.Tweet = func(tweet *twitter.Tweet) {
|
|
tweetChan <- tweet
|
|
}
|
|
demux.StatusDeletion = func(deletion *twitter.StatusDeletion) {
|
|
log.Printf("%#v\n", deletion)
|
|
}
|
|
demux.StreamLimit = func(limit *twitter.StreamLimit) {
|
|
log.Printf("%#v\n", limit)
|
|
}
|
|
demux.StreamDisconnect = func(disconnect *twitter.StreamDisconnect) {
|
|
log.Printf("%#v\n", disconnect)
|
|
}
|
|
demux.Event = func(event *twitter.Event) {
|
|
log.Printf("%#v\n", event)
|
|
}
|
|
log.Printf("Starting Stream for %s\n", userID)
|
|
filterParams := &twitter.StreamFilterParams{
|
|
Follow: []string{userID},
|
|
StallWarnings: twitter.Bool(true),
|
|
}
|
|
stream, err := client.Streams.Filter(filterParams)
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
go demux.HandleChan(stream.Messages)
|
|
return tweetChan, stream
|
|
}
|