public object Get(CollectionGetDensityRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); string result = ""; try { context.Open(); context.LogInfo(this, string.Format("/data/collection/{{serieId}}/tdensity GET serieId='{0}'", request.CollId)); Terradue.Tep.Collection serie = Terradue.Tep.Collection.FromIdentifier(context, request.CollId); var OSDD = serie.GetOpenSearchDescription(); var tdensityUrl = OSDD.Url.First(p => p.Type == "application/tdensity+json"); if (tdensityUrl != null) { var query = HttpContext.Current.Request.QueryString; var urib = new UriBuilder(tdensityUrl.Template); var queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key])); urib.Query = string.Join("&", queryString); HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(urib.Uri.AbsoluteUri); using (var resp = httpRequest.GetResponse()) { using (var stream = resp.GetResponseStream()) { StreamReader reader = new StreamReader(stream); result = reader.ReadToEnd(); } } } context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/* ! * \fn Get(Getseries request) * \brief Response to the Get request with a Getseries object (get the complete list of series) * \param request request content * \return the series list */ public object Get(GetOpensearchDescription request) { OpenSearchDescription OSDD; var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); try{ context.Open(); context.LogInfo(this, string.Format("/data/collection/{{serieId}}/description GET serieId='{0}'", request.serieId)); UriBuilder baseUrl = new UriBuilder(context.BaseUrl); if (request.serieId == null) { throw new ArgumentNullException(Terradue.Tep.WebServer.CustomErrorMessages.WRONG_IDENTIFIER); } Terradue.Tep.Collection serie = Terradue.Tep.Collection.FromIdentifier(context, request.serieId); // The new URL template list Hashtable newUrls = new Hashtable(); UriBuilder urib; NameValueCollection query = new NameValueCollection(); urib = new UriBuilder(baseUrl.ToString()); OSDD = serie.GetOpenSearchDescription(); foreach (var url in OSDD.Url) { string path = ""; switch (url.Type) { case "application/opensearchdescription+xml": path = baseUrl.Path + "/data/collection/" + serie.Identifier + "/description"; break; case "application/tdensity+json": path = baseUrl.Path + "/data/collection/" + serie.Identifier + "/tdensity"; break; default: path = baseUrl.Path + "/data/collection/" + serie.Identifier + "/search"; break; } var queryUrl = url.Template != null && url.Template.IndexOf("?") >= 0 ? url.Template.Substring(url.Template.IndexOf("?")) : ""; var urlB = new UriBuilder(context.BaseUrl); urlB.Path = path; url.Template = urlB.Uri.AbsoluteUri + queryUrl; } context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } HttpResult hr = new HttpResult(OSDD, "application/opensearchdescription+xml"); return(hr); }