Example #1
0
 public function testMetaDisappearsIfNoPropertiesOnMinimization()
 {
     $obj = new Document();
     $obj->addMetaProperty('foo', 'bar');
     $obj->minimize();
     $this->assertObjectNotHasAttribute('@meta', $obj);
 }
Example #2
0
 public function testCanSortChildObjectsInArray()
 {
     $obj = new Document(['city' => [new Child(['alarm' => 'circle', 'robot' => 'red']), new Child(['alarm' => 'square', 'robot' => 'green']), new Child(['alarm' => 'triangle', 'robot' => 'blue'])]]);
     $obj->sort(['robot', 'alarm', '{data}']);
     foreach ($obj->city as $index => $arrayObject) {
         $this->assertEquals(['robot', 'alarm'], array_keys(get_object_vars($arrayObject)), "Index {$index}");
     }
 }
 private function applyPreferHeader(Document $document, Request $request, &$headers, &$options)
 {
     $prefer = $request->headers->get('Prefer');
     $minimal = preg_match("/\\brepresentation\\s*=\\s*(minimal\\b|\"minimal\")/i", $prefer);
     if ($minimal) {
         $document->minimize();
         if ($options >= JSON_PRETTY_PRINT) {
             $options -= JSON_PRETTY_PRINT;
         }
         $headers['Preference-Applied'] = 'representation=minimal';
     } elseif ($options < JSON_PRETTY_PRINT) {
         $options += JSON_PRETTY_PRINT;
     }
 }
 protected function makeMasonResponse(Document $document, Request $request, array $routeParams = [], $status = 200, array $headers = [])
 {
     $url = static::getProfileUrl();
     $document->setMetaControl('profile', new Control($url));
     if (isset($headers['Link']) && !is_array($headers['Link'])) {
         $headers['Link'] = [$headers['Link']];
     }
     $headers['Link'][] = sprintf('<%s>; rel="profile"', $url);
     if (!isset($document->{'@controls'}->self)) {
         $document->setControl('self', static::class, $routeParams);
     }
     if (method_exists($this, 'addMasonNamespaces')) {
         $this->addMasonNamespaces($document);
     }
     return MasonResponse::create($document, $request, $status, $headers, JSON_UNESCAPED_SLASHES);
 }