diff --git a/cmd/overpass/main.go b/cmd/overpass/main.go index 3e3cad4..ee46cdd 100644 --- a/cmd/overpass/main.go +++ b/cmd/overpass/main.go @@ -1,15 +1,25 @@ package main import ( + "fmt" "log" + "os" + "os/signal" + "syscall" "github.com/dustinpianalto/overpass/internal/twitter" ) func main() { tClient := twitter.Connect() - _, err := twitter.GetTimeline(tClient, 20) - if err != nil { - log.Fatal(err) + tweetChan, stream := twitter.StartUserScanner(tClient, "3347145623") + for tweet := range tweetChan { + log.Printf("%s\n%s - %s\n%s", tweet.IDStr, tweet.User.Name, tweet.User.IDStr, tweet.FullText) } + ch := make(chan os.Signal) + signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL) + log.Println(<-ch) + + fmt.Println("Stopping Stream...") + stream.Stop() } diff --git a/internal/twitter/twitter.go b/internal/twitter/twitter.go index 9f4f73e..ede89cf 100644 --- a/internal/twitter/twitter.go +++ b/internal/twitter/twitter.go @@ -1,7 +1,7 @@ package twitter import ( - "fmt" + "log" "github.com/dghubble/go-twitter/twitter" oauth "github.com/dustinpianalto/overpass/internal/oauth2" @@ -12,14 +12,33 @@ func Connect() *twitter.Client { return twitter.NewClient(httpClient) } -func GetTimeline(client *twitter.Client, count int) ([]twitter.Tweet, error) { - tweets, resp, err := client.Timelines.HomeTimeline(&twitter.HomeTimelineParams{ - Count: count, - }) +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 { - return nil, err + log.Println(err) } - fmt.Println(resp) - fmt.Printf("%#v", tweets) - return tweets, nil + go demux.HandleChan(stream.Messages) + return tweetChan, stream } diff --git a/overpass b/overpass deleted file mode 100755 index f654144..0000000 Binary files a/overpass and /dev/null differ