public function testNewInstanceWhenRemoveAttribute() { $serverRequest = $this->serverRequest->withAttribute('testK', 'testV'); $serverRequest = $serverRequest->withoutAttribute('testK'); $this->assertNotSame($this->serverRequest, $serverRequest); $this->assertNull($serverRequest->getAttribute('testK')); }
/** * @param string $secret * @param string $verifyToken * @param ServerRequestInterface|null $request */ public function __construct($secret, $verifyToken, ServerRequestInterface $request = null, EventDispatcherInterface $dispatcher = null) { $this->secret = $secret; $this->verifyToken = $verifyToken; $this->request = $request ?: ServerRequest::fromGlobals(); $this->dispatcher = $dispatcher ?: new EventDispatcher(); }
/** * Return a ServerRequest populated with superglobals: * $_GET * $_POST * $_COOKIE * $_FILES * $_SERVER * * @return ServerRequestInterface */ public static function fromGlobals() { $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; $headers = function_exists('getallheaders') ? getallheaders() : []; $uri = self::getUriFromGlobals(); $body = new LazyOpenStream('php://input', 'r+'); $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES)); }
/** * @param array $data * @return ServerRequest */ public function getRequest(array $data = []) { $method = $this->getMethod(); $uri = new Uri($this->getAction()); $body = null; if ($this->isGet()) { foreach ($this->getData($data) as $key => $value) { $uri = Uri::withQueryValue($uri, $key, $value); } } elseif ($this->isMultipart()) { $body = new MultipartStream($this->getMultipartData($data), $this->getMultipartBoundary()); } else { $body = http_build_query($this->getData($data), null, '&'); } $request = new ServerRequest($method, $uri, $this->getHeaders(), $body); $files = $this->getFiles(); return $request->withParsedBody(self::toNestedParams($this->getData($data)))->withAttribute('FILES', $files)->withUploadedFiles(ServerRequest::normalizeFiles($files)); }
/** * Get DatatableRequest populated from superglobal arrays * @return DatatableRequestInterface */ public static function fromGlobals() { return new static(ServerRequest::fromGlobals()); }
public function testAttributes() { $request1 = new ServerRequest('GET', '/'); $request2 = $request1->withAttribute('name', 'value'); $request3 = $request2->withAttribute('other', 'otherValue'); $request4 = $request3->withoutAttribute('other'); $request5 = $request3->withoutAttribute('unknown'); $this->assertNotSame($request2, $request1); $this->assertNotSame($request3, $request2); $this->assertNotSame($request4, $request3); $this->assertNotSame($request5, $request4); $this->assertEmpty($request1->getAttributes()); $this->assertEmpty($request1->getAttribute('name')); $this->assertEquals('something', $request1->getAttribute('name', 'something'), 'Should return the default value'); $this->assertEquals('value', $request2->getAttribute('name')); $this->assertEquals(['name' => 'value'], $request2->getAttributes()); $this->assertEquals(['name' => 'value', 'other' => 'otherValue'], $request3->getAttributes()); $this->assertEquals(['name' => 'value'], $request4->getAttributes()); }
/** * request * * @return ServerRequest */ public function request() { return ServerRequest::fromGlobals(); }
<?php use GuzzleHttp\Psr7\Response; use GuzzleHttp\Psr7\ServerRequest; use HansOtt\PSR7Cookies\SetCookie; use HansOtt\PSR7Cookies\Signer\Key; use HansOtt\PSR7Cookies\RequestCookies; use HansOtt\PSR7Cookies\Signer\Hmac\Sha256; require_once __DIR__ . '/../vendor/autoload.php'; date_default_timezone_set('UTC'); $serverRequest = ServerRequest::fromGlobals(); $requestCookies = RequestCookies::createFromRequest($serverRequest); $signer = new Sha256(); $key = new Key('LAp27106kAgG14u74t5kb^AYrW4^5ih$'); $counter = 0; if ($requestCookies->has('counter')) { $counterCookie = $requestCookies->get('counter'); try { $counterCookie = $signer->verify($counterCookie, $key); $counter = (int) $counterCookie->getValue(); } catch (\HansOtt\PSR7Cookies\Signer\Mismatch $e) { } $counter++; } $setCounterCookie = SetCookie::thatStaysForever('counter', $counter); $setCounterCookie = $signer->sign($setCounterCookie, $key); $response = new Response(); $body = \GuzzleHttp\Psr7\stream_for(sprintf('Counter: %d', $counter)); $response = $response->withBody($body); $response = $setCounterCookie->addToResponse($response); header(sprintf('HTTP/%s %s %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()));