示例#1
0
 /**
  * Processes an incoming Request object, routes it to the adapter, and returns a response.
  *
  * @todo    The adapter needs to validate that the core Request object is valid. Ensure JSON, etc.
  * @param   Request     $request
  * @return  Response    $response
  */
 public function handle(Request $request)
 {
     try {
         $restRequest = new RestRequest($this->config, $request->getMethod(), $request->getUri(), $request->getContent());
         $restResponse = $this->adapter->processRequest($restRequest);
     } catch (\Exception $e) {
         $restResponse = $this->adapter->handleException($e);
     }
     return new Response($restResponse->getContent(), $restResponse->getStatus(), $restResponse->getHeaders());
 }
示例#2
0
 /**
  * Serializes the "interior" of a model.
  * This is the serialization that takes place outside of a "data" container.
  * Can be used for root model and relationship model serialization.
  *
  * @param   Model               $model
  * @param   AdapterInterface    $adapter
  * @return  array
  */
 protected function serializeModel(Model $model, AdapterInterface $adapter)
 {
     $metadata = $model->getMetadata();
     $serialized = ['type' => $model->getType(), 'id' => $model->getId()];
     if ($this->depth > 0) {
         // $this->includeResource($resource);
         return $serialized;
     }
     foreach ($metadata->getAttributes() as $key => $attrMeta) {
         $value = $model->get($key);
         $serialized['attributes'][$key] = $this->serializeAttribute($value, $attrMeta);
     }
     $serialized['links'] = ['self' => $adapter->buildUrl($metadata, $model->getId())];
     $model->enableCollectionAutoInit(false);
     $this->increaseDepth();
     foreach ($metadata->getRelationships() as $key => $relMeta) {
         $relationship = $model->get($key);
         $serialized['relationships'][$key] = $this->serializeRelationship($model, $relationship, $relMeta, $adapter);
     }
     $this->decreaseDepth();
     $model->enableCollectionAutoInit(true);
     return $serialized;
 }
 /**
  * Extracts the EntityMetadata from the raw array payload.
  *
  * @param   array               $rawPayload
  * @param   AdapterInterface    $adapter
  * @return  EntityMetadata
  */
 protected function extractMetadata(array $rawPayload, AdapterInterface $adapter)
 {
     return $adapter->getEntityMetadata($this->extractType($rawPayload));
 }