locale_translation_http_check($uri)
Check if remote file exists and when it was last updated.
string $uri: URI of remote file.
array|bool Associative array of file data with the following elements:
TRUE if the file is not found. FALSE if a fault occurred.
function locale_translation_http_check($uri) { $logger = \Drupal::logger('locale'); try { $actual_uri = NULL; $response = \Drupal::service('http_client_factory')->fromOptions(['allow_redirects' => [ 'on_redirect' => function(RequestInterface $request, ResponseInterface $response, UriInterface $request_uri) use (&$actual_uri) { $actual_uri = (string) $request_uri; } ]])->head($uri); $result = array(); // Return the effective URL if it differs from the requested. if ($actual_uri && $actual_uri !== $uri) { $result['location'] = $actual_uri; } $result['last_modified'] = $response->hasHeader('Last-Modified') ? strtotime($response->getHeaderLine('Last-Modified')) : 0; return $result; } catch (RequestException $e) { // Handle 4xx and 5xx http responses. if ($response = $e->getResponse()) { if ($response->getStatusCode() == 404) { // File not found occurs when a translation file is not yet available // at the translation server. But also if a custom module or custom // theme does not define the location of a translation file. By default // the file is checked at the translation server, but it will not be // found there. $logger->notice('Translation file not found: @uri.', array('@uri' => $uri)); return TRUE; } $logger->notice('HTTP request to @url failed with error: @error.', array('@url' => $uri, '@error' => $response->getStatusCode() . ' ' . $response->getReasonPhrase())); } } return FALSE; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!modules!locale!locale.batch.inc/function/locale_translation_http_check/8.1.x