You are here

public function EmitController::emit in Radioactivity 8.2

Same name and namespace in other branches
  1. 8.3 src/Controller/EmitController.php \Drupal\radioactivity\Controller\EmitController::emit()
  2. 4.0.x src/Controller/EmitController.php \Drupal\radioactivity\Controller\EmitController::emit()

Callback for /radioactivity/emit

Parameters

Request $request:

Return value

Response

1 string reference to 'EmitController::emit'
radioactivity.routing.yml in ./radioactivity.routing.yml
radioactivity.routing.yml

File

src/Controller/EmitController.php, line 18

Class

EmitController

Namespace

Drupal\radioactivity\Controller

Code

public function emit(Request $request) {
  $post_data = $request
    ->getContent();
  if ($post_data) {
    $count = 0;
    $incidents = Json::decode($post_data);
    foreach ($incidents as $data) {
      $incident = \Drupal\radioactivity\Incident::createFromPostData($data);
      if ($incident
        ->isValid()) {
        $incidents = \Drupal::state()
          ->get('radioactivity_incidents', []);
        $incidents[] = $incident;
        $queue_size = count($incidents);
        \Drupal::state()
          ->set('radioactivity_incidents', $incidents);
        $count++;
      }
      else {
        return new JsonResponse(array(
          'status' => 'error',
          'message' => 'invalid incident (' . $count . ').',
        ));
      }
    }
    return new JsonResponse(array(
      'status' => 'ok',
      'message' => $count . ' emits added (queue size: ' . $queue_size . ')',
    ));
  }
  return new JsonResponse(array(
    'status' => 'error',
    'message' => 'Empty request',
  ));
}