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.

43 lines
1.3 KiB

<?php
namespace App\Jobs;
use DB, Log;
use App\Jobs\Job;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use DateTime, DateTimeZone;
class NotifyOfNewLocations extends Job implements SelfHandling, ShouldQueue
{
private $_dbid;
private $_last_location;
public function __construct($dbid, $last_location) {
$this->_dbid = $dbid;
$this->_last_location = $last_location;
}
public function handle() {
$db = DB::table('databases')->where('id','=',$this->_dbid)->first();
$urls = preg_split('/\s+/', $db->ping_urls);
foreach($urls as $url) {
if(trim($url)) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer '.$db->read_token,
'Compass-Url: '.env('BASE_URL').'api/last?token='.$db->read_token.'&geocode=1'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($this->_last_location));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$timestamp = '';
if($this->_last_location) {
$timestamp = $this->_last_location['properties']['timestamp'];
}
Log::info("Notifying ".$url." with current location: ".$timestamp);
}
}
}
}