/**
* Execute page -- can output a file directly or show a listing of them.
*
- * @param string $subPage Subpage, e.g. in
+ * @param string|null $subPage Subpage, e.g. in
* https://example.com/wiki/Special:UploadStash/foo.jpg, the "foo.jpg" part
* @return bool Success
*/
$scalerThumbUrl = $scalerBaseUrl . '/' . $file->getUrlRel() .
'/' . rawurlencode( $scalerThumbName );
+ // If a thumb proxy is set up for the repo, we favor that, as that will
+ // keep the request internal
+ $thumbProxyUrl = $file->getRepo()->getThumbProxyUrl();
+
+ if ( strlen( $thumbProxyUrl ) ) {
+ $scalerThumbUrl = $thumbProxyUrl . 'temp/' . $file->getUrlRel() .
+ '/' . rawurlencode( $scalerThumbName );
+ }
+
// make an http request based on wgUploadStashScalerBaseUrl to lazy-create
// a thumbnail
$httpOptions = [
'timeout' => 5 // T90599 attempt to time out cleanly
];
$req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions, __METHOD__ );
+
+ $secret = $file->getRepo()->getThumbProxySecret();
+
+ // Pass a secret key shared with the proxied service if any
+ if ( strlen( $secret ) ) {
+ $req->setHeader( 'X-Swift-Secret', $secret );
+ }
+
$status = $req->execute();
if ( !$status->isOK() ) {
$errors = $status->getErrorsArray();
);
}
- return $file->getRepo()->streamFile( $file->getPath(),
+ return $file->getRepo()->streamFileWithStatus( $file->getPath(),
[ 'Content-Transfer-Encoding: binary',
'Expires: Sun, 17-Jan-2038 19:14:07 GMT' ]
- );
+ )->isOK();
}
/**