/** * Tests the setter and getter of this model * @test */ public function setGet() { $errorMessage = "This is a error"; $httpStatusCode = 200; $responseCode = 20000; $errorResponseArray = array('foo' => 'bar'); $errorModel = new Error(); $errorModel->setErrorMessage($errorMessage); $errorModel->setHttpStatusCode($httpStatusCode); $errorModel->setResponseCode($responseCode); $errorModel->setErrorResponseArray($errorResponseArray); $this->assertEquals($errorMessage, $errorModel->getErrorMessage()); $this->assertEquals($httpStatusCode, $errorModel->getHttpStatusCode()); $this->assertEquals($responseCode, $errorModel->getResponseCode()); $this->assertEquals($errorResponseArray, $errorModel->getErrorResponseArray()); }
/** * Generates an error model based on the provided response array * @param array $response * @return Error */ private function _convertErrorToModel($response) { $errorModel = new Error(); $httpStatusCode = isset($response['header']['status']) ? $response['header']['status'] : null; $errorModel->setHttpStatusCode($httpStatusCode); $responseCode = isset($response['body']['data']['response_code']) ? $response['body']['data']['response_code'] : null; $errorModel->setResponseCode($responseCode); $errorCode = 'Undefined Error. This should not happen!'; if (isset($this->_errorCodes[$responseCode])) { $errorCode = $this->_errorCodes[$responseCode]; } if (isset($response['body'])) { if (is_array($response['body'])) { if (isset($response['body']['error'])) { if (is_array($response['body']['error'])) { $errorCode = $this->getErrorMessageFromArray($response['body']['error']); } elseif (is_string($response['body']['error'])) { $errorCode = $response['body']['error']; } } } elseif (is_string($response['body'])) { $json = json_decode($response['body']); $errorCode = $json->error; } } $errorModel->setErrorMessage($errorCode); return $errorModel; }
/** * Generates an error model based on the provided response array * @param array $response * @param string $resourceName * @return Error */ public function convertErrorToModel($response, $resourceName = null) { $errorModel = new Error(); $httpStatusCode = isset($response['header']['status']) ? $response['header']['status'] : null; $errorModel->setHttpStatusCode($httpStatusCode); $responseCode = isset($response['body']['data']['response_code']) ? $response['body']['data']['response_code'] : null; $errorModel->setResponseCode($responseCode); $errorCode = 'Undefined Error. This should not happen!'; if (isset($this->_errorCodes[$responseCode])) { $errorCode = $this->_errorCodes[$responseCode]; } if (isset($resourceName) && isset($response['body']['data'])) { try { $errorModel->setRawObject($this->convertResponse($response['body']['data'], $resourceName)); } catch (\Exception $e) { } } if (isset($response['body'])) { if (is_array($response['body'])) { if (isset($response['body']['error'])) { if (is_array($response['body']['error'])) { $errorCode = $this->getErrorMessageFromArray($response['body']['error']); } elseif (is_string($response['body']['error'])) { $errorCode = $response['body']['error']; } } } elseif (is_string($response['body'])) { $json = json_decode($response['body']); $errorCode = $json->error; } } $errorModel->setErrorMessage($errorCode); return $errorModel; }
/** * Sends a request based on the provided request model and according to the argumented method * @param \Paymill\Models\Request\Base $model * @param string $method (Create, update, delete, getAll, getOne) * @throws PaymillException * @return \Paymill\Models\Response\Base|\Paymill\Models\Response\Error */ private function _request(Base $model, $method) { if (!is_a($this->_connectionClass, '\\Paymill\\API\\CommunicationAbstract')) { throw new PaymillException(null, 'The connection class is missing!'); } $convertedResponse = null; $httpMethod = $this->_getHTTPMethod($method); $parameter = $model->parameterize($method); $serviceResource = $model->getServiceResource() . $model->getId(); if (is_a($model, "\\Paymill\\Models\\Request\\Transaction") && $method === "create") { $source = !array_key_exists('source', $parameter) ? "PhpLib" . $this->getVersion() : "PhpLib" . $this->getVersion() . "_" . $parameter['source']; $parameter['source'] = $source; } try { $this->_lastRequest = $parameter; $response = $this->_connectionClass->requestApi($serviceResource, $parameter, $httpMethod); var_dump($parameter); var_dump($response); $this->_lastResponse = $response; $responseHandler = new ResponseHandler(); if ($method === "getAllAsModel" && $responseHandler->validateResponse($response) && $this->_util->isNumericArray($response['body']['data'])) { foreach ($response['body']['data'] as $object) { $convertedResponse[] = $responseHandler->convertResponse($object, $model->getServiceResource()); } } elseif ($method === "getAll" && $responseHandler->validateResponse($response)) { $convertedResponse = $response['body']['data']; } elseif ($responseHandler->validateResponse($response)) { $convertedResponse = $responseHandler->convertResponse($response['body']['data'], $model->getServiceResource()); } else { $convertedResponse = $responseHandler->convertErrorToModel($response, $model->getServiceResource()); } } catch (\Exception $e) { $errorModel = new Error(); $convertedResponse = $errorModel->setErrorMessage($e->getMessage()); } if (is_a($convertedResponse, '\\Paymill\\Models\\Response\\Error')) { throw new PaymillException($convertedResponse->getResponseCode(), $convertedResponse->getErrorMessage(), $convertedResponse->getHttpStatusCode(), $convertedResponse->getRawObject()); } return $convertedResponse; }
/** * Sends a request based on the provided request model and according to the argumented method * @param \Paymill\Models\Request\Base $model * @param string $method (Create, update, delete, getAll, getOne) * @throws PaymillException * @return \Paymill\Models\Response\Base|\Paymill\Models\Response\Error */ private function _request(Base $model, $method) { if (!is_a($this->_connectionClass, '\\Paymill\\API\\CommunicationAbstract')) { throw new PaymillException(null, 'The connenction class is missing!'); } $httpMethod = $this->_getHTTPMethod($method); $parameter = $model->parameterize($method); $serviceResource = $model->getServiceResource() . $model->getId(); try { $this->_lastRequest = $parameter; $response = $this->_connectionClass->requestApi($serviceResource, $parameter, $httpMethod); $this->_lastResponse = $response; $responseHandler = new ResponseHandler(); if ($method === 'getAll') { if ($responseHandler->validateResponse($response)) { $convertedResponse = $response['body']['data']; } else { $convertedResponse = $responseHandler->convertResponse($response, $model->getServiceResource()); } } else { $convertedResponse = $responseHandler->convertResponse($response, $model->getServiceResource()); } } catch (Exception $e) { $errorModel = new Error(); $convertedResponse = $errorModel->setErrorMessage($e->getMessage()); } if (is_a($convertedResponse, '\\Paymill\\Models\\Response\\Error')) { throw new PaymillException($convertedResponse->getResponseCode(), $convertedResponse->getErrorMessage(), $convertedResponse->getHttpStatusCode()); } return $convertedResponse; }