Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90be29ced4 | ||
|
|
8dcb11e0a6 | ||
|
|
3591292c3e | ||
|
|
3ec25a5d17 | ||
|
|
fbe66400fc | ||
|
|
f68939375b | ||
|
|
ba25e0304a | ||
|
|
3bb82974cc | ||
|
|
3eb8536d3d | ||
|
|
4762858017 | ||
|
|
7404fca828 | ||
|
|
1dfcade505 | ||
|
|
976247358b | ||
|
|
a58c5592d5 |
12
.travis.yml
12
.travis.yml
@@ -6,8 +6,13 @@ php:
|
|||||||
- 5.6
|
- 5.6
|
||||||
- hhvm
|
- hhvm
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- composer selfupdate
|
||||||
|
- composer install
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- vendor/bin/test-reporter
|
- vendor/bin/test-reporter --stdout > codeclimate.json
|
||||||
|
- "curl -X POST -d @codeclimate.json -H 'Content-Type: application/json' -H 'User-Agent: Code Climate (PHP Test Reporter v0.1.1)' https://codeclimate.com/test_reports"
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks:
|
webhooks:
|
||||||
@@ -16,3 +21,8 @@ notifications:
|
|||||||
on_success: always
|
on_success: always
|
||||||
on_failure: always
|
on_failure: always
|
||||||
on_start: false
|
on_start: false
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
fast_finish: true
|
||||||
|
allow_failures:
|
||||||
|
- php: hhvm
|
||||||
|
|||||||
53
README.md
53
README.md
@@ -18,6 +18,10 @@ Unirest is a set of lightweight HTTP libraries available in multiple languages,
|
|||||||
* Customizable default headers for every request (DRY)
|
* Customizable default headers for every request (DRY)
|
||||||
* Automatic JSON parsing into a native object for JSON responses
|
* Automatic JSON parsing into a native object for JSON responses
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [cURL](http://php.net/manual/en/book.curl.php)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Using [Composer](https://getcomposer.org)
|
### Using [Composer](https://getcomposer.org)
|
||||||
@@ -25,7 +29,6 @@ Unirest is a set of lightweight HTTP libraries available in multiple languages,
|
|||||||
To install unirest-php with Composer, just add the following to your `composer.json` file:
|
To install unirest-php with Composer, just add the following to your `composer.json` file:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
// composer.json
|
|
||||||
{
|
{
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"mashape/unirest-php": "2.*"
|
"mashape/unirest-php": "2.*"
|
||||||
@@ -117,11 +120,11 @@ $response = Unirest\Request::get("http://httpbin.org/get", null, null, "username
|
|||||||
### Request Object
|
### Request Object
|
||||||
|
|
||||||
```php
|
```php
|
||||||
Unirest\Request::get($url, $headers = array(), $parameters = NULL, $username = NULL, $password = NULL)
|
Unirest\Request::get($url, $headers = array(), $parameters = null, $username = null, $password = null)
|
||||||
Unirest\Request::post($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL)
|
Unirest\Request::post($url, $headers = array(), $body = null, $username = null, $password = null)
|
||||||
Unirest\Request::put($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL)
|
Unirest\Request::put($url, $headers = array(), $body = null, $username = null, $password = null)
|
||||||
Unirest\Request::patch($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL)
|
Unirest\Request::patch($url, $headers = array(), $body = null, $username = null, $password = null)
|
||||||
Unirest\Request::delete($url, $headers = array(), $body = NULL, $username = NULL, $password = NULL)
|
Unirest\Request::delete($url, $headers = array(), $body = null, $username = null, $password = null)
|
||||||
```
|
```
|
||||||
|
|
||||||
- `url` - Endpoint, address, or uri to be acted upon and requested information from.
|
- `url` - Endpoint, address, or uri to be acted upon and requested information from.
|
||||||
@@ -130,6 +133,14 @@ Unirest\Request::delete($url, $headers = array(), $body = NULL, $username = NULL
|
|||||||
- `username` - Basic Authentication username
|
- `username` - Basic Authentication username
|
||||||
- `password` - Basic Authentication password
|
- `password` - Basic Authentication password
|
||||||
|
|
||||||
|
You can send a request with any [standard](http://www.iana.org/assignments/http-methods/http-methods.xhtml) or custom HTTP Method:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Unirest\Request::send(Unirest\Method::LINK, $url, $headers = array(), $body);
|
||||||
|
|
||||||
|
Unirest\Request::send('CHECKOUT', $url, $headers = array(), $body);
|
||||||
|
```
|
||||||
|
|
||||||
### Response Object
|
### Response Object
|
||||||
|
|
||||||
Upon recieving a response Unirest returns the result in the form of an Object, this object should always have the same keys for each language regarding to the response details.
|
Upon recieving a response Unirest returns the result in the form of an Object, this object should always have the same keys for each language regarding to the response details.
|
||||||
@@ -143,6 +154,17 @@ Upon recieving a response Unirest returns the result in the form of an Object, t
|
|||||||
|
|
||||||
You can set some advanced configuration to tune Unirest-PHP:
|
You can set some advanced configuration to tune Unirest-PHP:
|
||||||
|
|
||||||
|
#### Custom JSON Decode Flags
|
||||||
|
|
||||||
|
Unirest uses PHP's [JSON Extension](http://php.net/manual/en/book.json.php) for automatically decoding JSON responses.
|
||||||
|
sometime you may want to return associative arrays, limit the depth of recursion, or use any of the [customization flags](http://php.net/manual/en/json.constants.php#constant.json-hex-tag).
|
||||||
|
|
||||||
|
To do so, simply set the desired options using the `jsonOpts` request method:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Unirest\Request::jsonOpts(true, 512, JSON_NUMERIC_CHECK & JSON_FORCE_OBJECT & JSON_UNESCAPED_SLASHES);
|
||||||
|
```
|
||||||
|
|
||||||
#### Timeout
|
#### Timeout
|
||||||
|
|
||||||
You can set a custom timeout value (in **seconds**):
|
You can set a custom timeout value (in **seconds**):
|
||||||
@@ -160,6 +182,15 @@ Unirest\Request::defaultHeader("Header1", "Value1");
|
|||||||
Unirest\Request::defaultHeader("Header2", "Value2");
|
Unirest\Request::defaultHeader("Header2", "Value2");
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can do set default headers in bulk:
|
||||||
|
|
||||||
|
```php
|
||||||
|
Unirest\Request::defaultHeaders(array(
|
||||||
|
"Header1" => "Value1",
|
||||||
|
"Header2" => "Value2"
|
||||||
|
));
|
||||||
|
```
|
||||||
|
|
||||||
You can clear the default headers anytime with:
|
You can clear the default headers anytime with:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
@@ -178,12 +209,12 @@ By default is `true`.
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Licensed under [the MIT license](LICENSE).
|
Licensed under [the MIT license](https://github.com/Mashape/unirest-php/blob/master/LICENSE).
|
||||||
|
|
||||||
Created with love by [![Mashape Logo][mashape-logo]](https://www.mashape.com/)
|
Created with love by [Mashape](https://www.mashape.com/).
|
||||||
|
|
||||||
[gitter-url]: https://gitter.im/Mashape
|
[gitter-url]: https://gitter.im/Mashape/unirest-php
|
||||||
[gitter-image]: https://badges.gitter.im/Mashape.png
|
[gitter-image]: https://badges.gitter.im/Join%20Chat.svg
|
||||||
|
|
||||||
[composer-url]: http://badge.fury.io/ph/mashape%2Funirest-php
|
[composer-url]: http://badge.fury.io/ph/mashape%2Funirest-php
|
||||||
[composer-image]: https://badge.fury.io/ph/mashape%2Funirest-php.svg
|
[composer-image]: https://badge.fury.io/ph/mashape%2Funirest-php.svg
|
||||||
@@ -199,5 +230,3 @@ Created with love by [![Mashape Logo][mashape-logo]](https://www.mashape.com/)
|
|||||||
|
|
||||||
[dependency-url]: https://www.versioneye.com/user/projects/54b702db050646ca5c00019d
|
[dependency-url]: https://www.versioneye.com/user/projects/54b702db050646ca5c00019d
|
||||||
[dependency-image]: https://www.versioneye.com/user/projects/54b702db050646ca5c00019d/badge.svg?style=flat
|
[dependency-image]: https://www.versioneye.com/user/projects/54b702db050646ca5c00019d/badge.svg?style=flat
|
||||||
|
|
||||||
[mashape-logo]: https://cloud.githubusercontent.com/assets/183195/5750736/c94e178c-9c26-11e4-91b2-84bcd5d33e28.png
|
|
||||||
|
|||||||
@@ -8,11 +8,10 @@
|
|||||||
"author": "Mashape <opensource@mashape.com> (https://www.mashape.com)",
|
"author": "Mashape <opensource@mashape.com> (https://www.mashape.com)",
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.4.0",
|
"php": ">=5.4.0",
|
||||||
"ext-curl": "0.0.0.*",
|
"ext-curl": "*",
|
||||||
"ext-json": "~1.3"
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"ext-xdebug": "~2.2",
|
|
||||||
"phpunit/phpunit": "~4.4",
|
"phpunit/phpunit": "~4.4",
|
||||||
"codeclimate/php-test-reporter": "0.1.*"
|
"codeclimate/php-test-reporter": "0.1.*"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -7,36 +7,66 @@ use Unirest\Response;
|
|||||||
|
|
||||||
class Request
|
class Request
|
||||||
{
|
{
|
||||||
|
private static $jsonOpts = array();
|
||||||
private static $verifyPeer = true;
|
private static $verifyPeer = true;
|
||||||
private static $socketTimeout = null;
|
private static $socketTimeout = null;
|
||||||
private static $defaultHeaders = array();
|
private static $defaultHeaders = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set JSON decode mode
|
||||||
|
*
|
||||||
|
* @param bool $assoc When TRUE, returned objects will be converted into associative arrays.
|
||||||
|
* @param bool $depth User specified recursion depth.
|
||||||
|
* @param bool $options Bitmask of JSON decode options. Currently only JSON_BIGINT_AS_STRING is supported (default is to cast large integers as floats)
|
||||||
|
*/
|
||||||
|
public static function jsonOpts($assoc = false, $depth = 512, $options = 0)
|
||||||
|
{
|
||||||
|
return self::$jsonOpts = array($assoc, $depth, $options);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify SSL peer
|
* Verify SSL peer
|
||||||
|
*
|
||||||
* @param bool $enabled enable SSL verification, by default is true
|
* @param bool $enabled enable SSL verification, by default is true
|
||||||
*/
|
*/
|
||||||
public static function verifyPeer($enabled)
|
public static function verifyPeer($enabled)
|
||||||
{
|
{
|
||||||
self::$verifyPeer = $enabled;
|
return self::$verifyPeer = $enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a timeout
|
* Set a timeout
|
||||||
|
*
|
||||||
* @param integer $seconds timeout value in seconds
|
* @param integer $seconds timeout value in seconds
|
||||||
*/
|
*/
|
||||||
public static function timeout($seconds)
|
public static function timeout($seconds)
|
||||||
{
|
{
|
||||||
self::$socketTimeout = $seconds;
|
return self::$socketTimeout = $seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default headers to send on every request
|
||||||
|
*
|
||||||
|
* @param array $headers headers array
|
||||||
|
*/
|
||||||
|
public static function defaultHeaders($headers)
|
||||||
|
{
|
||||||
|
foreach ($headers as $name => $value) {
|
||||||
|
self::$defaultHeaders[$name] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a new default header to send on every request
|
* Set a new default header to send on every request
|
||||||
|
*
|
||||||
* @param string $name header name
|
* @param string $name header name
|
||||||
* @param string $value header value
|
* @param string $value header value
|
||||||
*/
|
*/
|
||||||
public static function defaultHeader($name, $value)
|
public static function defaultHeader($name, $value)
|
||||||
{
|
{
|
||||||
self::$defaultHeaders[$name] = $value;
|
return self::$defaultHeaders[$name] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,11 +74,12 @@ class Request
|
|||||||
*/
|
*/
|
||||||
public static function clearDefaultHeaders()
|
public static function clearDefaultHeaders()
|
||||||
{
|
{
|
||||||
self::$defaultHeaders = array();
|
return self::$defaultHeaders = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a GET request to a URL
|
* Send a GET request to a URL
|
||||||
|
*
|
||||||
* @param string $url URL to send the GET request to
|
* @param string $url URL to send the GET request to
|
||||||
* @param array $headers additional headers to send
|
* @param array $headers additional headers to send
|
||||||
* @param mixed $parameters parameters to send in the querystring
|
* @param mixed $parameters parameters to send in the querystring
|
||||||
@@ -213,31 +244,11 @@ class Request
|
|||||||
* @throws Exception if a cURL error occurs
|
* @throws Exception if a cURL error occurs
|
||||||
* @return Unirest\Response
|
* @return Unirest\Response
|
||||||
*/
|
*/
|
||||||
private static function send($method, $url, $body = null, $headers = array(), $username = null, $password = null)
|
public static function send($method, $url, $body = null, $headers = array(), $username = null, $password = null)
|
||||||
{
|
{
|
||||||
if ($headers == null) {
|
|
||||||
$headers = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$lowercaseHeaders = array();
|
|
||||||
$finalHeaders = array_merge($headers, self::$defaultHeaders);
|
|
||||||
foreach ($finalHeaders as $key => $val) {
|
|
||||||
$lowercaseHeaders[] = self::getHeader($key, $val);
|
|
||||||
}
|
|
||||||
|
|
||||||
$lowerCaseFinalHeaders = array_change_key_case($finalHeaders);
|
|
||||||
|
|
||||||
if (!array_key_exists('user-agent', $lowerCaseFinalHeaders)) {
|
|
||||||
$lowercaseHeaders[] = 'user-agent: unirest-php/2.0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!array_key_exists('expect', $lowerCaseFinalHeaders)) {
|
|
||||||
$lowercaseHeaders[] = 'expect:';
|
|
||||||
}
|
|
||||||
|
|
||||||
$ch = curl_init();
|
$ch = curl_init();
|
||||||
|
|
||||||
if ($method != Method::GET) {
|
if ($method !== Method::GET) {
|
||||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
|
||||||
|
|
||||||
if (is_array($body) || $body instanceof \Traversable) {
|
if (is_array($body) || $body instanceof \Traversable) {
|
||||||
@@ -259,12 +270,12 @@ class Request
|
|||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||||
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
|
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $lowercaseHeaders);
|
curl_setopt($ch, CURLOPT_HTTPHEADER, self::getFormattedHeaders($headers));
|
||||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, self::$verifyPeer);
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, self::$verifyPeer);
|
||||||
curl_setopt($ch, CURLOPT_ENCODING, ''); // If an empty string, '', is set, a header containing all supported encoding types is sent.
|
curl_setopt($ch, CURLOPT_ENCODING, ''); // If an empty string, '', is set, a header containing all supported encoding types is sent.
|
||||||
|
|
||||||
if (self::$socketTimeout != null) {
|
if (self::$socketTimeout !== null) {
|
||||||
curl_setopt($ch, CURLOPT_TIMEOUT, self::$socketTimeout);
|
curl_setopt($ch, CURLOPT_TIMEOUT, self::$socketTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,7 +297,28 @@ class Request
|
|||||||
$body = substr($response, $header_size);
|
$body = substr($response, $header_size);
|
||||||
$httpCode = $curl_info['http_code'];
|
$httpCode = $curl_info['http_code'];
|
||||||
|
|
||||||
return new Response($httpCode, $body, $header);
|
return new Response($httpCode, $body, $header, self::$jsonOpts);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getFormattedHeaders($headers)
|
||||||
|
{
|
||||||
|
$formattedHeaders = array();
|
||||||
|
|
||||||
|
$combinedHeaders = array_change_key_case(array_merge((array) $headers, self::$defaultHeaders));
|
||||||
|
|
||||||
|
foreach ($combinedHeaders as $key => $val) {
|
||||||
|
$formattedHeaders[] = self::getHeaderString($key, $val);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!array_key_exists('user-agent', $combinedHeaders)) {
|
||||||
|
$formattedHeaders[] = 'user-agent: unirest-php/2.0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!array_key_exists('expect', $combinedHeaders)) {
|
||||||
|
$formattedHeaders[] = 'expect:';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $formattedHeaders;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function getArrayFromQuerystring($query)
|
private static function getArrayFromQuerystring($query)
|
||||||
@@ -315,11 +347,11 @@ class Request
|
|||||||
$path = (isset($url_parsed['path']) ? $url_parsed['path'] : null);
|
$path = (isset($url_parsed['path']) ? $url_parsed['path'] : null);
|
||||||
$query = (isset($url_parsed['query']) ? $url_parsed['query'] : null);
|
$query = (isset($url_parsed['query']) ? $url_parsed['query'] : null);
|
||||||
|
|
||||||
if ($query != null) {
|
if ($query !== null) {
|
||||||
$query = '?' . http_build_query(self::getArrayFromQuerystring($query));
|
$query = '?' . http_build_query(self::getArrayFromQuerystring($query));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($port && $port[0] != ':') {
|
if ($port && $port[0] !== ':') {
|
||||||
$port = ':' . $port;
|
$port = ':' . $port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,7 +359,7 @@ class Request
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function getHeader($key, $val)
|
private static function getHeaderString($key, $val)
|
||||||
{
|
{
|
||||||
$key = trim(strtolower($key));
|
$key = trim(strtolower($key));
|
||||||
return $key . ': ' . $val;
|
return $key . ': ' . $val;
|
||||||
|
|||||||
@@ -13,14 +13,19 @@ class Response
|
|||||||
* @param int $code response code of the cURL request
|
* @param int $code response code of the cURL request
|
||||||
* @param string $raw_body the raw body of the cURL response
|
* @param string $raw_body the raw body of the cURL response
|
||||||
* @param string $headers raw header string from cURL response
|
* @param string $headers raw header string from cURL response
|
||||||
|
* @param array $json_args arguments to pass to json_decode function
|
||||||
*/
|
*/
|
||||||
public function __construct($code, $raw_body, $headers)
|
public function __construct($code, $raw_body, $headers, $json_args = array())
|
||||||
{
|
{
|
||||||
$this->code = $code;
|
$this->code = $code;
|
||||||
$this->headers = $this->parseHeaders($headers);
|
$this->headers = $this->parseHeaders($headers);
|
||||||
$this->raw_body = $raw_body;
|
$this->raw_body = $raw_body;
|
||||||
$this->body = $raw_body;
|
$this->body = $raw_body;
|
||||||
$json = json_decode($raw_body);
|
|
||||||
|
// make sure raw_body is the first argument
|
||||||
|
array_unshift($json_args, $raw_body);
|
||||||
|
|
||||||
|
$json = call_user_func_array('json_decode', $json_args);
|
||||||
|
|
||||||
if (json_last_error() === JSON_ERROR_NONE) {
|
if (json_last_error() === JSON_ERROR_NONE) {
|
||||||
$this->body = $json;
|
$this->body = $json;
|
||||||
|
|||||||
@@ -171,7 +171,10 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$args = $response->body->args;
|
$args = $response->body->args;
|
||||||
$this->assertEquals('Mark=Hello', $args->name);
|
$this->assertEquals('Mark=Hello', $args->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetWithEqualSignAlt()
|
||||||
|
{
|
||||||
$response = Unirest\Request::get('http://httpbin.org/get', array(
|
$response = Unirest\Request::get('http://httpbin.org/get', array(
|
||||||
'Accept' => 'application/json'
|
'Accept' => 'application/json'
|
||||||
), array(
|
), array(
|
||||||
@@ -184,6 +187,17 @@ class UnirestRequestTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('Mark=Hello=John', $args->name);
|
$this->assertEquals('Mark=Hello=John', $args->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetWithComplexQuery()
|
||||||
|
{
|
||||||
|
$response = Unirest\Request::get('http://httpbin.org/get?query=[{"type":"/music/album","name":null,"artist":{"id":"/en/bob_dylan"},"limit":3}]&cursor');
|
||||||
|
|
||||||
|
$this->assertEquals(200, $response->code);
|
||||||
|
|
||||||
|
$args = $response->body->args;
|
||||||
|
$this->assertEquals('', $args->cursor);
|
||||||
|
$this->assertEquals('[{"type":"/music/album","name":null,"artist":{"id":"/en/bob_dylan"},"limit":3}]', $args->query);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetArray()
|
public function testGetArray()
|
||||||
{
|
{
|
||||||
$response = Unirest\Request::get('http://httpbin.org/get', array(), array(
|
$response = Unirest\Request::get('http://httpbin.org/get', array(), array(
|
||||||
|
|||||||
28
tests/Unirest/ResponseTest.php
Normal file
28
tests/Unirest/ResponseTest.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class UnirestResponseTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testJSONAssociativeArrays()
|
||||||
|
{
|
||||||
|
$opts = Unirest\Request::jsonOpts(true);
|
||||||
|
$response = new Unirest\Response(200, '{"a":1,"b":2,"c":3,"d":4,"e":5}', '', $opts);
|
||||||
|
|
||||||
|
$this->assertEquals($response->body['a'], 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testJSONAObjects()
|
||||||
|
{
|
||||||
|
$opts = Unirest\Request::jsonOpts(false);
|
||||||
|
$response = new Unirest\Response(200, '{"a":1,"b":2,"c":3,"d":4,"e":5}', '', $opts);
|
||||||
|
|
||||||
|
$this->assertEquals($response->body->a, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testJSONOpts()
|
||||||
|
{
|
||||||
|
$opts = Unirest\Request::jsonOpts(false, 512, JSON_NUMERIC_CHECK);
|
||||||
|
$response = new Unirest\Response(200, '{"number": 1234567890}', '', $opts);
|
||||||
|
|
||||||
|
$this->assertSame($response->body->number, 1234567890);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user