2017 © Pedro Peláez
 

library http

Koded HTTP component.

image

koded/http

Koded HTTP component.

  • Sunday, December 17, 2017
  • by kodeart
  • Repository
  • 1 Watchers
  • 3 Stars
  • 32 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Koded - HTTP Library

Latest Stable Version Build Status Code Coverage Scrutinizer Code Quality Packagist Downloads Minimum PHP Version Software license, (*1)

Koded HTTP library implements PSR-7 (HTTP message), PSR-17 (HTTP Factories) and [PSR-18][3] (HTTP Client)., (*2)

To have more useful everyday methods for your projects, the request and response instances are extended with additional interfaces., (*3)

ServerRequest

class ServerRequest extends ClientRequest implements Request {}

This object represents the incoming server-side HTTP request., (*4)

, (*5)

ClientRequest

class ClientRequest implements RequestInterface, JsonSerializable {}

This object is a representation of an outgoing client-side HTTP request., (*6)

, (*7)

ServerResponse

class ServerResponse implements Response, JsonSerializable {}

This object represents the outgoing server-side response., (*8)

, (*9)

UploadedFile

This value object represents a file uploaded through the HTTP request., (*10)

HTTP Factory

Implementation of PSR-17 (HTTP Factories)., (*11)

<?php

use Koded\Http\HttpFactory;

$httpFactory = new HttpFactory;

$clientRequest = $httpFactory->createRequest('GET', '/');
$serverRequest = $httpFactory->createServerRequest('GET', '/');

$response = $httpFactory->createResponse(201);

$stream = $httpFactory->createStream('Hello there');
$stream = $httpFactory->createStreamFromFile('file.name', '+w');
$stream = $httpFactory->createStreamFromResource($resource);

$uri = $httpFactory->createUri('/');

$uploadedFile = $httpFactory->createUploadedFile($stream);

HTTP clients

There are 2 implementations for ClientRequest interface - PHP stream - curl, (*12)

To create instances of HTTP clients, use the Koded\Http\Client\ClientFactory class, (*13)

<?php

use Koded\Http\Client\ClientFactory;

$http = new ClientFactory(ClientFactory::CURL); // or ClientFactory::PHP

$http->get('/', $headers);
$http->post('/', $body, $headers);
$http->put('/', $body, $headers);
$http->patch('/', $body, $headers);
$http->delete('/', $headers);
$http->head('/', $headers);

$headers are optional., (*14)

HTTP Client (PSR-18)

Implementation of [PSR-18][3] (HTTP Client)., (*15)

<?php

use Koded\Http\Client\ClientFactory;
use Koded\Http\ClientRequest;

$request = new ClientRequest('POST', 'https://...', ['foo' => 'bar']);
$response = (new ClientFactory)->sendRequest($request);

Additional interfaces

Additional interfaces, (*16)

  • Koded\Http\Request
  • Koded\Http\Response

These two may be useful in your project as they provide additional methods for request/response objects state., (*17)

Request

  • getPath(): string
  • getBaseUri(): string
  • withAttributes(array $attributes): Request
  • isSecure(): bool
  • isSafeMethod(): bool
  • isXHR(): bool

Response

  • getContentType(): string

ExtendedMessageInterface

Both Request and Response extends this interface, thus providing the extra methods: - withHeaders(array $headers): static - replaceHeaders(array $headers): static - getFlattenedHeaders(): array - getCanonicalizedHeaders(array $names = []): string, (*18)

HttpInputValidator

The idea here is to have a basic mechanism for validating the incoming request data. Validation is done in an instance of HttpInputValidator object by calling the Request::validate(HttpInputValidator $validator) method., (*19)

HttpInputValidator::validate() should return array, in case of - empty array, the validation went fine - a hash (['key' => 'value', ...]), with information what went wrong if incoming data is not valid, (*20)

The error handling is done in the application. A naive example:, (*21)

class FormValidator implements HttpInputValidator {

    public function validate(Data $input): array {
        if (empty($input->get('username'))) {
            return ['message' => 'Username is required'];
        }
       return []; 
    }
}

// Somewhere in your app, use the `Request` object to run validation

if ($response = $request->validate(new FormValidator)) {
    // {"message":"Username is required","status":400}
    return $response;
}

The error response will always have a status code set (status value) in the error message.
If the status code is not provided in the validation, the default is 400 Bad Request., (*22)

License

The code is distributed under the terms of The 3-Clause BSD license., (*23)

The Versions

17/12 2017

dev-master

9999999-dev

Koded HTTP component.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

http request response php7 stream

17/12 2017

0.10.1

0.10.1.0

Koded HTTP component.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

http request response php7 stream

05/12 2017

0.9.1

0.9.1.0

Koded HTTP component.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

http request response php7 stream

23/04 2017

0.8.0

0.8.0.0

Koded HTTP component.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

http request response php7 stream

23/04 2017

0.7.0

0.7.0.0

Koded HTTP component.

  Sources   Download

BSD-3-Clause

The Requires

 

The Development Requires

http request response php7 stream