public function call(Http\Request &$request, Http\Response &$response) { $curl = curl_init(); $headers = array(); foreach ($request->getHeaders() as $header => $value) { $headers[] = "{$header}: {$value}"; } $url = ''; $url .= $request->getBaseUrl(); $url .= $request->getPath(); if ($request->getParams()) { $url .= '?' . http_build_query($request->getParams()); } curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_TIMEOUT, 100); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getMethod()); curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getBody()); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $body = curl_exec($curl); /*var_dump($url); var_dump($request); var_dump($headers); var_dump($body); var_dump(curl_getinfo($curl));*/ if ($body === false) { throw new \Exception(curl_error($curl)); } $info = curl_getinfo($curl); $response->setHeader('Content-Type', $info['content_type']); $response->setStatus($info['http_code']); $response->setBody($body); curl_close($curl); }
public function filterResponse(Response &$response) { $status = $response->getStatus(); if ($status >= 400) { $body = $response->getBody(); $errors = ""; $exception = "[{$status}]"; if (property_exists($body, 'message')) { $exception .= " - {$body->message}"; } if (property_exists($body, 'errors')) { foreach ($body->errors as $category => $collection) { $errors .= "{$category}: " . implode(", ", $collection); } } if ($errors) { $exception .= " - {$errors}"; } throw new Exception($exception); } }
public function filterResponse(Http\Response &$response) { if (stristr($response->getHeader('Content-Type'), 'application/json') !== false) { $response->setBody(json_decode($response->getBody())); } }