Add HTTPRequest::head() function
This commit is contained in:
parent
bfbf8816e2
commit
61da51c2d5
4 changed files with 34 additions and 8 deletions
|
@ -85,7 +85,7 @@ function parse_url_content(App $a)
|
||||||
// Check if the URL is an image, video or audio file. If so format
|
// Check if the URL is an image, video or audio file. If so format
|
||||||
// the URL with the corresponding BBCode media tag
|
// the URL with the corresponding BBCode media tag
|
||||||
// Fetch the header of the URL
|
// Fetch the header of the URL
|
||||||
$curlResponse = DI::httpRequest()->get($url, ['novalidate' => true, 'nobody' => true]);
|
$curlResponse = DI::httpRequest()->head($url, ['novalidate' => true]);
|
||||||
|
|
||||||
if ($curlResponse->isSuccess()) {
|
if ($curlResponse->isSuccess()) {
|
||||||
// Convert the header fields into an array
|
// Convert the header fields into an array
|
||||||
|
|
|
@ -52,6 +52,17 @@ class HTTPRequest implements IHTTPRequest
|
||||||
$this->baseUrl = $baseUrl->get();
|
$this->baseUrl = $baseUrl->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** {@inheritDoc}
|
||||||
|
*
|
||||||
|
* @throws HTTPException\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function head(string $url, array $opts = [])
|
||||||
|
{
|
||||||
|
$opts['nobody'] = true;
|
||||||
|
|
||||||
|
return $this->get($url, $opts);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*
|
*
|
||||||
|
|
|
@ -29,12 +29,10 @@ interface IHTTPRequest
|
||||||
/**
|
/**
|
||||||
* Fetches the content of an URL
|
* Fetches the content of an URL
|
||||||
*
|
*
|
||||||
* If binary flag is true, return binary results.
|
|
||||||
* Set the cookiejar argument to a string (e.g. "/tmp/friendica-cookies.txt")
|
* Set the cookiejar argument to a string (e.g. "/tmp/friendica-cookies.txt")
|
||||||
* to preserve cookies from one request to the next.
|
* to preserve cookies from one request to the next.
|
||||||
*
|
*
|
||||||
* @param string $url URL to fetch
|
* @param string $url URL to fetch
|
||||||
* TRUE if asked to return binary results (file download)
|
|
||||||
* @param int $timeout Timeout in seconds, default system config value or 60 seconds
|
* @param int $timeout Timeout in seconds, default system config value or 60 seconds
|
||||||
* @param string $accept_content supply Accept: header with 'accept_content' as the value
|
* @param string $accept_content supply Accept: header with 'accept_content' as the value
|
||||||
* @param string $cookiejar Path to cookie jar file
|
* @param string $cookiejar Path to cookie jar file
|
||||||
|
@ -50,7 +48,6 @@ interface IHTTPRequest
|
||||||
* all the information collected during the fetch.
|
* all the information collected during the fetch.
|
||||||
*
|
*
|
||||||
* @param string $url URL to fetch
|
* @param string $url URL to fetch
|
||||||
* TRUE if asked to return binary results (file download)
|
|
||||||
* @param int $timeout Timeout in seconds, default system config value or 60 seconds
|
* @param int $timeout Timeout in seconds, default system config value or 60 seconds
|
||||||
* @param string $accept_content supply Accept: header with 'accept_content' as the value
|
* @param string $accept_content supply Accept: header with 'accept_content' as the value
|
||||||
* @param string $cookiejar Path to cookie jar file
|
* @param string $cookiejar Path to cookie jar file
|
||||||
|
@ -60,16 +57,30 @@ interface IHTTPRequest
|
||||||
public function fetchFull(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '');
|
public function fetchFull(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send a GET to an URL.
|
* Send a HEAD to an URL.
|
||||||
|
*
|
||||||
|
* @param string $url URL to fetch
|
||||||
|
* @param array $opts (optional parameters) assoziative array with:
|
||||||
|
* 'accept_content' => supply Accept: header with 'accept_content' as the value
|
||||||
|
* 'timeout' => int Timeout in seconds, default system config value or 60 seconds
|
||||||
|
* 'http_auth' => username:password
|
||||||
|
* 'novalidate' => do not validate SSL certs, default is to validate using our CA list
|
||||||
|
* 'cookiejar' => path to cookie jar file
|
||||||
|
* 'header' => header array
|
||||||
|
*
|
||||||
|
* @return CurlResult
|
||||||
|
*/
|
||||||
|
public function head(string $url, array $opts = []);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a GET to an URL.
|
||||||
*
|
*
|
||||||
* @param string $url URL to fetch
|
* @param string $url URL to fetch
|
||||||
* TRUE if asked to return binary results (file download)
|
|
||||||
* @param array $opts (optional parameters) assoziative array with:
|
* @param array $opts (optional parameters) assoziative array with:
|
||||||
* 'accept_content' => supply Accept: header with 'accept_content' as the value
|
* 'accept_content' => supply Accept: header with 'accept_content' as the value
|
||||||
* 'timeout' => int Timeout in seconds, default system config value or 60 seconds
|
* 'timeout' => int Timeout in seconds, default system config value or 60 seconds
|
||||||
* 'http_auth' => username:password
|
* 'http_auth' => username:password
|
||||||
* 'novalidate' => do not validate SSL certs, default is to validate using our CA list
|
* 'novalidate' => do not validate SSL certs, default is to validate using our CA list
|
||||||
* 'nobody' => only return the header
|
|
||||||
* 'cookiejar' => path to cookie jar file
|
* 'cookiejar' => path to cookie jar file
|
||||||
* 'header' => header array
|
* 'header' => header array
|
||||||
*
|
*
|
||||||
|
|
|
@ -449,7 +449,11 @@ class HTTPSignature
|
||||||
$curl_opts = $opts;
|
$curl_opts = $opts;
|
||||||
$curl_opts['header'] = $headers;
|
$curl_opts['header'] = $headers;
|
||||||
|
|
||||||
|
if ($opts['nobody']) {
|
||||||
|
$curlResult = DI::httpRequest()->head($request, $curl_opts);
|
||||||
|
} else {
|
||||||
$curlResult = DI::httpRequest()->get($request, $curl_opts);
|
$curlResult = DI::httpRequest()->get($request, $curl_opts);
|
||||||
|
}
|
||||||
$return_code = $curlResult->getReturnCode();
|
$return_code = $curlResult->getReturnCode();
|
||||||
|
|
||||||
Logger::log('Fetched for user ' . $uid . ' from ' . $request . ' returned ' . $return_code, Logger::DEBUG);
|
Logger::log('Fetched for user ' . $uid . ' from ' . $request . ' returned ' . $return_code, Logger::DEBUG);
|
||||||
|
|
Loading…
Reference in a new issue