Skip to content
Snippets Groups Projects
Commit c5d68798 authored by Ghislain Loas's avatar Ghislain Loas
Browse files

dev #78660 improve thumbnail from url

parent b47eefd2
Branches
Tags
4 merge requests!2871Wip,!2869Master,!2865Dev#78660 explo melun recuperation des infos oai de la plateforme decalog,!2863Dev#78660 explo melun recuperation des infos oai de la plateforme decalog
Pipeline #5184 failed with stage
in 1 minute and 3 seconds
......@@ -53,4 +53,23 @@ class Class_WebService_Abstract {
$params = array_filter([$url,$options]);
return call_user_func_array([$this->getHttpClient(),'open_url'],$params); // avoid mocking of 2nd parameters
}
public function httpGetResponse($url, $options= []) {
$params = array_filter([$url,$options]);
return call_user_func_array([$this->getHttpClient(), 'getResponse'], $params); // avoid mocking of 2nd parameters
}
public function httpTypeFrom($response, $filter=[]) {
if (!$content_type = $response->getHeader('Content-Type'))
return;
$parts = explode('/', current(explode(';', $content_type)));
if (!$filter)
return $parts[1];
if (in_array(current($parts), $filter))
return $parts[1];
}
}
\ No newline at end of file
......@@ -80,12 +80,11 @@ class Class_WebService_BibNumerique_Vignette extends Class_WebService_Abstract {
return;
}
if (!$poster = $this->httpGet($url)) {
$this->getLogger()->log($this->_('Impossible de télécharger l\'image "%s" sur le serveur', $url));
return;
}
$response = $this->httpGetResponse($url);
if (!$response->isSuccessful() || (!$poster = $response->getBody()))
return $this->getLogger()->log($this->_('Impossible de télécharger l\'image "%s" sur le serveur', $url));
if(!$filename = $this->_initFilename($url, $poster, $album))
if(!$filename = $this->_initFilename($url, $poster, $album, $response))
return;
$album->setUploadMover('fichier', $this->_upload_mover);
......@@ -102,10 +101,17 @@ class Class_WebService_BibNumerique_Vignette extends Class_WebService_Abstract {
}
protected function _initFilename($url, $poster, $album) {
$parts = explode('/', $url);
$filename = array_pop($parts);
$filename = $this->_formatFilename($filename, $album);
protected function _initFilename($url, $poster, $album, $response) {
$filename = ($type = $this->httpTypeFrom($response, ['image']))
? md5($url) . '.' . $type
: null;
if (!$filename) {
$parts = explode('/', $url);
$filename = array_pop($parts);
$filename = $this->_formatFilename($filename, $album);
}
$temp_name = PATH_TEMP . $filename;
if (false === $this->getFileWriter()->putContents($temp_name, $poster)) {
......
......@@ -32,6 +32,11 @@ class Class_WebService_SimpleWebClient {
public function open_url($url,$options = []) {
return $this->getResponse($url, $options)->getBody();
}
public function getResponse($url, $options=[]) {
$httpClient = $this->getHttpClient();
if (isset($options['headers']))
......@@ -41,7 +46,7 @@ class Class_WebService_SimpleWebClient {
$httpClient->setMethod(Zend_Http_Client::GET);
$httpClient->setUri($url);
return $httpClient->request()->getBody();
return $httpClient->request();
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment