public OpenSearchDescription GetProxyOpenSearchDescription() { OpenSearchDescription osd = new OpenSearchDescription(); osd.ShortName = string.IsNullOrEmpty(Wpsjob.Name) ? Wpsjob.Identifier : Wpsjob.Name; osd.Attribution = "European Space Agency"; osd.Contact = "*****@*****.**"; osd.Developer = "Terradue GeoSpatial Development Team"; osd.SyndicationRight = "open"; osd.AdultContent = "false"; osd.Language = "en-us"; osd.OutputEncoding = "UTF-8"; osd.InputEncoding = "UTF-8"; osd.Description = "This Search Service performs queries in the available results of a job process. There are several URL templates that return the results in different formats (RDF, ATOM or KML). This search service is in accordance with the OGC 10-032r3 specification."; osd.ExtraNamespace.Add("geo", "http://a9.com/-/opensearch/extensions/geo/1.0/"); osd.ExtraNamespace.Add("time", "http://a9.com/-/opensearch/extensions/time/1.0/"); osd.ExtraNamespace.Add("dct", "http://purl.org/dc/terms/"); osd.ExtraNamespace.Add("t2", "http://www.terradue.com/opensearch"); var searchExtensions = MasterCatalogue.OpenSearchEngine.Extensions; List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>(); NameValueCollection parameters = GetOpenSearchParameters(this.DefaultMimeType); UriBuilder searchUrl = new UriBuilder(context.BaseUrl); searchUrl.Path += string.Format("/job/wps/{0}/products/search", Wpsjob.Identifier); NameValueCollection queryString = HttpUtility.ParseQueryString(""); parameters.Add("key", this.Wpsjob.AccessKey); parameters.AllKeys.FirstOrDefault(k => { queryString.Add(k, parameters[k]); return(false); }); List <OpenSearchDescriptionUrlParameter> paramdesc = OpenSearchFactory.GetDefaultParametersDescription(10); foreach (int code in searchExtensions.Keys) { queryString.Set("format", searchExtensions[code].Identifier); string[] queryStrings = Array.ConvertAll(queryString.AllKeys, key => string.Format("{0}={1}", key, queryString[key])); searchUrl.Query = string.Join("&", queryStrings); var url = new OpenSearchDescriptionUrl(searchExtensions[code].DiscoveryContentType, searchUrl.ToString(), "results", osd.ExtraNamespace); url.Parameters = paramdesc.ToArray(); urls.Add(url); } UriBuilder descriptionUrl = new UriBuilder(context.BaseUrl); descriptionUrl.Path += string.Format("/job/wps/{0}/products/description", Wpsjob.Identifier); urls.Add(new OpenSearchDescriptionUrl("application/opensearchdescription+xml", searchUrl.ToString(), "self", osd.ExtraNamespace)); osd.Url = urls.ToArray(); return(osd); }