X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fhttpclient.php;h=3f82620761c6eef8d953cc11fa9611addad5ba96;hb=093857c582a68b39e0d65523d27f25ede7b7fed6;hp=ee894e9832112ba0e0255e6dcc8ffb99e3ac5f41;hpb=fa37967858c3c29000797e510e5f98aca8ab558f;p=quix0rs-gnu-social.git diff --git a/lib/httpclient.php b/lib/httpclient.php index ee894e9832..3f82620761 100644 --- a/lib/httpclient.php +++ b/lib/httpclient.php @@ -66,7 +66,8 @@ class HTTPResponse extends HTTP_Request2_Response * Get the count of redirects that have been followed, if any. * @return int */ - function getRedirectCount() { + function getRedirectCount() + { return $this->redirectCount; } @@ -74,9 +75,19 @@ class HTTPResponse extends HTTP_Request2_Response * Gets the final target URL, after any redirects have been followed. * @return string URL */ - function getUrl() { + function getUrl() + { return $this->url; } + + /** + * Check if the response is OK, generally a 200 status code. + * @return bool + */ + function isOk() + { + return ($this->getStatus() == 200); + } } /** @@ -107,55 +118,74 @@ class HTTPClient extends HTTP_Request2 function __construct($url=null, $method=self::METHOD_GET, $config=array()) { $this->config['max_redirs'] = 10; - $this->config['follow_redirects'] = false; + $this->config['follow_redirects'] = true; parent::__construct($url, $method, $config); $this->setHeader('User-Agent', $this->userAgent()); } /** - * Convenience function to run a get request and return the response body. - * Use when you don't need to get into details of the response. + * Convenience/back-compat instantiator + * @return HTTPClient + */ + public static function start() + { + return new HTTPClient(); + } + + /** + * Convenience function to run a GET request. * - * @return mixed string on success, false on failure + * @return HTTPResponse + * @throws HTTP_Request2_Exception */ - function get() + public function get($url, $headers=array()) { - $this->setMethod(self::METHOD_GET); - return $this->doRequest(); + return $this->doRequest($url, self::METHOD_GET, $headers); } /** - * Convenience function to post form data and return the response body. - * Use when you don't need to get into details of the response. + * Convenience function to run a HEAD request. * - * @param array associative array of form data to submit - * @return mixed string on success, false on failure + * @return HTTPResponse + * @throws HTTP_Request2_Exception */ - public function post($data=array()) + public function head($url, $headers=array()) + { + return $this->doRequest($url, self::METHOD_HEAD, $headers); + } + + /** + * Convenience function to POST form data. + * + * @param string $url + * @param array $headers optional associative array of HTTP headers + * @param array $data optional associative array or blob of form data to submit + * @return HTTPResponse + * @throws HTTP_Request2_Exception + */ + public function post($url, $headers=array(), $data=array()) { - $this->setMethod(self::METHOD_POST); if ($data) { $this->addPostParameter($data); } - return $this->doRequest(); + return $this->doRequest($url, self::METHOD_POST, $headers); } /** - * @return mixed string on success, false on failure + * @return HTTPResponse + * @throws HTTP_Request2_Exception */ - protected function doRequest() + protected function doRequest($url, $method, $headers) { - try { - $response = $this->send(); - $code = $response->getStatus(); - if (($code < 200) || ($code >= 400)) { - return false; + $this->setUrl($url); + $this->setMethod($method); + if ($headers) { + foreach ($headers as $header) { + $this->setHeader($header); } - return $response->getBody(); - } catch (HTTP_Request2_Exception $e) { - $this->log(LOG_ERR, $e->getMessage()); - return false; } + $response = $this->send(); + return $response; } protected function log($level, $detail) { @@ -167,13 +197,24 @@ class HTTPClient extends HTTP_Request2 /** * Pulls up StatusNet's customized user-agent string, so services * we hit can track down the responsible software. + * + * @return string */ function userAgent() { return "StatusNet/".STATUSNET_VERSION." (".STATUSNET_CODENAME.")"; } - function send() + /** + * Actually performs the HTTP request and returns an HTTPResponse object + * with response body and header info. + * + * Wraps around parent send() to add logging and redirection processing. + * + * @return HTTPResponse + * @throw HTTP_Request2_Exception + */ + public function send() { $maxRedirs = intval($this->config['max_redirs']); if (empty($this->config['follow_redirects'])) {