L'API /osc/checkForUpdates
détecte les modifications de statut en comparant le dernier paramètre stateFingerprint
connu du client avec le paramètre fingerprint
actuel de l'appareil photo.
Entrée
Nom |
Type |
Description |
stateFingerprint |
Chaîne |
Empreinte de statut de l'appareil photo depuis le dernier appel du client à /osc/state ou /osc/checkForUpdates . |
waitTimeout |
Entier (facultatif) |
Nombre de secondes d'attente de la modification du statut sur l'appareil photo avant de renvoyer la réponse. Lorsque le délai waitTimeout expire, l'appareil photo doit renvoyer une réponse même si l'empreinte n'a pas changé. Si une modification de statut est identifiée avant l'expiration du délai waitTimeout ou si le paramètre waitTimeout est ignoré, l'appareil photo doit renvoyer immédiatement la réponse.Remarque : l'appareil photo peut renvoyer une réponse avant l'expiration du délai waitTimeout même si l'empreinte n'a pas changé, mais il est recommandé d'attendre l'expiration du délai waitTimeout . |
Remarques sur l'implémentation de l'appareil photo :
- À la réception de cet appel, l'appareil photo compare son empreinte de statut actuelle avec le paramètre
stateFingerprint
reçu. Si l'empreinte a changé, elle doit renvoyer immédiatement la nouvelle empreinte.
Sortie
Nom |
Type |
Description |
stateFingerprint |
Chaîne |
Nouvelle empreinte de statut de l'appareil photo (comme dans l'API /osc/state ). |
throttleTimeout |
Entier |
Nombre de secondes d'attente recommandé avant le prochain appel à checkForUpdates . Les clients peuvent lancer des requêtes avant l'expiration du délai throttleTimeout et les appareils photos doivent permettre ces requêtes anticipées, si possible. |
Remarques sur l'implémentation du client :
- À la réception d'une réponse, le client doit comparer le paramètre
stateFingerprint
reçu avec sa copie. S'ils diffèrent, le client doit demander le statut actuel de l'appareil photo à l'aide de l'API _/osc/state
.
- Les clients intelligents envoient des requêtes, quelle que soit la réponse de l'appareil photo. Par exemple, si un appareil photo renvoie une réponse non standard (immédiatement, avec aucune modification et une valeur faible ou 0 pour le paramètre
throttleTimeout)
), le client doit imposer son propre paramètre throttleTimeout
avant d'envoyer une autre requête checkForUpdates
à l'appareil photo.
Remarques sur la mise en œuvre de l'appareil photo :
- En réponse à la requête
checkForUpdates
, l'appareil photo doit déterminer un paramètre throttleTimeout
raisonnable. Si l'appareil photo prend en charge la logique de requête longue (répondre uniquement après le délai waitTimeout
si le statut n'a pas changé), il est possible de renvoyer throttleTimeout
avec la valeur 0
. Dans ce cas, les clients peuvent demander immédiatement des mises à jour.
- Si l'appareil photo prend en charge uniquement les réponses rapides (non recommandé), il doit renvoyer un paramètre
throttleTimeout
raisonnable afin d'éviter un trafic requête/réponse permanent avec le client. Par exemple, un paramètre throttleTimeout
raisonnable de 60 secondes permet une requête client par minute.
- Il est recommandé de renvoyer un paramètre
throttleTimeout
correspondant aux capacités de l'appareil photo. Si le serveur ne peut pas déterminer un paramètre throttleTimeout
approprié en raison d'une erreur serveur, l'appareil photo doit répondre avec un code de statut 5XX et un message JSON contenant un code d'erreur serverError
.
Erreur
Code d'erreur |
Description |
missingParameter |
stateFingerprint n'est pas spécifié. |
invalidParameterName |
Un ou plusieurs noms de paramètre d'entrée sont inconnus. |
invalidParameterValue |
Les noms de paramètre sont reconnus, mais une ou plusieurs valeurs ne sont pas valides, par exemple, waitTimeout est hors limites ou son type est incorrect. |
serverError |
Le serveur n'a pu déterminer aucune valeur throttleTimeout appropriée pour sa réponse. L'erreur serveur est identifiée par la valeur 5XX renvoyée dans la réponse. Les fabricants d'appareils photo doivent fournir une liste des codes 5XX et des statuts de serveur correspondants susceptibles de renvoyer cette erreur. |
Exemple |
Requête |
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1
{
"stateFingerprint": "12EGA33",
"waitTimeout": 300
} |
Réponse |
HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff
{
"stateFingerprint": "12EGA86",
"throttleTimeout": 60
} |
Requête |
POST /osc/checkForUpdates HTTP/1.1
Host: [camera ip address]:[httpUpdatesPort]
Content-Type: application/json;charset=utf-8
Accept: application/jsonContent-Length: {CONTENT_LENGTH}
X-XSRF-Protected: 1
{
"stateFingerprint": "12EGA33",
"waitTimeout": 300
} |
Réponse |
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=utf-8
Content-Length: {CONTENT_LENGTH}
X-Content-Type-Options: nosniff
{
"name": "camera.checkForUpdates",
"state": "error",
"error": {
"code": "missingParameter",
"message": "parameter stateFingerprint is missing."
}
} |