1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

Random User Generator (API)

Discussion dans 'Windev' créé par gapplicat, Mar 28, 2018.

  1. gapplicat

    gapplicat Well-Known Member
    MEMBRE WX

    Inscrit:
    Mar 8, 2018
    Messages:
    399
    J'aime reçus:
    708
    J'ai trouvé une super API qui permet de générer des datas "client" par millier.... De quoi enrichir votre base de démonstration avec des données pertinentes.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!




    le résultat peut être du Json, CSV, XML, YALM
    Ici je traite en Json, cela permet par la même occasion, de voir comment parcourir un Json dont la structure est inconnue...

    Code (Text):


    MonXML est une chaîne


    LeTitre,LePrenom ,LeNom, Ladresse, LeCP,LaVille ,Lemail ,LePhone ,LeCell sont des chaînes


    SI PAS HTTPRequête("https://randomuser.me/api/?results=1000") ALORS
     
     
        SELON ErreurInfo(errCode)
        // Certificat invalide
            // ou ne provenant pas d'une société connue
            CAS httpErreurCertificatInvalide :
                // Ignorer le certificat ?
                SI OuiNon("Alerte de sécurité détectée !", ...
                    "Certificat invalide.", ...
                    "Ignorer ce certificat ?") = Oui ALORS
                    HTTP.IgnoreErreur = httpIgnoreCertificatInvalide
                    // Nouveau lancement de la requête
                    // en ignorant cette erreur
                    HTTPRequête("https://www.MonServeur.com")
                FIN
            // Date du certificat non-valide ou expiré
            CAS httpErreurCertificatExpiré :
                // Ignorer la date du certificat ?
                SI OuiNon("Alerte de sécurité détectée !", ...
                    "Date du certificat invalide ou expiré.", ...
                    "Ignorer cette date ?") = Oui ALORS
                    HTTP.IgnoreErreur = httpIgnoreCertificatExpiré
                    // Nouveau lancement de la requête
                    // en ignorant cette erreur
                    HTTPRequête("https://www.MonServeur.com")
                FIN
        FIN
    SINON
        MonXML = HTTPDonneRésultat(httpRésultat)
     
     
            vJSON est un Variant = JSONVersVariant(MonXML)
         
         
            ParcoursMembresVariant(vJSON)
         
         
                PROCEDURE INTERNE ParcoursMembresVariant(_ObjetOuTableau)
             
                SELON _ObjetOuTableau..Type
             
                    CAS wlVariantObjet :
                     
                        POUR TOUT _Membre DE _ObjetOuTableau..Membre
                         
                            SI _Membre..Membre..Occurrence = 0 ALORS
                             
                                SELON _Membre..Type
                                    CAS wlVariantTableau :
                                        //Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) +"(1) Le membre " + _Membre..Nom +        " contient un tableau...")
                                        ParcoursMembresVariant(_Membre)
                                    AUTRES CAS :
                                        //Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) +"(2) Le membre " + _Membre..Nom + " a la valeur " +    _Membre..Valeur)
                                     
                                     
                                        SI SansEspace(_Membre..Nom) = "title" ALORS LeTitre = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "first" ALORS LePrenom = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "last" ALORS LeNom = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "street" ALORS Ladresse = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "postcode" ALORS LeCP = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "city" ALORS LaVille = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "email" ALORS Lemail = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "phone" ALORS LePhone = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "cell" ALORS LeCell = _Membre..Valeur
                                        SI SansEspace(_Membre..Nom) = "nat" ALORS // L'astuce, ecrire lorsque l'on rencontre le dernier champ du json
                                            //fltrace("**********>" + LeTitre,LePrenom +LeNom+ Ladresse+ LeCP+LaVille +LaVille +Lemail +LePhone +LeCell)
                                            SI ChaîneOccurrence(lenom,"?") = 0 ALORS // Evite les noms a caracteres spéciaux Arabe, Japonais....                            
                                                HRAZ(Client)
                                                Client.SejourOrientation = ""
                                                Client.Nom = Majuscule(LeNom)
                                                Client.Prénom = LePrenom
                                                Client.Adresse = Ladresse
                                                Client.CodePostal = LeCP
                                                Client.Ville = Majuscule(LaVille)
                                                Client.EMail = Lemail
                                                Client.TEL_INSCRIPTION = Lephone
                                                Client.TelPortable = LeCell
                                                Client.Observations =  LeTitre+" "+LePrenom +" "+LeNom+" "+ RC+Ladresse+" "+RC+ LeCP+" "+LaVille+" "+ RC+ Lemail +" "+RC+LePhone +" "+LeCell
                                                HAjoute(Client)
                                                DoublonIntegrite()
                                            FIN
                                        FIN
                                     
                                     
                                     
                                FIN
                            SINON
                                //Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) +"(3) Le membre " + _Membre..Nom + " a " +_Membre..Membre..Occurrence + " autres membres...")
                                ParcoursMembresVariant(_Membre)
                            FIN
                        FIN
                     
                    CAS wlVariantTableau :
                        //Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) +"Tableau de "+_ObjetOuTableau..Occurrence+" éléments...")
                     
                        POUR TOUT ELEMENT UnElement, Compteur DE _ObjetOuTableau
                            //Trace(Répète("--", ChaîneOccurrence(dbgInfo(dbgPile), RC)) +"Exploration de l'élément "+Compteur+"/"+_ObjetOuTableau..Occurrence)
                            ParcoursMembresVariant(UnElement)
                        FIN
                     
                    AUTRES CAS : Trace("A gérer ("+_ObjetOuTableau..Type+") !?"+_ObjetOuTableau)
                FIN
                FIN
     
    FIN

     
    Développé un peu à l'arrache, mais cela fonctionne...
     
    #1 gapplicat, Mar 28, 2018
    Dernière édition: Mar 29, 2018
  2. FreudWD

    FreudWD Well-Known Member
    MEMBRE WX WXG 21

    Inscrit:
    Jan 22, 2018
    Messages:
    199
    J'aime reçus:
    368
    J’aime bien cette procédure interne qui nous montre le parcours des différents niveaux du résultat JSON, en utilisant la récursivité.
    Mais si on connait la structure, autant l’utiliser pour des raisons de performances sur les comparaisons de chaines, qui seront exponentielles sur chaque branche de l’arbre.

    A la place de la procédure, il faut simplement boucler sur le résultat :
    Code (Text):

        POUR TOUT InfoUser DE vJSON.results

            LeTitre = InfoUser.name.title
            LePrenom = InfoUser.name.first
            LeNom = InfoUser.name.last
            Ladresse = InfoUser.location.street
            LeCP = InfoUser.location.postcode
            LaVille = InfoUser.location.city
            Lemail = InfoUser.email
            LePhone = InfoUser.phone
            LeCell = InfoUser.cell

            SI ChaîneOccurrence(LeNom,"?") = 0 ALORS // Evite les noms a caracteres spéciaux Arabe, Japonais....
                HRAZ(Client)
                Client.SejourOrientation = ""
                Client.Nom = Majuscule(LeNom)
                Client.Prénom = LePrenom
                Client.Adresse = Ladresse
                Client.CodePostal = LeCP
                Client.Ville = Majuscule(LaVille)
                Client.EMail = Lemail
                Client.TEL_INSCRIPTION = LePhone
                Client.TelPortable = LeCell
                Client.Observations =  LeTitre+" "+LePrenom +" "+LeNom+" "+ RC+Ladresse+" "+RC+ LeCP+" "+LaVille+" "+ RC+ Lemail +" "+RC+LePhone +" "+LeCell
                HAjoute(Client)
                DoublonIntegrite()
            FIN

        FIN
     

    Edit :
    Je n'utilise pas la table, du coup j'ai gardé les variables,
    mais on peut mettre directement le contenu dans la table, sans passer par les variables.
     
    #2 FreudWD, Mar 29, 2018
    Dernière édition: Mar 29, 2018
    suenodesign et Mauritius aiment ça.

Partager cette page

Chargement...