danharper/psr7-jsonx

JSONx is JSON encoded as XML

v0.1.0 2015-11-22 23:49 UTC

This package is not auto-updated.

Last update: 2024-12-21 19:21:23 UTC


README

Latest Stable Version License

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);