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); }
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); } }
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'); } }
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'); } }