parametres = $parametres; $this->ressources = $ressources; $this->wpBot = $conteneur->getWikipediaBot(); $url = $conteneur->getParametre('url_service').DS.$this->ressources[0]; $this->serviceUrl = $conteneur->getUrl($url); } public function consulter() { $this->idPage = $this->ressources[0]; $this->definirValeurParDefautDesParametres(); $this->verifierParametres(); $resultat = $this->obtenirResultat(); return $resultat; } private function definirValeurParDefautDesParametres() { if (isset($this->parametres['retour']) == false) { $this->parametres['retour'] = self::MIME_JSON; } if (isset($this->parametres['txt.format']) == false) { $this->parametres['txt.format'] = 'txt'; } } private function verifierParametres() { $erreurs = array(); if (isset($this->parametres['retour']) == false) { $erreurs[] = "Le paramètre type de retour 'retour' est obligatoire."; } if ($this->verifierValeurParametreTxtFormat() == false) { $erreurs[] = "Le format du texte '{$this->parametres['txt.format']}' n'est pas supporté."; } if (count($erreurs) > 0) { $message = implode('
', $erreurs); $code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE; throw new Exception($message, $code); } } private function verifierValeurParametreRetour() { return in_array($this->parametres['retour'], $this->retourFormatsSupportes); } private function verifierValeurParametreTxtFormat() { return in_array($this->parametres['txt.format'], $this->txtFormatsSupportes); } private function obtenirResultat() { $this->chargerPageWp(); $resultat = new ResultatService(); $resultat->corps = $this->infosPage; $resultat->mime = $this->parametres['retour']; return $resultat; } private function chargerPageWp() { $options = array('langue' => 'fr'); $this->wpBot = new WikipediaBot($options); $this->wpBot->chargerPage($this->idPage); $this->infosPage['id'] = $this->idPage; $this->infosPage['titre'] = $this->wpBot->getPageTitre(); $this->infosPage['texte'] = $this->getTxt(); $this->infosPage['mime'] = $this->getTypeMime(); $this->infosPage['href'] = $this->getHref(); } private function getTxt() { $txt = ''; if (isset($this->parametres['txt.section.position'])) { $positionSection = $this->parametres['txt.section.position']; $txt = $this->wpBot->getSectionParNumero($positionSection); } else if (isset($this->parametres['txt.section.titre'])) { $titreSection = $this->parametres['txt.section.titre']; if ($titreSection == 'taxobox') { $txt = $this->wpBot->extraireTaxobox(); } else { $txt = $this->wpBot->getSectionParTitre($titreSection); } } else { $txt = $this->wpBot->getPageTxt(); } if ($this->parametres['txt.format'] == 'htm') { $txt = $this->wpBot->rendre($txt); } return $txt; } private function getTypeMime() { $mime = ''; if ($this->parametres['txt.format'] == 'htm') { $mime = 'txt/html'; } else if ($this->parametres['txt.format'] == 'txt') { $mime = 'text/plain'; } return $mime; } private function getHref() { $href = ''; $this->serviceUrl->setRequete($this->parametres); $href = $this->serviceUrl->getUrl(); return $href; } } ?>