apidae-tourisme / apidae-php

Official API to access Apidae touristic data

Home Page:http://www.apidae-tourisme.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"No location registered for query" après le passage en version 1.0.4

raphaelriehl opened this issue · comments

Bonjour à tous,

J'utilise depuis 1 an la version 1.0.2, sans soucis.
J'ai tenté la mise à jour ce matin via composer, pour passer en version 1.0.4.

  • Removing react/promise (v2.7.1)
  • Removing guzzlehttp/streams (3.0.0)
  • Removing guzzlehttp/ringphp (1.1.1)
  • Installing ralouphie/getallheaders (2.0.5): Loading from cache
  • Installing psr/http-message (1.0.1): Loading from cache
  • Installing guzzlehttp/psr7 (1.5.2): Loading from cache
  • Installing guzzlehttp/promises (v1.3.1): Loading from cache
  • Updating guzzlehttp/guzzle (5.3.3 => 6.3.3): Loading from cache
  • Updating guzzlehttp/command (0.7.1 => 1.0.0): Loading from cache
  • Updating guzzlehttp/guzzle-services (0.5.0 => 1.1.3): Loading from cache
  • Updating sitra-tourisme/sitra-api-php (1.0.2 => 1.0.4): Loading from cache

Après la mise à jour, j'ai un soucis avec l'ensemble de mes appels. Lorsque j'execute ce code par exemple:
$client->searchObject([ 'query' => [ // l'ensemble des paramètres voulus ] ]);

Je me retrouve avec l'erreur suivante:
There was an error executing the searchObject command: No location registered for query

Savez-vous d'où vient le problème?

Merci d'avance.

Je confirme le problème avec une installation toute neuve sur la 1.0.4, même message d'erreur.
Pas trouvé d'où ça pouvait venir pour l'instant.

Les plus gros changements sont liés à ce commit : 7a74125

Et notamment l'ajout de ApidaeSerializer.php

Au début je pensais que c'était un pb de baseUrl / baseUri (il y a eu un changement d'appellation du paramètre dans la config) mais ça ne semble pas être le problème.

Ceci dit il faudra remettre à jour les examples dans sitra-tourisme/sitra-api-php/examples/

Et notamment y remplacer :
include __DIR__."/../vendor/autoload.php";
par :
include __DIR__."/../../../autoload.php";

Ça me rassure, je ne suis pas le seul.

En fouillant un peu dans le code, j'ai trouvé le problème:
1/ Dans la class ApidaeSerializer, il y a ce test:

if (!isset($this->locations[$location])) {
    throw new \RuntimeException("No location registered for $name");
}

Et le test attend l'une des valeurs suivantes:

  • body
  • query
  • header
  • json
  • xml
  • formParam
  • multipart

Or, lorsque l'erreur apparaît il s'agit de la valeur suivante qui est transmise: postField

Solution:

Ouvrir les fichiers:

Remplacez toutes les valeurs "postField" par "formParam".

PS: je ne suis pas sur de l'impact, n'ayant jamais mis les mains dans le code de cet outil... Mais pour ma part ça fonctionne nickel.

Effectivement j'étais arrivé à la même conclusion grâce à guzzle/guzzle-services#119 : je vais faire une demande de MAJ cette après-midi en + de 2 ou 3 petits correctifs ;)

commented

Bonjour Messieurs !

Un grand merci à tous les deux et notamment à Pierre pour la publication du hotfix.
La version 1.0.5 ne devrait plus poser de problème.

Je vous laisse tester et confirmer ?

Bonne soirée.
Serge

Pour moi c'est bon :

Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Updating sitra-tourisme/sitra-api-php (1.0.4 => 1.0.5): Downloading (100%)         
Writing lock file
Generating autoload files

http://.../test/vendor/sitra-tourisme/sitra-api-php/examples/demo.php

int(3) int(3) int(0) int(0) int(9251) int(9251) int(682) int(682) int(146656) int(146656) int(163512) int(163512)

C'est pas très clair comme test mais c'est bien le résultat attendu ;)

Merci pour la correction rapide !
Je confirme que pour moi aussi, c'est bon.

Je clôture donc ce ticket.