public function execute($client = null) { if ($client == null) { $client = new GuzzleClient(); } $url = $this->protocol . '://' . $this->hostname . $this->path; switch ($this->verb) { case 'get': $request = $client->get($url); break; case 'post': $request = $client->post($url); break; case 'put': $request = $client->put($url); break; case 'delete': $request = $client->delete($url); break; } return new Response($request->send()); }
/** * Send DELETE request to API resource * * @param string $resource * @return array */ protected function sendDeleteRequest($resource) { $client = new Client(); $request = $client->delete($this->getServiceUrl($resource), array('Authorization' => $this->getOauthData(), 'Accept' => 'application/x-yametrika+json', 'Content-Type' => 'application/x-yametrika+json')); $response = $this->sendRequest($request)->json(); return $response; }
public static function dequeue($job, $data) { $callback_url = $data['callback_url']; $method = strtoupper($data['callback_method']); $payload = unserialize(base64_decode($data['callback_payload_base64'])); if (empty($callback_url)) { Log::warning('Empty callback URL'); return FALSE; } $client = new HttpClient(); if ($method == 'GET') { $request = $client->get($callback_url); } elseif ($method == 'POST') { $request = $client->post($callback_url, array(), $payload); } elseif ($method == 'PUT') { $request = $client->put($callback_url, array(), $payload); } elseif ($method == 'DELETE') { $request = $client->delete($callback_url); } elseif ($method == 'UPDATE') { $request = $client->update($callback_url); } elseif ($method == 'PATCH') { $request = $client->patch($callback_url); } else { QueuedHttpClient::logFailedCallback($job, $data, ['success' => false, 'message' => 'Unsupported method: ' . $method], 'hard'); return FALSE; } try { $response = $request->send(); if ($response->getStatusCode() != 200) { if ($job->attempts() > 60) { QueuedHttpClient::logFailedCallback($job, $data, $response, 'hard'); $job->delete(); } else { QueuedHttpClient::logFailedCallback($job, $data, $response, 'soft'); $job->release(60); } return $response; } // request probably successful, delete from queue $job->delete(); return $response; // these exceptions are broken out here because perhaps we want to // treat them differently in deciding whether to requeue or not } catch (CurlException $e) { // curl network and low-level exceptions QueuedHttpClient::retryLaterOrDelete($job, $data, get_class($e) . ": " . $e->getResponse(), 60, 60 * 24); // retry every minute for up to 24 hours } catch (Guzzle\Http\Exception\ClientErrorResponseException $e) { // server 4xx exceptions QueuedHttpClient::retryLaterOrDelete($job, $data, get_class($e) . ": " . $e->getResponse(), 60, 60); // retry every minute for up to an hour } catch (Guzzle\Http\Exception\ServerErrorResponseException $e) { // server 5xx exceptions QueuedHttpClient::retryLaterOrDelete($job, $data, get_class($e) . ": " . $e->getResponse(), 60, 60 * 24); // retry every minute for up to 24 hours } catch (Guzzle\Common\Exception\RuntimeException $e) { // result most likely wasn't in JSON format QueuedHttpClient::retryLaterOrDelete($job, $data, get_class($e) . ": " . $e->getMessage(), 60, 10); // retry every minute for up to ten minutes } catch (Exception $e) { // unknown other error QueuedHttpClient::retryLaterOrDelete($job, $data, get_class($e) . ": " . $e->getMessage(), 60, 60 * 24); // retry every minute for up to 24 hours } }