Exemple #1
0
 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));
 }
Exemple #4
0
 /**
  * @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));
 }
Exemple #5
0
 /**
  * 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());
 }
Exemple #7
0
 /**
  * request
  *
  * @return ServerRequest
  */
 public function request()
 {
     return ServerRequest::fromGlobals();
 }
Exemple #8
0
<?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()));