danharper / psr7-jsonx
JSONx is JSON encoded as XML
Installs: 1 184
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- danharper/jsonx: ^0.1.0
- psr/http-message: ^1.0
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.0
- zendframework/zend-diactoros: ^1.1
Suggests
- zendframework/zend-diactoros: For.. (^1.1)
This package is not auto-updated.
Last update: 2024-10-26 18:38:40 UTC
README
An incoming Request object with a Content-Type: application/xml
header, will be converted to a JSON Request.
An outgoing Response object with a Content-Type: application/json
header with a corresponding Request object with a Accept: application/xml
header, will be converted to an XML Response.
It does this using IBM's standard for representing JSON as XML: JSONx.
This library is just a small wrapper around danharper/jsonx
. And, if you're using Laravel, you can get full JSONx just by dropping in a middleware with danharper/laravel-jsonx
.
Notice The library changes the body of HTTP Messages, and so it needs an implementation of
Psr\Http\Message\StreamInterface
to work. Or, I might be missing a better way?
There's a StreamFactoryInterface
you can implement to do it, or there's two implementations: DiactorosStreamFactory
(for the zend/diactoros
PSR-7 implementation) and a CallableStreamFactory
which you provide a function which will be given a string and you must return a stream containing it.
$jsonxAdaptor = new JSONxPSR7(new DiactorosStreamFactory); // or instead of DiactorosStreamFactory, implement your own, or use: $streamFactory = new CallableStreamFactory(function($body) { return MyPsr7Stream::fromString($body); }); $jsonxAdaptor = new JSONxPSR7($streamFactory);
Installation
composer require danharper/psr7-jsonx
Example
Convert Requests like so:
$request = $jsonxAdaptor->request($request);
Convert Responses like so:
$response = $jsonxAdaptor->response($request, $response);