public function testShouldHaveTheFirstErrorMessage()
 {
     $response = Response::create(HttpMethod::GET(), '1.2', true, HttpErrorCode::code412(), [Error::create('first error', 'Error'), Error::create('second error', 'Error')]);
     $this->assertSame('first error', $response->getErrorMessage()->getValue());
     $response = Response::create(HttpMethod::GET(), '1.2', true, HttpErrorCode::code412());
     $this->assertSame('', $response->getErrorMessage()->getValue());
 }
 /**
  * Registers services on the given app.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  */
 public function register(Application $app)
 {
     $app['rest_normalizer.version'] = '0.1.0';
     $app['rest_normalizer.builder'] = $app->protect(function ($object = null) use($app) {
         $version = $app['rest_normalizer.version'];
         $request = $app['request'];
         /** @var $request \Symfony\Component\HttpFoundation\Request */
         $builder = ResponseBuilder::create($version, HttpMethod::valueOf($request->getMethod()), $object);
         foreach ($request->request->all() as $key => $value) {
             $parameter = Parameter::create($key, $value);
             $builder->addParameter($parameter);
         }
         return $builder;
     });
 }
 /**
  * Registers services on the given app.
  *
  * This method should only be used to configure services and parameters.
  * It should not get services.
  */
 public function register(Application $app)
 {
     if ($app->offsetGet('api.version') === false) {
         throw new \Exception('Missing api version');
     }
     $app['rest_normalizer.builder'] = $app->protect(function ($object = null) use($app) {
         $request = $app['request'];
         // @var $request Request
         $builder = ResponseBuilder::create($app['api.version'], HttpMethod::valueOf($request->getMethod()), $object);
         foreach ($request->request->all() as $key => $value) {
             $parameter = Parameter::create($key, $value);
             $builder->addParameter($parameter);
         }
         return $builder;
     });
 }
 /**
  * @param \stdClass $stdObj
  * @return HttpMethod
  * @throws ResponseParserException
  */
 private function getHttpMethod(\stdClass $stdObj)
 {
     $method = HttpMethod::valueOf($stdObj->method);
     if (is_null($method)) {
         throw new ResponseParserException('Invalid HttpMethod: ' . $stdObj->method);
     }
     return $method;
 }
 private function getBuilder()
 {
     return ResponseBuilder::create('1.2', HttpMethod::GET());
 }
 public function testShouldAddParameterCollection()
 {
     $builder = SuccessResponseBuilder::create(new SuccessDataBuilder(), '1.2', HttpMethod::GET());
     $builder->addParameters(new ParameterCollection([Parameter::create('firstName', 'john'), Parameter::create('name', 'doe')]));
     $this->assertSame('{"apiVersion":"1.2","method":"GET","params":{"firstName":"john","name":"doe"},"data":{"items":[],"totalItems":0}}', json_encode($builder->build()));
 }
 public function testShouldAddErrorCollection()
 {
     $builder = ErrorResponseBuilder::create(new ErrorDataBuilder(), '1.2', HttpMethod::GET(), HttpErrorCode::code500());
     $builder->addErrors(new ErrorCollection([Error::create('e1', 'ErrorType'), Error::create('e2', 'ErrorType')]));
     $this->assertSame('{"apiVersion":"1.2","method":"GET","params":{},"code":500,"message":"e1","errors":[{"message":"e1","reason":"ErrorType","location":""},{"message":"e2","reason":"ErrorType","location":""}]}', json_encode($builder->build()));
 }
 public function testShouldHaveDELETE()
 {
     $this->assertSame(HttpMethod::DELETE, HttpMethod::delete()->getValue());
 }