diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index a3af7dd..1c39ea6 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Twitter; +use App\Tweet; class HomeController extends Controller { @@ -23,6 +25,10 @@ class HomeController extends Controller */ public function index() { - return view('home'); + $queue = Tweet::queued(); + + return view('home', [ + 'queue' => $queue + ]); } } diff --git a/app/Http/Controllers/TwitterController.php b/app/Http/Controllers/TwitterController.php index c8a7423..25d81e3 100644 --- a/app/Http/Controllers/TwitterController.php +++ b/app/Http/Controllers/TwitterController.php @@ -4,14 +4,72 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Routing\Controller as BaseController; use Log; +use App\Player, App\Team, App\Tweet, App\TransitCenter, App\TransitLine, App\Document; class TwitterController extends BaseController { public function input(Request $request) { - Log::info(json_encode($request->all())); - return 'got it'; + $data = $request->all(); + + // Find the user who tweeted this + $twitter_user_id = $data['user']['id_str']; + + $player = Player::where('twitter_user_id', $twitter_user_id)->first(); + + if(isset($data['extended_tweet']['full_text'])) + $text = $data['extended_tweet']['full_text']; + else + $text = $data['text']; + + // Unshorten URLs + if(isset($data['entities']['urls'])) { + foreach($data['entities']['urls'] as $url) { + $text = str_replace($url['url'], $url['expanded_url'], $text); + } + } + + // Remove media URLs from tweet text + $photos = []; + if(isset($data['extended_entities']['media'])) { + foreach($data['extended_entities']['media'] as $media) { + $text = str_replace($media['url'], '', $text); + $photos[] = $media['media_url_https']; + } + $text = trim($text); + } + + // Find the mission hashtag + if(strpos($text, '#transitspy') !== false) + $mission = 1; + elseif(strpos($text, '#intercept') !== false) + $mission = 2; + elseif(strpos($text, '#airlair') !== false) + $mission = 3; + elseif(strpos($text, '#transittea') !== false) + $mission = 4; + elseif(strpos($text, '#sing') !== false) + $mission = 5; + elseif(strpos($text, '#passport') !== false) + $mission = 6; + elseif(strpos($text, '#document') !== false) + $mission = 7; + else + $mission = 0; + + $tweet = new Tweet; + $tweet->player_id = $player ? $player->id : 0; + $tweet->team_id = $player ? $player->team->id : 0; + $tweet->text = $text; + $tweet->photo = json_encode($photos); + $tweet->mission = $mission; + $tweet->tweet_date = date('Y-m-d H:i:s', strtotime($data['created_at'])); + $tweet->save(); + + // TODO: Broadcast this to the web interface + + return $data['id_str']; } diff --git a/app/Tweet.php b/app/Tweet.php new file mode 100644 index 0000000..d74072f --- /dev/null +++ b/app/Tweet.php @@ -0,0 +1,19 @@ +where('processed', 0)->where('mission', '>', 0)->get(); + } +} diff --git a/database/migrations/2017_07_02_192057_tweet_date.php b/database/migrations/2017_07_02_192057_tweet_date.php new file mode 100644 index 0000000..adad65e --- /dev/null +++ b/database/migrations/2017_07_02_192057_tweet_date.php @@ -0,0 +1,32 @@ +datetime('tweet_date'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('tweets', function (Blueprint $table) { + $table->dropColumn('tweet_date'); + }); + } +} diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index de73a98..d6de122 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -9,6 +9,9 @@