/// <summary> /// Obtenir la liste d'éléments via le type d'élément. /// </summary> /// <typeparam name="T">Type de retour.</typeparam> /// <param name="urlBase">Url de base.</param> /// <param name="parametres">Paramètres d'envoie.</param> /// <returns>Liste d'éléments.</returns> public IEnumerable <IFeatureSet <T> > Obtenir <T>(string urlBase, IParametresRequete parametres) { // Variables de travail. var listeU = new List <FeatureSet <T> >(); try { var reponse = _clientHttp.GetStringAsync(ConstruireUriObtenir(urlBase, parametres)).Result; dynamic json = JsonConvert.DeserializeObject(reponse); if (null != json) { // Itérer dans les réponses. foreach (dynamic feature in json.features) { var temp = new FeatureSet <T>(); // Remplir la géométrie. if (parametres.RetournerGeometrie && null != feature.geometry) { temp.geometry = JsonConvert.DeserializeObject <Point>(feature.geometry.ToString()); } temp.attributes = JsonConvert.DeserializeObject <T>(feature.attributes.ToString()); listeU.Add(temp); } } } catch { } return(listeU); }
/// <summary> /// Obtenir l'uri de la requête. /// </summary> /// <param name="urlBase">Url d'appel de base.</param> /// <param name="parametres">Paramètres pour la recherche.</param> /// <returns>Url complète.</returns> private Uri ConstruireUriObtenir(string urlBase, IParametresRequete parametres) { // Construction de l'url. _constructeurUrl.Debuter(urlBase); _constructeurUrl.AjouterParametres(parametres); return(_constructeurUrl.Finaliser()); }
/// <summary> /// Ajouter les paramètres dans la chaîne (query string). /// </summary> /// <param name="parametres">Paramètres.</param> public void AjouterParametres(IParametresRequete parametres) { // On s'assure que la liste de paramètres est vide. _parametres.Clear(); var siVide = new Func <object, bool>((item) => item == null); if (!siVide(parametres.Where)) { _parametres.Add(@"where", WebUtility.UrlEncode(parametres.Where)); } if (!siVide(parametres.Point)) { _parametres.Add(@"geometry", WebUtility.UrlEncode(parametres.Point.ToString())); _parametres.Add(@"geometryType", "esriGeometryPoint"); // Point. _parametres.Add(@"inSR", WebUtility.UrlEncode(parametres.Point.SRID.ToString())); } _parametres.Add(@"returnGeometry", parametres.RetournerGeometrie.ToString().ToLower()); if (parametres.AfficherTousLesChamps) { _parametres.Add(@"outFields", @"*"); } else if (0 < parametres.ChampsSorties?.Count()) { _parametres.Add(@"outFields", string.Join(",", parametres.ChampsSorties)); } // À la toute fin, on s'assure que c'est en json! _parametres.Add(@"f", "json"); }
/// <summary> /// Obtenir toutes les instances de la requête. /// </summary> /// <typeparam name="T">Type de retour de la requête via le service web.</typeparam> /// <param name="urlBase">Url d'appel de base.</param> /// <param name="parametres">Paramètres pour la recherche.</param> /// <returns>Résultat.</returns> private IEnumerable <IFeatureSet <T> > _Obtenir <T>(string urlBase, IParametresRequete parametres) => _repoFeatureClass.Obtenir <T>(urlBase, parametres);
/// <summary> /// Obtenir les valeurs des couches ESRI en la convertissant avec le type T. /// </summary> /// <typeparam name="T">Type de retour.</typeparam> /// <param name="urlBase">Url d'appel de base.</param> /// <param name="parametres">Paramètres.</param> /// <returns>Liste d'éléments convertis.</returns> public IEnumerable <IFeatureSet <T> > Obtenir <T>(string urlBase, IParametresRequete parametres) => _Obtenir <T>(urlBase, parametres);