- Notifications
You must be signed in to change notification settings - Fork0
Middleware Dispatcher For Hack
License
NotificationsYou must be signed in to change notification settings
nazg-hack/heredity
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Middleware Dispatcher For Hack.
PSR-7 HTTP message library Not Supported.
Supported Only Hack library.
Required HHVM >= 4.20.0
$ composer require nazg/heredity
usetype Nazg\Http\Server\RequestHandlerInterface;usetype Facebook\Experimental\Http\Message\ServerRequestInterface;usetype Facebook\Experimental\Http\Message\ResponseInterface;usetype Ytake\Hungrr\Response;usetype Ytake\Hungrr\StatusCode;usetype NazgHeredityTest\Middleware\MockMiddleware;usenamespace HH\Lib\Experimental\IO;usefunction json_encode;finalclassSimpleRequestHandlerimplementsRequestHandlerInterface {publicfunctionhandle(IO\WriteHandle$handle,ServerRequestInterface$request ):ResponseInterface {$header=$request->getHeader(MockMiddleware::MOCK_HEADER);if (count($header)) {$handle->rawWriteBlocking(json_encode($header));returnnewResponse($handle,StatusCode::OK); }$handle->rawWriteBlocking(json_encode([]));returnnewResponse($handle,StatusCode::OK); }}
usetype Facebook\Experimental\Http\Message\ResponseInterface;usetype Facebook\Experimental\Http\Message\ServerRequestInterface;usetype Nazg\Http\Server\MiddlewareInterface;usetype Nazg\Http\Server\RequestHandlerInterface;usetype HH\Lib\Experimental\IO\WriteHandle;classSimpleMiddlewareimplementsMiddlewareInterface {publicfunctionprocess(WriteHandle$writeHandle,ServerRequestInterface$request,RequestHandlerInterface$handler, ):ResponseInterface {// ... do something and return responsereturn$handler->handle($writeHandle,$request); }}
usetype Nazg\Heredity\Heredity;usetype Nazg\Heredity\MiddlewareStack;usetype Ytake\Hungrr\ServerRequestFactory;usenamespace HH\Lib\Experimental\IO;list($read,$write)=IO\pipe_non_disposable();$heredity=newHeredity(newMiddlewareStack([SimpleMiddleware::class ]),newSimpleRequestHandler() );$response=$heredity->handle($write,ServerRequestFactory::fromGlobals());
example.nazg-hack/glue
usenamespace HH\Lib\Str;usetype Nazg\Http\Server\AsyncMiddlewareInterface;usetype Nazg\Heredity\Exception\MiddlewareResolvingException;usetype Nazg\Heredity\Resolvable;usetype Nazg\Glue\Container;classGlueResolverimplementsResolvable<AsyncMiddlewareInterface> {publicfunction__construct(protectedContainer$container ) {}publicfunctionresolve(classname<AsyncMiddlewareInterface>$middleware ):AsyncMiddlewareInterface {if ($this->container->has($middleware)) {return$this->container->get($middleware); }thrownewMiddlewareResolvingException(Str\format('Identifier "%s" is not binding.',$middleware), ); }}
About
Middleware Dispatcher For Hack
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published