示例#1
0
        /// <summary>
        /// Désérialisation d'une liste de jeux
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        private ListeFichesJeuxJVC DeserialiserListeJeux(Stream stream)
        {
            string machine;
             string urlFiche;

            ListeFichesJeuxJVC listeFichesJeuxJVC = new ListeFichesJeuxJVC();

            try
            {
                Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début DeserialiserListeJeux");


                StreamReader streamReader = new StreamReader(stream);
                string resultat = streamReader.ReadToEnd();

                int indexDebut = resultat.LastIndexOf("[")+1;
                int indexFin = resultat.IndexOf("]")-1;

                resultat = resultat.Substring(indexDebut, indexFin - indexDebut);

            
                indexDebut = resultat.IndexOf("ul>") + 3;

                resultat = resultat.Substring(indexDebut, resultat.Length - indexDebut);
                resultat = resultat.Replace("&", "and");

                XmlDocument xdoc = new XmlDocument();
                xdoc.LoadXml(resultat);

                XPathNavigator xpathNavigator;
                xpathNavigator = xdoc.CreateNavigator();

                XPathNodeIterator xpathNodeIterator;
                xpathNodeIterator = xpathNavigator.Select("/div/h3");


                 // On parcourt les chunks
                while (xpathNodeIterator.MoveNext())
                {
                    // On recupère le nom de machine
                    machine = xpathNodeIterator.Current.Value;

                    //on va à ul
                    xpathNodeIterator.Current.MoveToNext();

                    // balises li
                    xpathNodeIterator.Current.MoveToChild("li", "");

                    do
                    {
                        // Chaque balise li correspond à une fiche
                        FicheJeuJVC ficheJeuJVC = new FicheJeuJVC();
                        ficheJeuJVC.Machine = xpathNodeIterator.Current.Value;


                        xpathNodeIterator.Current.MoveToChild("a", "");

                        ficheJeuJVC.Titre = xpathNodeIterator.Current.Value;

                        urlFiche = xpathNodeIterator.Current.GetAttribute("href", "");
                        urlFiche = urlFiche.Replace("jv:/", "http://ws.jeuxvideo.com");
                       
                        ficheJeuJVC.UrlSimple = urlFiche;
                        
 
                        xpathNodeIterator.Current.MoveToParent();


                        if (xpathNodeIterator.Current.MoveToChild("strong", ""))
                        {
                            ficheJeuJVC.Machine = xpathNodeIterator.Current.Value;
                            xpathNodeIterator.Current.MoveToParent();
                        }
                        else
                        {
                            ficheJeuJVC.Machine = machine;
                        }

                        FicheJeuJVC ficheComplementaire = ObtenirFicheSimpleJeu(urlFiche);

                        ficheJeuJVC.UrlVignette = ficheComplementaire.UrlVignette;
                        ficheJeuJVC.Editeur = ficheComplementaire.Editeur;
                        ficheJeuJVC.Developpeur = ficheComplementaire.Developpeur;
                        ficheJeuJVC.DateSortie = ficheComplementaire.DateSortie;
                        ficheJeuJVC.NomJaquette = ficheComplementaire.NomJaquette;
                        ficheJeuJVC.Genre = ficheComplementaire.Genre;

                        listeFichesJeuxJVC.AjouterFicheJeuJVC(ficheJeuJVC);


                    } while (xpathNodeIterator.Current.MoveToNext());

                    xpathNodeIterator.Current.MoveToParent();
                }


                foreach (FicheJeuJVC fiche in listeFichesJeuxJVC)
                {
                    Console.WriteLine(fiche.ToString());
                }


                return listeFichesJeuxJVC;
            }
            catch (Exception ex)
            {
                Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur = " + ex.Message);
                throw;

            }
            finally
            {

                Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin DeserialiserListeJeux");
            }
        }
示例#2
0
        /// <summary>
        /// Fonction qui retourne les films correspondant au critère de recherche
        /// </summary>
        /// <param name="critere"></param>
        public ListeFichesJeuxJVC RechercherJeu(string critere)
        {
            Log.MonitoringLogger().Info(KS_NOM_MODULE + "Début RechercherJeu");

            try
            {
                string responseValue = String.Empty;

                //critere.Replace(" ", "+");

                // Construction de l'url de recherche
                string url = string.Format(Properties.Settings.Default.UrlRechercheJVC, HttpUtility.HtmlEncode(critere));

                // Création de la requête
                HttpWebRequest request = CreateWebRequest(url);
                request.Timeout = 5000;

                // Récupération de la réponse
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    string message = String.Format("GET failed. Received HTTP {0}", response.StatusCode);
                    throw new ApplicationException(message);
                }

                // Récupération du flux
                Stream responseStream = response.GetResponseStream();

                ListeFichesJeuxJVC liste = DeserialiserListeJeux(responseStream);

                ListeFichesJeuxJVC listeARetourner = new ListeFichesJeuxJVC();

                foreach (FicheJeuJVC ficheJeu in liste) {

                    bool aTraiter = true;

                    foreach(string s in critere.Split(' ')) {
                        if(!ficheJeu.Titre.ToLower().Contains(s.ToLower())) {
                            aTraiter = false;
                        }
                    }

                    if (aTraiter) {

                        url = string.Format(Properties.Settings.Default.UrlObtenirFicheJVC, ficheJeu.CodeJeu);

                        request = CreateWebRequest(url);
      
                        // Récupération de la réponse
                        response = (HttpWebResponse)request.GetResponse();

                        if (response.StatusCode != HttpStatusCode.OK)
                        {
                            string message = String.Format("GET failed. Received HTTP {0}", response.StatusCode);
                            throw new ApplicationException(message);
                        }

                         // Récupération du flux
                        responseStream = response.GetResponseStream();

                        FicheJeuJVC fiche2 = DeserialiserJeu(responseStream);
                        fiche2.TypeMachine = ficheJeu.TypeMachine;
                        fiche2.CodeJeu = ficheJeu.CodeJeu;

                        listeARetourner.AjouterFicheJeuJVC(fiche2);
                    }
                }

                // Désérialisation
                return listeARetourner;

            }
            catch (Exception ex)
            {
                Log.MonitoringLogger().Info(KS_NOM_MODULE + "Erreur = " + ex.Message);
                throw ex;
            }
            finally
            {
                Log.MonitoringLogger().Info(KS_NOM_MODULE + "Fin RechercherJeu");
            }
        }