|
@ -4,14 +4,72 @@ namespace App\Http\Controllers; |
|
|
use Illuminate\Http\Request; |
|
|
use Illuminate\Http\Request; |
|
|
use Illuminate\Routing\Controller as BaseController; |
|
|
use Illuminate\Routing\Controller as BaseController; |
|
|
use Log; |
|
|
use Log; |
|
|
|
|
|
use App\Player, App\Team, App\Tweet, App\TransitCenter, App\TransitLine, App\Document; |
|
|
|
|
|
|
|
|
class TwitterController extends BaseController |
|
|
class TwitterController extends BaseController |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
public function input(Request $request) |
|
|
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']; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|