public function testMetaDisappearsIfNoPropertiesOnMinimization() { $obj = new Document(); $obj->addMetaProperty('foo', 'bar'); $obj->minimize(); $this->assertObjectNotHasAttribute('@meta', $obj); }
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); }