diff --git a/compass/.env.example b/compass/.env.example index 9724626..67c64b9 100644 --- a/compass/.env.example +++ b/compass/.env.example @@ -1,3 +1,8 @@ +BASE_URL=http://compass.dev/ +DEFAULT_AUTH_ENDPOINT=https://indieauth.com/auth + +STORAGE_DIR=/var/compass/data + APP_ENV=local APP_DEBUG=true APP_KEY=SomeRandomKey!!! diff --git a/compass/app/Http/Controllers/Api.php b/compass/app/Http/Controllers/Api.php new file mode 100644 index 0000000..20702c5 --- /dev/null +++ b/compass/app/Http/Controllers/Api.php @@ -0,0 +1,41 @@ +input('token'); + if(!$token) + return response(json_encode(['error' => 'no token provided']))->header('Content-Type', 'application/json'); + + $db = DB::table('databases')->where('write_token','=',$token)->first(); + if(!$db) + return response(json_encode(['error' => 'invalid token']))->header('Content-Type', 'application/json'); + + if(!is_array($request->input('locations'))) + return response(json_encode(['error' => 'invalid input', 'error_description' => 'parameter "locations" must be an array of location data with a "timestamp" property']))->header('Content-Type', 'application/json'); + + $qz = new Quartz\DB(env('STORAGE_DIR').$db->name, 'w'); + + foreach($request->input('locations') as $loc) { + $date = DateTime::createFromFormat('U', $loc['timestamp']); + $line = $qz->add($date, $loc); + } + + return response(json_encode(['result' => 'ok']))->header('Content-Type', 'application/json'); + } + +} diff --git a/compass/app/Http/Controllers/Controller.php b/compass/app/Http/Controllers/Controller.php index 645e161..ac8c9f9 100644 --- a/compass/app/Http/Controllers/Controller.php +++ b/compass/app/Http/Controllers/Controller.php @@ -135,9 +135,9 @@ class Controller extends BaseController DB::table('database_users')->where('database_id','=',$db->id)->where('user_id','=',$user->id)->delete(); } - return json_encode([ + return response(json_encode([ 'result' => 'ok' - ]); + ]))->header('Content-Type', 'application/json'); } else if($request->input('add_user')) { // Find user if it exists already diff --git a/compass/app/Http/routes.php b/compass/app/Http/routes.php index 4aee7ac..2a5ba3c 100644 --- a/compass/app/Http/routes.php +++ b/compass/app/Http/routes.php @@ -23,6 +23,9 @@ $app->get('/settings/{name:[A-Za-z0-9]+}', 'Controller@settings'); $app->post('/settings/{name:[A-Za-z0-9]+}', 'Controller@updateSettings'); $app->post('/database/create', 'Controller@createDatabase'); +$app->get('/api/query', 'Api@query'); +$app->post('/api/input', 'Api@input'); + // Event::listen('illuminate.query', function($query){ // Log::debug($query); // }); diff --git a/compass/public/assets/map.js b/compass/public/assets/map.js index d9c7310..1c9b93a 100644 --- a/compass/public/assets/map.js +++ b/compass/public/assets/map.js @@ -51,7 +51,7 @@ jQuery(function($){ var db_name = $("#database").data("name"); var db_token = $("#database").data("token"); - $.get("/api/query?map="+db_name+"&date="+$(this).data('date')+"&tz=America/Los_Angeles&token="+db_token, function(data){ + $.get("/api/query?date="+$(this).data('date')+"&tz=America/Los_Angeles&token="+db_token, function(data){ visible_data.push(data); visible_layers.push(L.geoJson(data, { style: geojsonLineOptions diff --git a/compass/storage/gps/.gitignore b/compass/storage/gps/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/compass/storage/gps/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore