Esempio n. 1
0
 public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
 {
     $yaml = new Parser();
     $rules = $yaml->parse($configuration->get('rules'));
     if (is_array($rules)) {
         $validator = $this->buildValidator($rules);
         // fragments
         $fragments = $request->getUriFragments();
         foreach ($fragments as $key => $value) {
             $validator->validateProperty('/~path/' . $key, $value);
         }
         // parameters
         $parameters = $request->getParameters();
         foreach ($parameters as $key => $value) {
             $validator->validateProperty('/~query/' . $key, $value);
         }
         // body
         $validator->validate($request->getBody());
         // check whether all required fields are available
         $fields = $validator->getRequiredNames();
         if (!empty($fields)) {
             throw new StatusCode\ClientErrorException('Missing required fields: ' . implode(', ', $fields));
         }
     }
     return $this->processor->execute($configuration->get('action'), $request, $context);
 }
Esempio n. 2
0
 public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
 {
     $condition = $configuration->get('condition');
     $language = new ExpressionLanguage($this);
     $values = array('rateLimit' => new RateLimit($this->connection, $context), 'app' => $context->getApp(), 'routeId' => $context->getRouteId(), 'uriFragments' => $request->getUriFragments(), 'parameters' => $request->getParameters(), 'body' => new Accessor(new Validate(), $request->getBody()));
     if (!empty($condition) && $language->evaluate($condition, $values)) {
         return $this->processor->execute($configuration->get('true'), $request, $context);
     } else {
         return $this->processor->execute($configuration->get('false'), $request, $context);
     }
 }
Esempio n. 3
0
 public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
 {
     $connection = $this->connector->getConnection($configuration->get('connection'));
     if ($connection instanceof Pheanstalk) {
         $writer = new Writer\Json();
         $body = $writer->write($request->getBody());
         $connection->useTube($configuration->get('queue'))->put($body);
         return $this->response->build(200, [], ['success' => true, 'message' => 'Push was successful']);
     } else {
         throw new ConfigurationException('Given connection must be an Beanstalk connection');
     }
 }
Esempio n. 4
0
 public function handle(RequestInterface $request, ParametersInterface $configuration, ContextInterface $context)
 {
     $connection = $this->connector->getConnection($configuration->get('connection'));
     if ($connection instanceof AMQPStreamConnection) {
         $writer = new Writer\Json();
         $body = $writer->write($request->getBody());
         $message = new AMQPMessage($body, array('content_type' => $writer->getContentType(), 'delivery_mode' => 2));
         $channel = $connection->channel();
         $channel->basic_publish($message, '', $configuration->get('queue'));
         return $this->response->build(200, [], array('success' => true, 'message' => 'Push was successful'));
     } else {
         throw new ConfigurationException('Given connection must be an AMQP connection');
     }
 }