Skip to content
/ Http Public

MaplePHP/Http is a PHP library that simplifies handling HTTP messages, requests, and responses in web projects, adhering to the PSR-7 standard. It's designed for easy and efficient integration.

License

Notifications You must be signed in to change notification settings

MaplePHP/Http

Repository files navigation

MaplePHP - PSR-7 Http Message

The library is fully integrated with PSR-7 Http Message and designed for use with MaplePHP framework.

Initialize

The example below is utilizing the "namespace" below just to more easily demonstrate the guide.

use MaplePHP\Http;

Request

$request = new Http\ServerRequest(UriInterface $uri, EnvironmentInterface $env);

Get request method

echo $request->getMethod(); // GET, POST, PUT, DELETE

Get Uri instance

$uri = $request->getUri(); // UriInterface
echo $uri->getScheme(); // https
echo $uri->getAuthority(); // [userInfo@]host[:port]
echo $uri->getUserInfo(); // username:password
echo $uri->getHost(); // example.com, staging.example.com, 127.0.0.1, localhost
echo $uri->getPort(); // 443
echo $uri->getPath(); // /about-us/workers
echo $uri->getQuery(); // page-id=12&filter=2
echo $uri->getFragment(); // anchor-12 (The anchor hash without "#")
echo $uri->getUri(); // Get the full URI

Response

Only the (StreamInterface) Body attribute is required and the rest will auto propagate if you leave them be.

$request = new Http\Response(
	StreamInterface $body,
    ?HeadersInterface $headers = null,
    int $status = 200,
    ?string $phrase = null,
    ?string $version = null
);

Get Status code

echo $response->getStatusCode(); // 200

Get Status code

$newInst = $response->withStatus(404);
echo $newInst->getStatusCode(); // 404
echo $newInst->getReasonPhrase(); // Not Found

Message

Both Request and Response library will inherit methods under Message but with different information.

echo $response->getProtocolVersion(); // 1.1
echo $response->getHeaders(); // Array with all headers
echo $response->hasHeader("Content-Length"); // True
echo $response->getHeader("Content-Length"); // 1299
echo $response->getBody(); // StreamInterface

A standard example usage

$stream = new Http\Stream(Http\Stream::TEMP);
$response = new Http\Response($stream);
$env = new Http\Environment();
$request = new Http\ServerRequest(new Http\Uri($env->getUriParts()), $env);

Stream

None of the construct attributes are required and will auto propagate if you leave them be.

$stream = new Http\Stream(
	(mixed) Stream
	(string) permission
);

Basic stream examples

Write to stream

$stream = new Http\Stream(Http\Stream::TEMP);
if ($stream->isSeekable()) {
    $stream->write("Hello world");
    //echo $stream; // will print Hello world
    // Or
    $stream->rewind();
    echo $stream->getContents(); // Hello world
    // Or Same as above
    //echo $stream->read($stream->getSize());
}

Get file content with stream

$stream = new Http\Stream("/var/www/html/YourApp/dir/dir/data.json");
echo $stream->getContents();

Upload a stream to the server

$upload = new Http\UploadedFile($stream);
$upload->moveTo("/var/www/html/upload/log.txt"); // Place Hello world in txt file

Create a request

The client will be using curl, so it's essential to ensure that it is enabled in case it has been disabled for any reason.

// Init request client
$client = new Http\Client([CURLOPT_HTTPAUTH => CURLAUTH_DIGEST]); // Pass on Curl options

// Create request data
$request = new Http\Request(
    "POST", // The HTTP Method (GET, POST, PUT, DELETE, PATCH)
    "https://admin:mypass@example.com:443/test.php", // The Request URI
    ["customHeader" => "lorem"], // Add Headers, empty array is allowed
    ["email" => "john.doe@example.com"] // Post data
);

// Pass request data to client and POST
$response = $client->sendRequest($request);

// Get Stream data
var_dump($response->getBody()->getContents());

About

MaplePHP/Http is a PHP library that simplifies handling HTTP messages, requests, and responses in web projects, adhering to the PSR-7 standard. It's designed for easy and efficient integration.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages