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.

41 lines
1.2 KiB

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Laravel\Lumen\Routing\Controller as BaseController;
  4. use Illuminate\Http\Request;
  5. use DB;
  6. use Quartz;
  7. use Log;
  8. use DateTime;
  9. class Api extends BaseController
  10. {
  11. public function query(Request $request) {
  12. }
  13. public function input(Request $request) {
  14. $token = $request->input('token');
  15. if(!$token)
  16. return response(json_encode(['error' => 'no token provided']))->header('Content-Type', 'application/json');
  17. $db = DB::table('databases')->where('write_token','=',$token)->first();
  18. if(!$db)
  19. return response(json_encode(['error' => 'invalid token']))->header('Content-Type', 'application/json');
  20. if(!is_array($request->input('locations')))
  21. 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');
  22. $qz = new Quartz\DB(env('STORAGE_DIR').$db->name, 'w');
  23. foreach($request->input('locations') as $loc) {
  24. $date = DateTime::createFromFormat('U', $loc['timestamp']);
  25. $line = $qz->add($date, $loc);
  26. }
  27. return response(json_encode(['result' => 'ok']))->header('Content-Type', 'application/json');
  28. }
  29. }