Skip to content

amphp/http-client-cookies

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
res
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

HTTP Client

Build Status CoverageStatus License

This package provides automatic cookie handling as a plugin for amphp/http-client.

Installation

This package can be installed as a Composer dependency.

composer require amphp/http-client-cookies

Usage

Amp\Http\Client\Cookie\CookieInterceptor must be registered as a NetworkInterceptor to enable automatic cookie handling. It requires a CookieJar implementation, where you can choose between InMemoryCookieJar, FileCookieJar and NullCookieJar.

<?php

use Amp\Http\Client\Cookie\CookieInterceptor;
use Amp\Http\Client\Cookie\InMemoryCookieJar;
use Amp\Http\Client\HttpClientBuilder;
use Amp\Http\Client\Request;
use Amp\Http\Client\Response;
use Amp\Loop;

require __DIR__ . '/vendor/autoload.php';

Loop::run(static function () {
    $cookieJar = new InMemoryCookieJar;

    $httpClient = (new HttpClientBuilder)
        ->interceptNetwork(new CookieInterceptor($cookieJar))
        ->build();

    /** @var Response $firstResponse */
    $firstResponse = yield $httpClient->request(new Request('https://google.com/'));
    yield $firstResponse->getBody()->buffer();

    /** @var Response $secondResponse */
    $secondResponse = yield $httpClient->request(new Request('https://google.com/'));
    yield $secondResponse->getBody()->buffer();

    /** @var Response $otherDomainResponse */
    $otherDomainResponse = yield $httpClient->request(new Request('https://amphp.org/'));
    yield $otherDomainResponse->getBody()->buffer();

    print "== first response stores cookies ==\r\n";
    print \implode("\r\n", $firstResponse->getHeaderArray('set-cookie'));
    print "\r\n\r\n";

    print "== second request sends cookies again ==\r\n";
    print \implode("\r\n", $secondResponse->getRequest()->getHeaderArray('cookie'));
    print "\r\n\r\n";

    print "== other domain request does not send cookies ==\r\n";
    print \implode("\r\n", $otherDomainResponse->getRequest()->getHeaderArray('cookie'));
});

Examples

More extensive code examples reside in the examples directory.

Versioning

amphp/http-client-cookies follows the semver semantic versioning specification like all other amphp packages.

Security

If you discover any security related issues, please email me@kelunik.com instead of using the issue tracker.

License

The MIT License (MIT). Please see LICENSE for more information.

About

Automatic cookie handling for Amp's HTTP client.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages