add test case for upload file, improve error handling

This commit is contained in:
wing328
2015-05-15 11:08:33 +08:00
parent 070a6203e0
commit 4466b6e15e
2 changed files with 35 additions and 8 deletions

View File

@@ -142,21 +142,20 @@ class APIClient {
$response_info = curl_getinfo($curl);
// Handle the response
if ($response_info['http_code'] == 0) {
throw new APIClientException("TIMEOUT: api call to " . $url .
" took more than 5s to return", 0, $response_info, $response);
if ($response === false) { // error, likely in the client side
throw new APIClientException("API Error ($url): ".curl_error($curl), 0, $response_info, $response);
} else if ($response_info['http_code'] >= 200 && $response_info['http_code'] <= 299 ) {
$data = json_decode($response);
if (json_last_error() > 0) { // if response is a string
$data = $response;
}
} else if ($response_info['http_code'] == 401) {
} else if ($response_info['http_code'] == 401) { // server returns 401
throw new APIClientException("Unauthorized API request to " . $url .
": " . serialize($response), 0, $response_info, $response);
} else if ($response_info['http_code'] == 404) {
} else if ($response_info['http_code'] == 404) { // server returns 404
$data = null;
} else {
throw new APIClientException("Can't connect to the api: " . $url .
throw new APIClientException("Can't connect to the API: " . $url .
" response code: " .
$response_info['http_code'], 0, $response_info, $response);
}