Merge pull request #81 from Neur0toxine/master
[fix] fileDownload and fileUpload method works properly now
This commit is contained in:
commit
30dfcc7c68
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,6 +2,8 @@
|
|||||||
/bin
|
/bin
|
||||||
composer.lock
|
composer.lock
|
||||||
composer.phar
|
composer.phar
|
||||||
|
coverage.xml
|
||||||
|
test-report.xml
|
||||||
phpunit.xml
|
phpunit.xml
|
||||||
.idea
|
.idea
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
@ -29,8 +29,13 @@ use RetailCrm\Http\Client;
|
|||||||
*/
|
*/
|
||||||
abstract class AbstractLoader
|
abstract class AbstractLoader
|
||||||
{
|
{
|
||||||
|
/** @var string|null */
|
||||||
protected $siteCode;
|
protected $siteCode;
|
||||||
|
|
||||||
|
/** @var \RetailCrm\Http\Client */
|
||||||
protected $client;
|
protected $client;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
protected $crmUrl;
|
protected $crmUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -75,7 +75,7 @@ class Client
|
|||||||
*
|
*
|
||||||
* @return ApiResponse
|
* @return ApiResponse
|
||||||
*/
|
*/
|
||||||
public function makeRequest(
|
public function makeRawRequest(
|
||||||
$path,
|
$path,
|
||||||
$method,
|
$method,
|
||||||
array $parameters = [],
|
array $parameters = [],
|
||||||
@ -119,7 +119,7 @@ class Client
|
|||||||
curl_setopt($curlHandler, CURLOPT_POST, true);
|
curl_setopt($curlHandler, CURLOPT_POST, true);
|
||||||
|
|
||||||
if ('/files/upload' == $path) {
|
if ('/files/upload' == $path) {
|
||||||
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $parameters['file']);
|
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, file_get_contents($parameters['file']));
|
||||||
} else {
|
} else {
|
||||||
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $parameters);
|
curl_setopt($curlHandler, CURLOPT_POSTFIELDS, $parameters);
|
||||||
}
|
}
|
||||||
@ -143,4 +143,29 @@ class Client
|
|||||||
|
|
||||||
return new ApiResponse($statusCode, $responseBody);
|
return new ApiResponse($statusCode, $responseBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make HTTP request and deserialize JSON body (throws exception otherwise)
|
||||||
|
*
|
||||||
|
* @param string $path request url
|
||||||
|
* @param string $method (default: 'GET')
|
||||||
|
* @param array $parameters (default: array())
|
||||||
|
* @param bool $fullPath (default: false)
|
||||||
|
*
|
||||||
|
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
|
||||||
|
*
|
||||||
|
* @throws \InvalidArgumentException
|
||||||
|
* @throws CurlException
|
||||||
|
* @throws InvalidJsonException
|
||||||
|
*
|
||||||
|
* @return ApiResponse
|
||||||
|
*/
|
||||||
|
public function makeRequest(
|
||||||
|
$path,
|
||||||
|
$method,
|
||||||
|
array $parameters = [],
|
||||||
|
$fullPath = false
|
||||||
|
) {
|
||||||
|
return $this->makeRawRequest($path, $method, $parameters, $fullPath)->asJsonResponse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ trait Files
|
|||||||
public function fileDownload($id)
|
public function fileDownload($id)
|
||||||
{
|
{
|
||||||
/* @noinspection PhpUndefinedMethodInspection */
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
return $this->client->makeRequest(
|
return $this->client->makeRawRequest(
|
||||||
sprintf('/files/%s/download', $id),
|
sprintf('/files/%s/download', $id),
|
||||||
"GET"
|
"GET"
|
||||||
);
|
);
|
||||||
|
@ -51,9 +51,17 @@ class ApiResponse implements \ArrayAccess
|
|||||||
{
|
{
|
||||||
$this->statusCode = (int) $statusCode;
|
$this->statusCode = (int) $statusCode;
|
||||||
$this->rawResponse = $responseBody;
|
$this->rawResponse = $responseBody;
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($responseBody)) {
|
/**
|
||||||
$response = json_decode($responseBody, true);
|
* Deserialize JSON from raw response body
|
||||||
|
*
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function asJsonResponse()
|
||||||
|
{
|
||||||
|
if (!empty($this->rawResponse)) {
|
||||||
|
$response = json_decode($this->rawResponse, true);
|
||||||
|
|
||||||
if (!$response && JSON_ERROR_NONE !== ($error = json_last_error())) {
|
if (!$response && JSON_ERROR_NONE !== ($error = json_last_error())) {
|
||||||
throw new InvalidJsonException(
|
throw new InvalidJsonException(
|
||||||
@ -64,6 +72,8 @@ class ApiResponse implements \ArrayAccess
|
|||||||
|
|
||||||
$this->response = $response;
|
$this->response = $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -93,6 +93,22 @@ class ClientTest extends TestCase
|
|||||||
$response = $client->makeRequest('/orders', Client::METHOD_GET);
|
$response = $client->makeRequest('/orders', Client::METHOD_GET);
|
||||||
|
|
||||||
static::assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
|
static::assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
|
||||||
|
static::assertNotEmpty($response->getResponseBody());
|
||||||
|
static::assertNotEmpty($response->getResponse());
|
||||||
|
static::assertEquals(200, $response->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group client
|
||||||
|
*/
|
||||||
|
public function testRequestSuccessNoDeserialization()
|
||||||
|
{
|
||||||
|
$client = static::getClient();
|
||||||
|
$response = $client->makeRawRequest('/orders', Client::METHOD_GET);
|
||||||
|
|
||||||
|
static::assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
|
||||||
|
static::assertNotEmpty($response->getResponseBody());
|
||||||
|
static::assertEmpty($response->getResponse());
|
||||||
static::assertEquals(200, $response->getStatusCode());
|
static::assertEquals(200, $response->getStatusCode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ class ApiClientCustomersCorporateTest extends TestCase
|
|||||||
{
|
{
|
||||||
$client = static::getApiClient();
|
$client = static::getApiClient();
|
||||||
$response = $client->request->customersCorporateAddresses($ids['externalId'], ['name' => 'name'], 1, 20);
|
$response = $client->request->customersCorporateAddresses($ids['externalId'], ['name' => 'name'], 1, 20);
|
||||||
|
|
||||||
static::assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
|
static::assertInstanceOf('RetailCrm\Response\ApiResponse', $response);
|
||||||
static::assertTrue(
|
static::assertTrue(
|
||||||
$response->isSuccessful(),
|
$response->isSuccessful(),
|
||||||
|
@ -40,7 +40,7 @@ class ApiResponseTest extends TestCase
|
|||||||
'Response object created'
|
'Response object created'
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
static::assertInstanceOf(
|
static::assertInstanceOf(
|
||||||
'RetailCrm\Response\ApiResponse',
|
'RetailCrm\Response\ApiResponse',
|
||||||
$response,
|
$response,
|
||||||
@ -54,7 +54,20 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testJsonInvalid()
|
public function testJsonInvalid()
|
||||||
{
|
{
|
||||||
new ApiResponse(400, '{ "asdf": }');
|
(new ApiResponse(400, '{ "asdf": }'))->asJsonResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group response
|
||||||
|
*/
|
||||||
|
public function testJsonInvalidNoDeserialize()
|
||||||
|
{
|
||||||
|
$response = new ApiResponse(400, '{ "asdf": }');
|
||||||
|
static::assertInstanceOf(
|
||||||
|
'RetailCrm\Response\ApiResponse',
|
||||||
|
$response,
|
||||||
|
'Response object created'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,7 +82,7 @@ class ApiResponseTest extends TestCase
|
|||||||
'Response object returns the right status code'
|
'Response object returns the right status code'
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = new ApiResponse(460, '{ "success": false }');
|
$response = (new ApiResponse(460, '{ "success": false }'))->asJsonResponse();
|
||||||
static::assertEquals(
|
static::assertEquals(
|
||||||
460,
|
460,
|
||||||
$response->getStatusCode(),
|
$response->getStatusCode(),
|
||||||
@ -88,7 +101,7 @@ class ApiResponseTest extends TestCase
|
|||||||
'Request was successful'
|
'Request was successful'
|
||||||
);
|
);
|
||||||
|
|
||||||
$response = new ApiResponse(460, '{ "success": false }');
|
$response = (new ApiResponse(460, '{ "success": false }'))->asJsonResponse();
|
||||||
static::assertFalse(
|
static::assertFalse(
|
||||||
$response->isSuccessful(),
|
$response->isSuccessful(),
|
||||||
'Request was failed'
|
'Request was failed'
|
||||||
@ -100,7 +113,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMagicCall()
|
public function testMagicCall()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
static::assertEquals(
|
static::assertEquals(
|
||||||
true,
|
true,
|
||||||
$response->isSuccessful(),
|
$response->isSuccessful(),
|
||||||
@ -125,7 +138,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMagicCallException2()
|
public function testMagicCallException2()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
/* @noinspection PhpUndefinedMethodInspection */
|
/* @noinspection PhpUndefinedMethodInspection */
|
||||||
$response->getSomeSuccess();
|
$response->getSomeSuccess();
|
||||||
}
|
}
|
||||||
@ -135,7 +148,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMagicGet()
|
public function testMagicGet()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
static::assertEquals(
|
static::assertEquals(
|
||||||
true,
|
true,
|
||||||
$response->success,
|
$response->success,
|
||||||
@ -160,7 +173,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMagicGetException2()
|
public function testMagicGetException2()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
/* @noinspection PhpUndefinedFieldInspection */
|
/* @noinspection PhpUndefinedFieldInspection */
|
||||||
$response->someSuccess;
|
$response->someSuccess;
|
||||||
}
|
}
|
||||||
@ -170,7 +183,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArrayGet()
|
public function testArrayGet()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
static::assertEquals(
|
static::assertEquals(
|
||||||
true,
|
true,
|
||||||
$response['success'],
|
$response['success'],
|
||||||
@ -194,7 +207,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArrayGetException2()
|
public function testArrayGetException2()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
$response['someSuccess'];
|
$response['someSuccess'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +216,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArrayIsset()
|
public function testArrayIsset()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
|
|
||||||
static::assertTrue(
|
static::assertTrue(
|
||||||
isset($response['success']),
|
isset($response['success']),
|
||||||
@ -222,7 +235,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArraySetException1()
|
public function testArraySetException1()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
$response['success'] = 'a';
|
$response['success'] = 'a';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,7 +245,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArraySetException2()
|
public function testArraySetException2()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
$response['sssssssuccess'] = 'a';
|
$response['sssssssuccess'] = 'a';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,7 +255,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArrayUnsetException1()
|
public function testArrayUnsetException1()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
unset($response['success']);
|
unset($response['success']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,7 +265,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testArrayUnsetException2()
|
public function testArrayUnsetException2()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
unset($response['sssssssuccess']);
|
unset($response['sssssssuccess']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +274,7 @@ class ApiResponseTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testMagicIsset()
|
public function testMagicIsset()
|
||||||
{
|
{
|
||||||
$response = new ApiResponse(201, '{ "success": true }');
|
$response = (new ApiResponse(201, '{ "success": true }'))->asJsonResponse();
|
||||||
|
|
||||||
static::assertTrue(
|
static::assertTrue(
|
||||||
isset($response->success),
|
isset($response->success),
|
||||||
|
Loading…
Reference in New Issue
Block a user