diff --git a/Message/Http/Request.php b/Message/Http/Request.php index e6d40ae34..01f586df9 100644 --- a/Message/Http/Request.php +++ b/Message/Http/Request.php @@ -463,11 +463,11 @@ final class Request extends RequestAbstract /** * Perform rest request * - * @return string + * @return Response * * @since 1.0.0 */ - public function rest() : string + public function rest() : Response { return Rest::request($this); } diff --git a/Message/Http/Response.php b/Message/Http/Response.php index b07d043e0..e1ea2301e 100644 --- a/Message/Http/Response.php +++ b/Message/Http/Response.php @@ -95,6 +95,14 @@ final class Response extends ResponseAbstract implements RenderableInterface return $this->render(); } + /** + * {@inheritdoc} + */ + public function getJson() : array + { + return \json_decode($this->render(), true); + } + /** * Generate response based on header. * diff --git a/Utils/Converter/Currency.php b/Utils/Converter/Currency.php index bc666d625..881187797 100644 --- a/Utils/Converter/Currency.php +++ b/Utils/Converter/Currency.php @@ -102,11 +102,10 @@ class Currency $request = new Request(new Http('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml')); $request->setMethod(RequestMethod::GET); - $xml = new \SimpleXMLElement(Rest::request($request)); + $xml = new \SimpleXMLElement(Rest::request($request)->getBody()); if (!isset($xml->Cube)) { throw new \Exception('Invalid xml path'); - } $node = $xml->Cube->Cube->Cube; diff --git a/tests/Message/Http/RestTest.php b/tests/Message/Http/RestTest.php index 19f76d934..84fdea743 100644 --- a/tests/Message/Http/RestTest.php +++ b/tests/Message/Http/RestTest.php @@ -31,7 +31,7 @@ class RestTest extends \PHPUnit\Framework\TestCase self::assertEquals( "The OMS License 1.0\n\nCopyright (c) All Rights Reserved\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.", - Rest::request($request) + Rest::request($request)->getBody() ); } @@ -40,7 +40,7 @@ class RestTest extends \PHPUnit\Framework\TestCase $request = new Request(new Http('http://httpbin.org/post')); $request->setMethod(RequestMethod::POST); self::assertTrue($request->setData('pdata', 'abc')); - self::assertEquals('abc', \json_decode(REST::request($request), true)['form']['pdata']); + self::assertEquals('abc', REST::request($request)->getJson()['form']['pdata']); } public function testPut() : void @@ -48,7 +48,7 @@ class RestTest extends \PHPUnit\Framework\TestCase $request = new Request(new Http('http://httpbin.org/put')); $request->setMethod(RequestMethod::PUT); self::assertTrue($request->setData('pdata', 'abc')); - self::assertEquals('abc', \json_decode(REST::request($request), true)['form']['pdata']); + self::assertEquals('abc', REST::request($request)->getJson()['form']['pdata']); } public function testDelete() : void @@ -56,7 +56,7 @@ class RestTest extends \PHPUnit\Framework\TestCase $request = new Request(new Http('http://httpbin.org/delete')); $request->setMethod(RequestMethod::DELETE); self::assertTrue($request->setData('ddata', 'abc')); - self::assertEquals('abc', \json_decode(REST::request($request), true)['form']['ddata']); + self::assertEquals('abc', REST::request($request)->getJson()['form']['ddata']); } public function testGet() : void @@ -64,6 +64,6 @@ class RestTest extends \PHPUnit\Framework\TestCase $request = new Request(new Http('http://httpbin.org/get')); $request->setMethod(RequestMethod::GET); self::assertTrue($request->setData('gdata', 'abc')); - self::assertEquals('abc', \json_decode(REST::request($request), true)['args']['gdata']); + self::assertEquals('abc', REST::request($request)->getJson()['args']['gdata']); } }