/** * Set up an HTTPClient with auth for our resource. * * @param string $method * @return HTTPClient */ private function httpClient($method = 'GET') { $client = new HTTPClient($this->url); $client->setMethod($method); $client->setAuth($this->user, $this->pass); return $client; }
/** * Make a HTTP request. * * @param string $url Where to make the * @param array $params post parameters * * @return mixed the request */ function httpRequest($url, $params = null) { $request = new HTTPClient($url); $request->setConfig(array('connect_timeout' => 120, 'timeout' => 120, 'follow_redirects' => true, 'ssl_verify_peer' => false, 'ssl_verify_host' => false)); // Twitter is strict about accepting invalid "Expect" headers $request->setHeader('Expect', ''); if (isset($params)) { $request->setMethod(HTTP_Request2::METHOD_POST); $request->setBody($params); } try { $response = $request->send(); $code = $response->getStatus(); if ($code < 200 || $code >= 400) { throw new OAuthClientException($response->getBody(), $code); } return $response->getBody(); } catch (Exception $e) { throw new OAuthClientException($e->getMessage(), $e->getCode()); } }
function postToCollection($url, $activity) { $client = new HTTPClient($url); $client->setMethod('POST'); $client->setAuth($this->username, $this->password); $client->setHeader('Content-Type', 'application/atom+xml;type=entry'); $client->setBody($activity->asString(true, true, true)); $response = $client->send(); $status = $response->getStatus(); $reason = $response->getReasonPhrase(); if ($status >= 200 && $status < 300) { return true; } else { if ($status >= 400 && $status < 500) { // TRANS: Client exception thrown when post to collection fails with a 400 status. // TRANS: %1$s is a URL, %2$s is the status, %s$s is the fail reason. throw new ClientException(sprintf(_m('URLSTATUSREASON', '%1$s %2$s %3$s'), $url, $status, $reason)); } else { if ($status >= 500 && $status < 600) { // TRANS: Server exception thrown when post to collection fails with a 500 status. // TRANS: %1$s is a URL, %2$s is the status, %s$s is the fail reason. throw new ServerException(sprintf(_m('URLSTATUSREASON', '%1$s %2$s %3$s'), $url, $status, $reason)); } else { // That's unexpected. // TRANS: Exception thrown when post to collection fails with a status that is not handled. // TRANS: %1$s is a URL, %2$s is the status, %s$s is the fail reason. throw new Exception(sprintf(_m('URLSTATUSREASON', '%1$s %2$s %3$s'), $url, $status, $reason)); } } } }
function postJSON($url, $body) { $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, 'POST', $url); $request->sign_request($this->sha1_method, $this->consumer, $this->token); $hclient = new HTTPClient($url); $hclient->setConfig(array('connect_timeout' => 120, 'timeout' => 120, 'follow_redirects' => true, 'ssl_verify_peer' => false, 'ssl_verify_host' => false)); $hclient->setMethod(HTTP_Request2::METHOD_POST); $hclient->setBody(json_encode($body)); $hclient->setHeader('Content-Type', 'application/json'); $hclient->setHeader($request->to_header()); // Twitter is strict about accepting invalid "Expect" headers // No reason not to clear it still here -ESP $hclient->setHeader('Expect', ''); try { $response = $hclient->send(); $code = $response->getStatus(); if (!$response->isOK()) { throw new OAuthClientException($response->getBody(), $code); } return $response; } catch (Exception $e) { throw new OAuthClientException($e->getMessage(), $e->getCode()); } }