diff --git a/src/Service/TweetFetcher.php b/src/Service/TweetFetcher.php new file mode 100644 index 0000000..57b0472 --- /dev/null +++ b/src/Service/TweetFetcher.php @@ -0,0 +1,87 @@ +setToken( + getenv('TWITTER_ACCESS_TOKEN'), + getenv('TWITTER_ACCESS_SECRET') + ); + + $this->codebird = $codebird; + } + + public function getTweets(): Collection + { + $response = collect($this->codebird->search_tweets([ + 'q' => collect($this->params()->all())->implode(' AND '), + // 'since_id' => $this->lastTweetId, + ])); + + if ($response->get('httpstatus') != 200) { + dump($response); + } + + return collect($response->get('statuses')) + ->map(function (\stdClass $tweet) { + return (object) [ + 'id' => $tweet->id, + 'created' => strtotime($tweet->created_at), + 'text' => $tweet->text, + 'author' => $tweet->user->screen_name, + ]; + })->reverse(); + } + + private function params(): Collection + { + return tap(collect(), function (Collection $params) { + // Add account names. + $params->push( + collect($this->accounts)->map(function (string $account) { + return "from:{$account}"; + })->implode(' OR ') + ); + + // Add hashtags. + $params->push( + collect($this->hashtags)->map(function (string $hashtag) { + return "#{$hashtag}"; + })->implode(' OR ') + ); + }); + } +}