You are here

EmitController.php in Radioactivity 8.2

File

src/Controller/EmitController.php
View source
<?php

namespace Drupal\radioactivity\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Drupal\Component\Serialization\Json;
use Drupal\radioactivity;
class EmitController extends ControllerBase {

  /**
   * Callback for /radioactivity/emit
   * @param Request $request
   * @return Response
   */
  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',
    ));
  }

  /**
   * Construct and incident from a request
   * @param type $request
   * @return Incident
   */
  public static function incidentFromRequest($request) {
    $content = $request
      ->getContent();
    if (empty($content)) {
      return NULL;
    }
    return \Drupal\radioactivity\Incident::createFromJson($content);
  }

}

Classes

Namesort descending Description
EmitController