Пример #1
0
 public static function dequeue()
 {
     $result = self::query()->orderBy('timestamp', 'asc')->take(1)->get();
     if ($result->isEmpty()) {
         return null;
     } else {
         $result = $result[0];
         // save executed command
         $executed = new ExecutedCommand();
         $executed->command = $result->command;
         $executed->save();
         // delete queued command from queue
         $result->delete();
         return $result;
     }
 }
Пример #2
0
 public function postUploadLatestResponse(Request $request)
 {
     $input = $request->input('response');
     $ec = ExecutedCommand::latest();
     $ec->response = $input;
     if ($ec->save()) {
         return response()->json(['message' => 'reponse_uploaded_successfully']);
     } else {
         return $this->internalServerErrorJsonResponse('Unable to upload response');
     }
 }
 public function postEnqueueCommand(Request $request)
 {
     $initial = ExecutedCommand::latest();
     $input = $request->only(['command']);
     try {
         $success = CommandQueue::enqueue($input['command']);
     } catch (CommandParserException $e) {
         return $this->unableToParseJsonResponse($e->getMessage());
     }
     if (!$success) {
         return $this->internalServerErrorJsonResponse('Unable to enqueue command correctly');
     }
     // Command enqueued successfully, now wait for response
     $getResponse = function () use($initial) {
         $result = ExecutedCommand::latest();
         if ($result && $result->response && (!$initial || $result->timestamp !== $initial->timestamp)) {
             return response()->json($result);
         } else {
             return null;
         }
     };
     return $this->serveLongPolling($getResponse, response()->json(['response' => 'none']));
 }