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

Merge branch 'dev#74761_build_green_php' into 'hotline'

dev #74761 use php dom parsing

See merge request !2632
parents 343bd938 53ee1e6c
Branches
Tags
5 merge requests!2660Master,!2636Master,!2635Master,!2634Hotline,!2632dev #74761 use php dom parsing
Pipeline #4043 passed with stage
in 36 minutes and 51 seconds
- ticket #74761 : Administration : maintenance de la détection des erreurs des web-services liés à l'enrichissement.
\ No newline at end of file
......@@ -29,49 +29,49 @@ class Class_WebService_AllServices {
private static $_http_client;
private $services = [
'Amazon' => ['valeurs' => ['isbn' => '2709624931', 'auteur' => 'zola', 'page' => '1'],
'services' => ['rend_avis(@isbn,@page)',
'rend_analyses(@isbn)',
'rend_bibliographies(@isbn)',
'rend_livres_auteur(@auteur,@page)',
'rend_livres_similaires(@isbn)',
'rend_images(@isbn)']],
'Amazon' => ['valeurs' => ['isbn' => '2709624931', 'auteur' => 'zola', 'page' => '1'],
'services' => ['rend_avis(@isbn,@page)',
'rend_analyses(@isbn)',
'rend_bibliographies(@isbn)',
'rend_livres_auteur(@auteur,@page)',
'rend_livres_similaires(@isbn)',
'rend_images(@isbn)']],
'AmazonSonores' => ['valeurs' => ['ean' => '0794881405923',
'asin' => 'B00005BH6V',
'volume' => '1',
'track' => '1'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'AmazonSonores' => ['valeurs' => ['ean' => '0794881405923',
'asin' => 'B00005BH6V',
'volume' => '1',
'track' => '1'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'AmazonVideo' => ['valeurs' => ['ean' => '3388334500012'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'AmazonVideo' => ['valeurs' => ['ean' => '3388334500012'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'AmazonCdrom' => ['valeurs' => ['ean' => '5030931031182'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'AmazonCdrom' => ['valeurs' => ['ean' => '5030931031182'],
'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
'Lastfm' => ['valeurs' => ['titre' => 'Unplugged', 'auteur' => 'Eric Clapton'],
'services' => ['getAlbum(@titre,@auteur)',
'getMorceaux(@titre,@auteur)',
'getPhotos(@auteur)',
'getDiscographie(@auteur)']],
'Lastfm' => ['valeurs' => ['titre' => 'Unplugged', 'auteur' => 'Eric Clapton'],
'services' => ['getAlbum(@titre,@auteur)',
'getMorceaux(@titre,@auteur)',
'getPhotos(@auteur)',
'getDiscographie(@auteur)']],
'Premiere' => ['valeurs' => ['titre' => 'avatar'],
'services' => ['get_resume(@titre)', 'getImages(@titre)']],
'Premiere' => ['valeurs' => ['titre' => 'avatar'],
'services' => ['get_resume(@titre)', 'getImages(@titre)']],
'LibraryThing' => ['valeurs' => ['isbn' => '978-2-07-061239-0'],
'services' => ['rend_isbn_proches(@isbn)']],
'LibraryThing' => ['valeurs' => ['isbn' => '978-2-07-061239-0'],
'services' => ['rend_isbn_proches(@isbn)']],
'Fnac' => ['valeurs' => ['isbn' => '978-2-7427-6501-0'],
'services' => ['getResume(@isbn)']],
'Fnac' => ['valeurs' => ['isbn' => '978-2-7021-6363-4'],
'services' => ['getResume(@isbn)']],
'OAI' => ['valeurs' => ['oai_handler' => 'http://oai.bnf.fr/oai2/OAIHandler',
'set' => 'gallica'],
'services' => ['getSetsFromHandler(@oai_handler)',
'getRecordsFromHandlerAndSet(@oai_handler, @set)']],
'OAI' => ['valeurs' => ['oai_handler' => 'http://oai.bnf.fr/oai2/OAIHandler',
'set' => 'gallica'],
'services' => ['getSetsFromHandler(@oai_handler)',
'getRecordsFromHandlerAndSet(@oai_handler, @set)']],
'SRU' => ['valeurs' => ['service_url' => 'http://bvpb.mcu.es/i18n/sru/sru.cmd',
'query' => 'spain'],
'services' => ['search(@service_url, @query)']]];
'SRU' => ['valeurs' => ['service_url' => 'http://bvpb.mcu.es/i18n/sru/sru.cmd',
'query' => 'spain'],
'services' => ['search(@service_url, @query)']]];
public static function runServiceAfiBiographie($args) {
......@@ -191,30 +191,38 @@ class Class_WebService_AllServices {
}
public function testService($id_service,$id_fonction) {
if(!$id_service) return false;
$instruction="\$cls=new Class_WebService_".$id_service."();";
eval($instruction);
$num_fonction = 0;
foreach($this->services[$id_service]["services"] as $instruction)
{
$num_fonction++;
if($id_fonction and $num_fonction != $id_fonction) continue;
public function testService($id_service, $id_function) {
if(!$id_service)
return false;
// On met les arguments
foreach($this->services[$id_service]["valeurs"] as $param => $valeur)
{
$instruction=str_replace("@".$param,"'".$valeur."'",$instruction);
}
$cls = 'Class_WebService_' . $id_service;
$cls = new $cls;
$num_function = 0;
$ret = [];
foreach($this->services[$id_service]["services"] as $instruction) {
$num_function++;
if($id_function and $num_function != $id_function)
continue;
// on fabrique l'instruction d'appel au web service et on l'execute
$instruction="\$test=\$cls->".$instruction.";";
eval($instruction);
$function_name = '';
$function_param = '';
// On compose le resultat affichable
if(!$test) $ret[$id_service][$num_fonction]="<b><font family='verdana' color='red'><b>Le service n'a renvoyé aucun résultat</b></font></b>";
else $ret[$id_service][$num_fonction]=$test;
foreach($this->services[$id_service]["valeurs"] as $key => $value) {
$function_name = str_replace("(@$key)", '', $instruction);
$function_param = $value;
$response = call_user_func([$cls, $function_name], $function_param);
$ret[$id_service][$num_function] = $response
? $response
: sprintf('<b><font family="verdana" color="red"><b>%s</b></font></b>',
$this->_('Le service n\'a renvoyé aucun résultat'));
}
}
return $ret;
}
......@@ -222,5 +230,4 @@ class Class_WebService_AllServices {
public function getServices() {
return $this->services;
}
}
?>
\ No newline at end of file
}
\ No newline at end of file
......@@ -93,22 +93,15 @@ class Class_WebService_Fnac extends Class_WebService_Abstract {
protected function extractSummaryFromProduct($html) {
$section_html = 'id="ficheResume"';
if(!$sub_html = striPos($html, $section_html))
$doc = new DOMDocument();
if(!@$doc->loadHTML($html))
return '';
$sub_html = $sub_html + strlen($section_html);
$sub_html_end = strPos($html, "</section", $sub_html);
$section = substr($html, $sub_html, ($sub_html_end - $sub_html));
$start_string = 'whiteContent">';
if (!$pos = striPos($section, $start_string))
$xpath = new DOMXPath($doc);
if(!$resume = $xpath->query('//section[@id="ficheResume"]//div[contains(@class, "whiteContent")]')->item(0))
return '';
$pos = $pos + strlen($start_string);
$posfin = strPos($section, "</div>", $pos);
return trim(substr($section, $pos, ($posfin - $pos)));
return $resume->nodeValue;
}
......
......@@ -50,7 +50,7 @@ class SystemeControllerWebServicesActionTest extends Admin_AbstractControllerTes
public function webServiceFnacGetResumeShouldWork() {
$this->dispatch('/admin/systeme/webservices/id_service/Fnac/id_fonction/1');
$this->assertXPathContentContains('//pre[@class="resultat"]',
'Tandis que Lisbeth Salander coule des journées',
'Un campus prestigieux figé sous la neige',
$this->_response->getBody());
}
......
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