Freecodecamp: L'API Météo FCC renvoie la météo au Japon au hasard

CrĂ©Ă© le 11 mars 2018  Â·  46Commentaires  Â·  Source: freeCodeCamp/freeCodeCamp

Nom du défi


https://www.freecodecamp.org/learn/coding-interview-prep/take-home-projects/show-the-local-weather

Description du problĂšme

De nombreux campeurs ont signalĂ© des problĂšmes avec leurs projets mĂ©tĂ©orologiques via la catĂ©gorie Aide du forum. Au dĂ©but, j'ai supposĂ© qu'il s'agissait simplement d'un code incorrect, mais j'ai ensuite remarquĂ© le problĂšme de mon propre projet mĂ©tĂ©o et d'innombrables autres au cours de la semaine derniĂšre. Il semble que l'API glitch renvoie au hasard les donnĂ©es mĂ©tĂ©orologiques pour le Japon. Si j'ouvre le projet d'un campeur en utilisant fetch, jQuery $ .ajax, $ .getJSOn ou une autre mĂ©thode pour obtenir les donnĂ©es mĂ©tĂ©orologiques Ă  partir de valeurs lat et lon valides, 75% du temps, la rĂ©ponse renvoyĂ©e est pour la mĂ©tĂ©o japonaise. Vous pouvez mĂȘme voir le problĂšme apparaĂźtre dans la dĂ©mo mĂ©tĂ©o Ă  https://codepen.io/freeCodeCamp/full/bELRjV

Informations sur le navigateur

  • Nom du navigateur, version: Chrome 64.0.3282.186 (version officielle) (64 bits)
  • SystĂšme d'exploitation: Windows 8.1
  • Mobile, ordinateur de bureau ou tablette: ordinateur de bureau

Votre code

N / A

Capture d'Ă©cran


image

help wanted projects-frontend

Tous les 46 commentaires

Je pense avoir identifié le problÚme! Il s'agit simplement de lire à partir du cache , qui contient les données japonaises.

Le cache n'est utilisĂ© que s'il y a plus de soixante requĂȘtes dans sa file d'attente (ligne 50) Cela signifie que _parfois_ il retournera des rĂ©sultats corrects; mais _parfois_ il renverra ces rĂ©sultats inattendus.

Comment cela peut-il ĂȘtre rĂ©solu? Nous avons trois options ...

  • Supprimer le cache
  • Rendez le cache fonctionnel et utilisez rĂ©ellement les donnĂ©es de latitude et de longitude pour dĂ©cider d'utiliser le cache.

    • Rejeter complĂštement la demande si le serveur se sent surchargĂ© ( recommandĂ© pour l'instant )

Puisqu'il s'agit d'un besoin d'aide, j'adorerais jeter un Ɠil Ă  ceci; Cependant, Ă©tant donnĂ© que cela perturbe les projets et que j'ai besoin de dormir, si quelqu'un veut rĂ©soudre ce problĂšme (le moyen le plus simple est de changer le cache pour rejeter les demandes), alors faites-le!

D'accord, je pense que j'ai résolu le problÚme . Je n'ai pas pu le tester, car je n'avais pas de clé API - et il y a bien sûr le risque d'un DOS étant donné que nous n'avons jamais recours à la mise en cache.

Ainsi, des amĂ©liorations pourraient ĂȘtre apportĂ©es. Devrions-nous, peut-ĂȘtre, rejeter les demandes lĂ  oĂč nous enverrions autrement les donnĂ©es japonaises? C'est Ă  vous de dĂ©cider. Je le rĂ©pare temporairement et j'essaierai de l'amĂ©liorer demain.

Je ne pense pas que je puisse faire une pull request à l'API glitch.me (à moins, bien sûr, qu'il y ait un référentiel sur GitHub que j'ai manqué); donc une personne disposant d'une autorisation en écriture devra fusionner mes modifications aprÚs les avoir testées avec une clé API fonctionnelle.

Bon, je suis foutu en ce moment; mais j'ai réalisé que la limitation de débit est nécessaire. Je corrigerai bientÎt mon code afin que les demandes soient refusées si trop d'appels d'API ont été effectués.

D'accord, je pense maintenant avoir crĂ©Ă© une solution Ă  court terme. Je ne suis pas sĂ»r de ce que nous voulons faire Ă  propos de la collecte de donnĂ©es effrayante - les coordonnĂ©es ont tendance Ă  ĂȘtre assez prĂ©cises (devrions-nous les arrondir pour les achats en cache?). Nous devons absolument marquer les choses si elles proviennent du cache, pour que cela ne soit pas prĂ©cis Ă  100%.

Quoi qu'il en soit, pour l'instant, chaque fois que le code essaie d'accéder au cache, il enverra à la place un message d'erreur.

 function getBestCachedData(lon, lat){
+ /*
   var fs = require('fs');
   var obj = JSON.parse(fs.readFileSync('./data/cache.json', 'utf8'));
+ */
-  return obj;
+  return {
+     "error": "This API is overloaded with requests at the moment. Please try again in a few seconds and see if you get a response"
+  }
  }

Salut @ joker314 J'accepte votre solution de rejet avec une erreur. Pouvez-vous s'il vous plaĂźt faire un PR? Merci beaucoup d'avoir pris le temps d'enquĂȘter lĂ -dessus.

@QuincyLarson pourriez-vous guider qui a accĂšs Ă  ce https://fcc-weather-api.glitch.me/ ? Je peux ĂȘtre dĂ©lĂ©guĂ© si vous ĂȘtes le propriĂ©taire.

@raisedadead J'adorerais, mais j'ai regardé autour de moi et je ne suis pas sûr si glitch.me prend réellement en charge les pull requests - à moins que vous n'en ayez également une copie sur GitHub ou qu'il me manque quelque chose?

EDIT: Bien sûr, le code corrigé se trouve sur mon remix .

@ joker314 oui vous avez raison, nous mettrons à jour le projet à partir de votre remix. Veuillez ignorer mon commentaire précédent.

J'attends Quincy la confirmation de l'accĂšs Ă  ce projet. Merci beaucoup pour votre aide.

@raisedadead -

Alors, combien de temps ce correctif temporaire sera-t-il en place?

Ce ne sera pas temporaire, avec l'erreur, on saura que le problĂšme est dĂ» aux limites de taux.

Il s'agissait d'un wrapper créé au-dessus de l'API OpenWeatherMaps, qui ne supportait pas https je pense, et donc en conflit avec codepen.

Si tel est le cas, cela ne fera qu'empirer Ă  mesure que de plus en plus de campeurs crĂ©eront des projets mĂ©tĂ©orologiques. Le taux limite peut-il ĂȘtre augmentĂ©?

Oui, vous pouvez opter pour une version payante en intégrant directement l'API au lieu du wrapper glitch dans le défi.

Voir https://openweathermap.org/price

@raisedadead Il ressemble au code original destiné à y avoir un cache. Si tel est le cas, et si nous pouvons clarifier les détails sur ce à quoi nous voulons que cela ressemble pour respecter la vie privée, alors espérons que nous pourrons contourner la limitation de débit?

AprĂšs rĂ©flexion, il est peut-ĂȘtre prĂ©fĂ©rable de renvoyer des donnĂ©es valides au lieu d'un message d'erreur. Modifions plutĂŽt le cache pour gĂ©nĂ©rer des conditions mĂ©tĂ©orologiques alĂ©atoires, et dĂ©finissons l'emplacement sur "API occupĂ©e, rĂ©essayez plus tard pour de vrais rĂ©sultats"?

Que pensez-vous de cela, @raisedadead?

En tant que personne qui vient de terminer ce projet et qui a eu le problÚme de recevoir des données météorologiques japonaises ou (la plupart du temps) aucune donnée, je voudrais dire que recevoir des données est plus utile que pas de données. Au moins avec les données japonaises, je pouvais voir si mon code fonctionnait indépendamment du fait qu'il montre une météo précise.

Eh bien en théorie, nous pourrions envoyer des données aléatoires. Mais nous ne voulons pas recevoir de plaintes sur les données incorrectes ... ce qui, je suis sûr, sera un cas.

Quoi qu'il en soit, si cela aide permet d'avoir les données aléatoires.

@QuincyLarson pouvez-vous s'il vous plaĂźt guider avec la demande ci-dessus ?

Je pense que nous devrions envoyer de fausses données, mais dites clairement que ce sont des fausses Faites en sorte que le nom de l'emplacement soit «API occupé, fausses données» et que la météo, les coordonnées, etc. soient randomisées dans la réponse. De cette façon, les gens savent pourquoi les résultats ne sont pas précis; et pourtant tout fonctionnera toujours pour les développeurs.

Pensées?

Si vous envoyez de fausses données, je pense que cela irait à l'encontre de l'objectif de fournir les données météorologiques actuelles pour un emplacement spécifique. J'aime l'idée de @ joker314 de déterminer comment nous voulons créer le cache et l'implémenter.

Pensez-vous à épingler les discussions récentes du forum sur la page du projet afin que les codeurs sachent qu'il y a des problÚmes avec le projet et ne passent pas de temps inutile à essayer de résoudre quelque chose qu'ils n'ont pas de contrÎle?

BTW, je pense que l'url d'image du icon n'est pas retournée comme décrit dans https://fcc-weather-api.glitch.me/.
Il disait Images links are included in the JSON under weather[0].icon , ce qui ne l'est pas.
J'ai remarqué que la solution de démonstration écrivait css pour dessiner l'icÎne.

Merci de nous avoir fait part de ce problÚme potentiel, mais l'exemple de demande et de réponse inclut le champ souhaité. Quelle demande particuliÚre avez-vous faite sans ce champ?

@ joker314 Merci d' avoir répondu.

https://fcc-weather-api.glitch.me/api/current?lon=39.988&lat=116.3000

{"coord":{"lon":139,"lat":35},"weather":[{"id":803,"main":"Clouds","description":"broken clouds"}],"base":"stations","main":{"temp":28.23,"pressure":1011,"humidity":74,"temp_min":26,"temp_max":31},"visibility":10000,"wind":{"speed":3.6,"deg":230},"clouds":{"all":75},"dt":1499396400,"sys":{"type":1,"id":7616,"message":0.0043,"country":"JP","sunrise":1499369792,"sunset":1499421666},"id":1851632,"name":"Shuzenji","cod":200}

Je n'ai pas remarquĂ© que l'exemple fonctionnait bien, donc je suppose que cela pourrait ĂȘtre dĂ» Ă  l'emplacement ou Ă  la mĂ©tĂ©o particuliĂšre?

@ Em-Ant Il semble que ce soit un problĂšme avec l'application exĂ©cutĂ©e sur Glitch. Pourriez-vous jeter un Ɠil au cache et voir si c'est quelque chose que nous pouvons effacer?

J'ai fait quelques tests rapides, je pense que c'est corrigé. Si quelqu'un rencontre toujours des problÚmes, n'hésitez pas à rouvrir ce numéro.

@ moT01 Quel genre de tests avez-vous fait? Le problÚme est qu'il existe une limite de taux par compte FCC gratuit utilisé pour passer des appels vers l'API OpenWeather. Une fois ces limites de taux atteintes, le proxy Glitch renvoie les coordonnées du Japon. La seule raison pour laquelle il n'est pas considéré comme un problÚme pour le moment, c'est que ce projet est désormais facultatif dans le programme, de sorte qu'il n'y a pas autant de succÚs qu'il y en avait auparavant. DÚs que vous atteignez le Glitch 60 fois en une minute, le JSON suivant est renvoyé:

{
  "coord": {
    "lon": 139,
    "lat": 35
  },
  "weather": [
    {
      "id": 803,
      "main": "Clouds",
      "description": "broken clouds"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 28.23,
    "pressure": 1011,
    "humidity": 74,
    "temp_min": 26,
    "temp_max": 31
  },
  "visibility": 10000,
  "wind": {
    "speed": 3.6,
    "deg": 230
  },
  "clouds": {
    "all": 75
  },
  "dt": 1499396400,
  "sys": {
    "type": 1,
    "id": 7616,
    "message": 0.0043,
    "country": "JP",
    "sunrise": 1499369792,
    "sunset": 1499421666
  },
  "id": 1851632,
  "name": "Shuzenji",
  "cod": 200
}

Pouvez-vous rouvrir ce problÚme, car il figure toujours dans ma liste de tùches à résoudre?

Ahh, oui - je viens de passer quelques appels rapides à l'API et j'ai pu obtenir la météo correcte. Je suppose que je devrais probablement m'enquérir un peu plus avant de clÎturer les problÚmes.

J'ai commencé à travailler sur un correctif dÚs le début de Hacktoberfest, puis je me suis fortement impliqué dans le processus d'assurance qualité. Le reste appartient à l'histoire. Je dois revoir cela à nouveau, car maintenant j'ai une bien meilleure compréhension de Node et Express pour pouvoir mettre en place une solution fonctionnelle.

Il existe un cache statique qui n'a qu'une seule entrée (l'emplacement au Japon).

Nous pourrions le rĂ©parer en supprimant le limiteur de dĂ©bit (je ne sais pas si c'est une bonne idĂ©e, car nous n'avons qu'une seule clĂ© API), ou renvoyer une erreur de limite de taux au cas oĂč nous dĂ©passerions le quota de demandes.

Quoi qu'il en soit, ce projet api sur glitch appartient à @MiloATH , et nous ne pouvons pas le modifier sans le «forger», c'est-à-dire créer une nouvelle application avec une nouvelle URL.

J'ai envoyé une demande d'adhésion sur https://glitch.com/edit/#!/fcc -weather-api en utilisant le compte camperbot à Milo.

Cela ressemble à de bonnes idées! Il y a une troisiÚme option; pour réparer le cache afin que les données y soient réellement stockées - ou pour envoyer des données aléatoires si le limiteur de débit est touché.

Je crains que le dĂ©passement de la limite de dĂ©bit ne soit pas une bonne idĂ©e car la clĂ© API pourrait ĂȘtre rĂ©voquĂ©e dans de telles circonstances, et nous pourrions ne pas obtenir de rĂ©sultats de l'API dans tous les cas.

@ joker314 J'allais déjà dans la direction de votre troisiÚme option.

J'ai transmis une invitation au projet glitch.

Le point final pourrait ĂȘtre nettement meilleur. Je pense que nous devrions construire un repo sĂ©parĂ© avec CI et dĂ©ployer sur quelque chose de plus mature comme Heroku (version gratuite). Cela nous permettrait de travailler plus facilement sur le projet.

Nous ne déployons plus sur heroku. Nous allons utiliser Glitch pour le moment. Cela signifie que s'il existe un projet alternatif, nous sommes heureux de le déployer sous le compte de freeCodeCamp sur Glitch et de remplacer le défi existant dans le programme.

@raisedadead @RandellDawson
Salut! Des mises Ă  jour Ă  ce sujet?
Ce serait génial de voir quelques diagrammes avec l'architecture et le flux de données (et éventuellement les noms de fichiers associés)

@ Hash2C Vous pouvez remixer le projet Glitch existant (illustré ci-dessous) pour voir et corriger le projet.

https://glitch.com/edit/#!/fcc -weather-api? path = server.js: 1: 0

Merci @RandellDawson , j'y ai travaillé, j'espÚre pouvoir terminer un premier brouillon jusqu'à jeudi

@ Hash2C Prenez votre temps pour bien faire les choses. Ce bogue est lĂ  depuis un certain temps.

Merci @RandellDawson , je ferai de mon mieux.
Je vais avoir besoin d'en savoir un peu plus sur les contraintes actuelles.
J'ai lu ci-dessus que nous avons une limite de 60 visites par minute, ce qui semble ĂȘtre le niveau gratuit de la tarification OpenWeather. Existe-t-il un moyen d'augmenter cette limite? Vous aimez crĂ©er d'autres abonnements Ă  OW? Existe-t-il d'autres «sources de vĂ©rité» gratuites que nous pourrions utiliser avec OW?

Edit: De plus, quel type de retard serait acceptable Ă  livrer? 5min? 15 minutes? 1h? 3h?

Edit2: Il semble que OW "Mise à jour des données de l'API météo" est "<2 heures" comme indiqué dans ce tableau
https://openweathermap.org/price
Le mĂȘme tableau nous indique que la disponibilitĂ© n'est que de 95%

Existe-t-il un moyen d'augmenter cette limite? Vous aimez créer d'autres abonnements à OW?

Ils peuvent également avoir des limites sur l'adresse IP (pas sûr), donc la création d'autres abonnements ne serait pas utile.

Existe-t-il d'autres «sources de vérité» gratuites que nous pourrions utiliser avec OW?

Pas sur.

Edit2: Il semble que OW "Mise à jour des données de l'API météo" est "<2 heures" comme indiqué dans ce tableau

Je dĂ©veloppe actuellement mon propre projet mĂ©tĂ©o en utilisant la version gratuite d'OpenWeather et j'ai envisagĂ© de simplement vĂ©rifier si la requĂȘte est Ă  moins de 10 minutes de la derniĂšre requĂȘte, puis d'afficher les derniĂšres donnĂ©es renvoyĂ©es pour le mĂȘme lat / lon.

Je pense que nous pouvons Ă©galement mettre Ă  jour les instructions du dĂ©fi pour informer le dĂ©veloppeur que nous renverrons une rĂ©ponse spĂ©ciale si une limite est atteinte, afin qu'il puisse informer l'utilisateur de l'application que les donnĂ©es ne sont peut-ĂȘtre pas Ă  jour. Nous voudrions toujours renvoyer les mĂȘmes donnĂ©es que nous sommes actuellement (afin de ne pas casser les anciens projets en utilisant l'API FCC). Nous ajouterions simplement une propriĂ©tĂ© supplĂ©mentaire Ă  la rĂ©ponse. Qu'est-ce que tu penses?

J'ai créé ce référentiel pour qu'il soit plus facile de tester localement.
https://github.com/Hash2C/fccWeatherApiDraft

Je pense que les 3 principaux cas d'utilisation (pour l'instant) sont déjà couverts

  • Si les coordonnĂ©es sont invalides / inexistantes, envoyez une erreur
    sinon, convertissez les coordonnées dans un format pratique, puis nous essayons d'atteindre le cache
  • Si les coordonnĂ©es demandĂ©es sont mises en cache

    • Si l'horodatage est dans le delta acceptable: envoyer les donnĂ©es mises en cache (1)

    • else: dĂ©finissez les donnĂ©es simulĂ©es en tant que donnĂ©es mises en cache (en cas d'Ă©chec ultĂ©rieur de l'appel d'API OpenWeather)

  • else: dĂ©finissez les donnĂ©es simulĂ©es comme quelque chose que nous dĂ©cidons (en cas d'Ă©chec ultĂ©rieur de l'appel Ă  l'API OpenWeather).

  • Nous essayons d'appeler l'API OpenWeather.

  • Si nous obtenons les bonnes donnĂ©es, envoyez-les, stockez-les dans le cache (2)
  • Sinon, envoyez les donnĂ©es moqueuses (3)

Ce flux est bien entendu extrĂȘmement ouvert Ă  la discussion!

Il y a encore beaucoup de travail à faire, des validations, des trucs asynchrones, des cas limites (tests), etc. mais nous y arriverons progressivement. J'ai beaucoup commenté le fichier server.js (ne soyez pas effrayant), je vais progressivement filtrer la plupart de ces informations et vous demander de l'aide ici afin que nous puissions discuter de chaque problÚme.

Juste une idĂ©e: pourrions-nous Ă©ventuellement avoir un service de donnĂ©es, qui essaie de minimiser le nombre de "requĂȘtes disponibles Ă  l'API OpenWeather (ou autres) qui ne sont pas effectuĂ©es"? Ce service alimenterait, disons, une base de donnĂ©es MongoDB - ce serait notre cache (nous pourrions utiliser Memcached mais c'est probablement trop, nous n'avons pas besoin de cette vitesse supplĂ©mentaire)

Autre idĂ©e: Existe-t-il des statistiques d'utilisation passĂ©e de ce service? Sinon, peut-ĂȘtre pourrions-nous commencer Ă  en crĂ©er une, peut-ĂȘtre que cela pourrait ĂȘtre utile, pour essayer d'optimiser une solution Ă©ventuellement possible mais trĂšs sous-optimale

Une chose que j'aurai sûrement besoin d'aide pour comprendre est ce problÚme de sécurité que github me met en garde
securityIssuesApi

(pour une raison quelconque, j'ai totalement manqué votre message!)

Ils peuvent également avoir des limites sur l'adresse IP (pas sûr), donc la création d'autres abonnements ne serait pas utile.

Bon point. Vaut-il la peine d'ĂȘtre testĂ©?

Existe-t-il d'autres «sources de vérité» gratuites que nous pourrions utiliser avec OW?

Pas sur.

Si nous sommes autorisés à le faire, cela peut augmenter considérablement la probabilité de parvenir à une solution réussie.

Je dĂ©veloppe actuellement mon propre projet mĂ©tĂ©o en utilisant la version gratuite d'OpenWeather et j'ai envisagĂ© de simplement vĂ©rifier si la requĂȘte est Ă  moins de 10 minutes de la derniĂšre requĂȘte, puis d'afficher les derniĂšres donnĂ©es renvoyĂ©es pour le mĂȘme lat / lon.

Oui, en utilisant les données mises en cache, n'est-ce pas? J'ai posé cette question <2h parce que j'avais déjà posé une question sur le délai acceptable. Plus le délai est long, mieux c'est, donc nous touchons plus le cache et nous n'avons pas à appeler l'API si souvent. Début du codage en supposant que nous pouvons réussir à envoyer des données datant d'au plus 1 h, juste pour commencer.

Je pense que nous pouvons Ă©galement mettre Ă  jour les instructions du dĂ©fi pour informer le dĂ©veloppeur que nous renverrons une rĂ©ponse spĂ©ciale si une limite est atteinte, afin qu'il puisse informer l'utilisateur de l'application que les donnĂ©es ne sont peut-ĂȘtre pas Ă  jour. Nous voudrions toujours renvoyer les mĂȘmes donnĂ©es que nous sommes actuellement (afin de ne pas casser les anciens projets en utilisant l'API FCC). Nous ajouterions simplement une propriĂ©tĂ© supplĂ©mentaire Ă  la rĂ©ponse. Qu'est-ce que tu penses?

Je suis totalement d'accord avec cette idée de donner les informations pertinentes aux développeurs et de les laisser choisir, c'est le chemin que je considérais comme le plus adéquat aussi

Existe-t-il des outils standard pour tester et faire des demandes dans les projets FCC?
Pour les demandes que j'utilise (juste parce que j'ai décidé de l'essayer, au lieu d'Axios)
www.npmjs.com/package/request
Pour les tests, je n'ai pas beaucoup d'expérience mais je pensais à Mocha.
Mais faites-moi savoir quels outils s'intĂšgrent le mieux Ă  FCC

Une chose que j'aurai sûrement besoin d'aide pour comprendre est ce problÚme de sécurité que github me met en garde

La solution la plus simple consiste simplement à exécuter npm audit fix , puis à valider les mises package.json jour package-lock.json . Les nouveaux paquets ne devraient pas avoir de changements de rupture par rapport aux précédents, vulnérables. Cependant, cela suppose que les auteurs du package n'ont pas accidentellement introduit une modification de rupture, il vaut donc la peine de vérifier manuellement votre application une fois les correctifs appliqués.

J'ai joué avec l'api OpenWeather (en fait j'aurais dû le faire depuis le début).
Savions-nous cela? https://openweathermap.org/faq#error401
La partie pertinente

Pour les dĂ©veloppeurs FOSS: nous accueillons les logiciels libres et open source et sommes prĂȘts Ă  vous aider. Si vous souhaitez utiliser les donnĂ©es OWM dans votre application logicielle gratuite, veuillez enregistrer une clĂ© API et dĂ©poser un ticket dĂ©crivant votre application et la clĂ© API enregistrĂ©e. OWM examinera vos limites d'accĂšs de levĂ©e de demande pour votre clĂ© si elle est utilisĂ©e dans une application open source.

Bonjour les gars, j'ai été plus contraint que prévu.
Pendant mon temps libre, j'ai étudié l'API OpenWeather. Malheureusement, ce n'est pas bien documenté.
Je pense que j'ai trouvé une stratégie réalisable, en utilisant l'option bbox, mais je suis toujours en train de tester.
J'ai eu l'idée de créer un document avec toutes les informations que j'ai rencontrées, les tests que je fais.

@ Hash2C Prenez votre temps pour bien faire les choses. Ce bogue est lĂ  depuis un certain temps.

@RandellDawson
Vous saviez ce que vous disiez: heavy_check_mark:

@ Hash2C Comment votre solution

ClĂŽturer ce problĂšme car le nombre d'utilisateurs travaillant sur ce projet en gĂ©nĂ©ral a considĂ©rablement diminuĂ© car il ne s'agit plus d'un projet requis pour une certification. Cela a conduit Ă  moins d'instances oĂč la limite de dĂ©bit pour l'API est atteinte.

Cette page vous a été utile?
0 / 5 - 0 notes