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);
        }