<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\DI;
-use Friendica\Network\HTTPClient\Client\HttpClient;
+use Friendica\Network\HTTPClient\Client\HttpClientAccept;
+use Friendica\Network\HTTPClient\Client\HttpClientOptions;
use Friendica\Network\HTTPException\NotModifiedException;
use Friendica\Object\Image;
use Friendica\Util\HTTPSignature;
throw new \Friendica\Network\HTTPException\NotFoundException();
}
- if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {
- header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
- if (!empty($_SERVER["HTTP_IF_NONE_MATCH"])) {
- header("Etag: " . $_SERVER["HTTP_IF_NONE_MATCH"]);
+ if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
+ if (!empty($_SERVER['HTTP_IF_NONE_MATCH'])) {
+ header('Etag: ' . $_SERVER['HTTP_IF_NONE_MATCH']);
}
- header("Expires: " . gmdate("D, d M Y H:i:s", time() + (31536000)) . " GMT");
- header("Cache-Control: max-age=31536000");
- if (function_exists("header_remove")) {
- header_remove("Last-Modified");
- header_remove("Expires");
- header_remove("Cache-Control");
+ header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT');
+ header('Cache-Control: max-age=31536000');
+ if (function_exists('header_remove')) {
+ header_remove('Last-Modified');
+ header_remove('Expires');
+ header_remove('Cache-Control');
}
throw new NotModifiedException();
}
throw new \Friendica\Network\HTTPException\BadRequestException();
}
- if (!local_user()) {
- Logger::info('Redirecting not logged in user to original address', ['url' => $request['url']]);
+ if (!DI::userSession()->getLocalUserId()) {
+ Logger::debug('Redirecting not logged in user to original address', ['url' => $request['url']]);
System::externalRedirect($request['url']);
}
$request['url'] = str_replace(' ', '+', $request['url']);
// Fetch the content with the local user
- $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), ['accept_content' => [HttpClient::ACCEPT_IMAGE], 'timeout' => 10]);
- $img_str = $fetchResult->getBody();
-
- if (!$fetchResult->isSuccess() || empty($img_str)) {
- Logger::info('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]);
+ try {
+ $fetchResult = HTTPSignature::fetchRaw($request['url'], DI::userSession()->getLocalUserId(), [HttpClientOptions::ACCEPT_CONTENT => [HttpClientAccept::IMAGE], 'timeout' => 10]);
+ $img_str = $fetchResult->getBody();
+
+ if (!$fetchResult->isSuccess() || empty($img_str)) {
+ Logger::notice('Error fetching image', ['image' => $request['url'], 'return' => $fetchResult->getReturnCode(), 'empty' => empty($img_str)]);
+ self::responseError();
+ // stop.
+ }
+ } catch (\Exception $exception) {
+ Logger::notice('Error fetching image', ['image' => $request['url'], 'exception' => $exception]);
self::responseError();
- // stop.
}
- Logger::debug('Got picture', ['Content-Type' => $fetchResult->getHeader('Content-Type'), 'uid' => local_user(), 'image' => $request['url']]);
+ Logger::debug('Got picture', ['Content-Type' => $fetchResult->getHeader('Content-Type'), 'uid' => DI::userSession()->getLocalUserId(), 'image' => $request['url']]);
$mime = Images::getMimeTypeByData($img_str);
$image = new Image($img_str, $mime);
if (!$image->isValid()) {
- Logger::info('The image is invalid', ['image' => $request['url'], 'mime' => $mime]);
+ Logger::notice('The image is invalid', ['image' => $request['url'], 'mime' => $mime]);
self::responseError();
// stop.
}
* ]
* @throws \Exception
*/
- private function getRequestInfo()
+ private function getRequestInfo(): array
{
$size = ProxyUtils::PIXEL_LARGE;
$sizetype = '';
* Output the image with cache headers
*
* @param Image $img
+ * @return void
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
private static function responseImageHttpCache(Image $img)
{
if (is_null($img) || !$img->isValid()) {
- Logger::info('The cached image is invalid');
+ Logger::notice('The cached image is invalid');
self::responseError();
// stop.
}
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (31536000)) . ' GMT');
header('Cache-Control: max-age=31536000');
echo $img->asString();
- exit();
+ System::exit();
}
}