Exemplo n.º 1
0
        /// <summary>
        /// Get the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Get(DataPackageDescriptionRequest request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/data/package/{{DataPackageId}}/description GET DataPackageId='{0}'", request.DataPackageId));

                Terradue.Tep.DataPackage datapackage;
                if (request.Key != null)
                {
                    context.AccessLevel = EntityAccessLevel.Administrator;
                    datapackage         = DataPackage.FromIdentifier(context, request.DataPackageId);
                    if (request.Key != null && !request.Key.Equals(datapackage.AccessKey))
                    {
                        throw new UnauthorizedAccessException(CustomErrorMessages.WRONG_ACCESSKEY);
                    }
                }
                else
                {
                    datapackage = DataPackage.FromIdentifier(context, request.DataPackageId);
                }

                datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine);
                OpenSearchDescription osd = datapackage.GetLocalOpenSearchDescription();

                context.Close();

                return(new HttpResult(osd, "application/opensearchdescription+xml"));
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Opensearch parameters.
        /// </summary>
        /// <returns>The search parameters.</returns>
        /// <param name="mimeType">MIME type.</param>
        /// \ingroup Series
        public virtual NameValueCollection GetOpenSearchParameters(string mimeType)
        {
            OpenSearchDescription osd = this.GetOpenSearchDescription();
            Uri uri = new Uri(OpenSearchFactory.GetOpenSearchUrlByType(osd, mimeType).Template);

            return(HttpUtility.ParseQueryString(uri.Query));
        }
Exemplo n.º 3
0
        public OpenSearchDescription GetOpenSearchDescription()
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.ShortName        = this.Name;
            osd.Contact          = context.GetConfigValue("CompanyEmail");
            osd.Description      = this.Description;
            osd.SyndicationRight = "open";
            osd.AdultContent     = "false";
            osd.Language         = "en-us";
            osd.OutputEncoding   = "UTF-8";
            osd.InputEncoding    = "UTF-8";
            osd.Developer        = "Terradue GeoSpatial Development Team";
            osd.Attribution      = context.GetConfigValue("CompanyName");

            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/");

            // Create the union Link

            OpenSearchDescriptionUrl url = new OpenSearchDescriptionUrl("application/atom+xml", "dummy://dummy", "results", osd.ExtraNamespace);

            osd.Url    = new OpenSearchDescriptionUrl[1];
            osd.Url[0] = url;

            return(osd);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Gets the local open search description.
        /// </summary>
        /// <returns>The local open search description.</returns>
        public override OpenSearchDescription GetLocalOpenSearchDescription()
        {
            OpenSearchDescription osd = base.GetOpenSearchDescription();

            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl> ();
            UriBuilder urlb = new UriBuilder(GetDescriptionBaseUrl());
            OpenSearchDescriptionUrl url = new OpenSearchDescriptionUrl("application/opensearchdescription+xml", urlb.ToString(), "self", osd.ExtraNamespace);

            urls.Add(url);

            NameValueCollection query = HttpUtility.ParseQueryString(urlb.Query);

            urlb  = new UriBuilder(GetSearchBaseUrl("application/atom+xml"));
            query = GetOpenSearchParameters("application/atom+xml");
            NameValueCollection nvc = HttpUtility.ParseQueryString(urlb.Query);

            foreach (var key in nvc.AllKeys)
            {
                query.Set(key, nvc [key]);
            }

            foreach (var osee in OpenSearchEngine.Extensions.Values)
            {
                query.Set("format", osee.Identifier);
                string [] queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query [key]));
                urlb.Query = string.Join("&", queryString);
                url        = new OpenSearchDescriptionUrl(osee.DiscoveryContentType, urlb.ToString(), "search", osd.ExtraNamespace);
                urls.Add(url);
            }

            osd.Url = urls.ToArray();

            return(osd);
        }
        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);
        }
        public void RemoteResourceIProxiedOpenSearchable()
        {
            RemoteResourceSet set = new RemoteResourceSet(context);

            RemoteResource rr = new RemoteResource(context);

            rr.ResourceSet = set;
            set.Resources  = new RemoteResourceEntityCollection(context);
            set.Resources.Include(rr);
            rr.Location          = "http://catalogue.terradue.int/catalogue/search/MER_FRS_1P/rdf?startIndex=0&q=MER_FRS_1P&start=1992-01-01&stop=2014-10-24&bbox=-72,47,-57,58";
            set.OpenSearchEngine = ose;
            set.Identifier       = "test";

            OpenSearchDescription osd = set.GetProxyOpenSearchDescription();

            OpenSearchDescriptionUrl url = osd.Url.FirstOrDefault(p => p.Relation == "self");

            Assert.That(url != null);
            Assert.AreEqual("http://loacalhost:8877/sID/remoteresource/test/description", url.Template);

            NameValueCollection nvc = new NameValueCollection();

            nvc.Set("count", "100");

            var osr = ose.Query(set, nvc, "rdf");

            Assert.LessOrEqual(osr.Count, 100);
        }
Exemplo n.º 7
0
        OpenSearchDescription GetSearchDescription()
        {
            ILink searchLink             = GetSearchLink();
            OpenSearchDescription search = searchLink.Follow(Session).Get <OpenSearchDescription>().Body;

            return(search);
        }
Exemplo n.º 8
0
        string EntrySelfLinkTemplate(string identifier, OpenSearchDescription osd, string mimeType)
        {
            if (identifier == null)
            {
                return(null);
            }
            NameValueCollection nvc = OpenSearchFactory.GetOpenSearchParameters(OpenSearchFactory.GetOpenSearchUrlByType(osd, mimeType));

            nvc.Set("uid", string.Format("{0}", identifier));
            nvc.AllKeys.FirstOrDefault(k => {
                if (nvc[k] == "{geo:uid?}")
                {
                    nvc[k] = identifier;
                }
                var matchParamDef = System.Text.RegularExpressions.Regex.Match(nvc[k], @"^{([^?]+)\??}$");
                if (matchParamDef.Success)
                {
                    nvc.Remove(k);
                }
                return(false);
            });
            UriBuilder template = new UriBuilder(OpenSearchFactory.GetOpenSearchUrlByType(osd, mimeType).Template);

            string[] queryString = Array.ConvertAll(nvc.AllKeys, key => string.Format("{0}={1}", key, nvc[key]));
            template.Query = string.Join("&", queryString);
            return(template.ToString());
        }
Exemplo n.º 9
0
 public UrlBasedOpenSearchable(IfyContext context, OpenSearchDescription osd, OpenSearchUrl url, OpenSearchableFactorySettings settings)
 {
     this.context  = context;
     this.osd      = osd;
     this.url      = url;
     this.settings = settings;
 }
Exemplo n.º 10
0
 public OpenSearchDescription GetOpenSearchDescription()
 {
     if (osd == null)
     {
         osd = ose.AutoDiscoverFromQueryUrl(new OpenSearchUrl(this.OpenSearchDescriptionUri));
     }
     return(osd);
 }
        public object Get(OpenSearchDescriptionGetRequest request)
        {
            IOpenSearchableElasticType type = ecf.GetOpenSearchableElasticTypeByNameOrDefault(request.IndexName, request.TypeName);

            OpenSearchDescription osd = type.GetProxyOpenSearchDescription();

            return(new HttpResult(osd, "application/opensearchdescription+xml"));
        }
Exemplo n.º 12
0
 /// <summary>
 /// Query the remote catalogue for the open search description.
 /// </summary>
 /// <returns>
 /// an open search description.
 /// </returns>
 /// \ingroup Series
 public virtual OpenSearchDescription GetOpenSearchDescription()
 {
     if (osd == null)
     {
         osd = ose.AutoDiscoverFromQueryUrl(new OpenSearchUrl(CatalogueDescriptionUrl));
     }
     return(osd);
 }
Exemplo n.º 13
0
        public static OpenSearchDescription GenerateOpenSearchDescription(ISearchEngine searchEngine, HttpContext httpContext, IOpenSearchContext openSearchContext)
        {
            OpenSearchDescription openSearchDescription = new OpenSearchDescription();

            openSearchDescription.Url = OpenSearchHelpers.CreateOpenSearchDescriptionUrls(searchEngine.GetSearchFunctions(), httpContext, openSearchContext).ToList();

            return(openSearchDescription);
        }
Exemplo n.º 14
0
 public OpenSearchDescription GetOpenSearchDescription()
 {
     if (osd == null)
     {
         osd = Entity.GetOpenSearchDescription();
         return(osd);
     }
     return(osd);
 }
        public OpenSearchDescription GetOpenSearchDescription()
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.ShortName        = "WPSOutput";
            osd.Attribution      = "Terradue";
            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 WPS ExecuteResponse Output elements. There are several URL templates that return the results in different formats. " +
                                   "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/");

            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>();

            NameValueCollection parameters = GetOpenSearchParameters(this.DefaultMimeType);

            UriBuilder searchUrl = new UriBuilder(context.BaseUrl);

            searchUrl.Path += "/wps/job/output/search";
            NameValueCollection queryString = HttpUtility.ParseQueryString("");

            parameters.AllKeys.FirstOrDefault(k =>
            {
                queryString.Add(k, parameters[k]);
                return(false);
            });


            queryString.Set("format", "atom");
            string[] queryStrings = Array.ConvertAll(queryString.AllKeys, key => string.Format("{0}={1}", key, queryString[key]));
            searchUrl.Query = string.Join("&", queryStrings);
            urls.Add(new OpenSearchDescriptionUrl("application/atom+xml",
                                                  searchUrl.ToString(),
                                                  "results", osd.ExtraNamespace));

            UriBuilder descriptionUrl = new UriBuilder(context.BaseUrl);

            descriptionUrl.Path += "/description";
            urls.Add(new OpenSearchDescriptionUrl("application/opensearchdescription+xml",
                                                  searchUrl.ToString(),
                                                  "self", osd.ExtraNamespace));
            osd.Url = urls.ToArray();

            return(osd);
        }
Exemplo n.º 16
0
        //---------------------------------------------------------------------------------------------------------------------

        /// <summary>
        /// Gets the web server open search description.
        /// </summary>
        /// <returns>The web server open search description.</returns>
        public OpenSearchDescription GetWebServerOpenSearchDescription()
        {
            OpenSearchDescription OSDD = new OpenSearchDescription();

            OSDD.ShortName        = "Terradue Catalogue";
            OSDD.Attribution      = "European Space Agency";
            OSDD.Contact          = "*****@*****.**";
            OSDD.Developer        = "Terradue GeoSpatial Development Team";
            OSDD.SyndicationRight = "open";
            OSDD.AdultContent     = "false";
            OSDD.Language         = "en-us";
            OSDD.OutputEncoding   = "UTF-8";
            OSDD.InputEncoding    = "UTF-8";
            OSDD.Description      = "This Search Service performs queries in the available data packages of Tep catalogue. 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.";

            OSDD.ExtraNamespace.Add("geo", "http://a9.com/-/opensearch/extensions/geo/1.0/");
            OSDD.ExtraNamespace.Add("time", "http://a9.com/-/opensearch/extensions/time/1.0/");
            OSDD.ExtraNamespace.Add("dct", "http://purl.org/dc/terms/");

            // The new URL template list
            Hashtable           newUrls = new Hashtable();
            UriBuilder          urib;
            NameValueCollection query = new NameValueCollection();

            string[] queryString;

            urib       = new UriBuilder(context.BaseUrl);
            urib.Path += "/data/collection/search";
            query.Add(OpenSearchFactory.GetBaseOpenSearchParameter());

            query.Set("format", "atom");
            queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key]));
            urib.Query  = string.Join("&", queryString);
            newUrls.Add("application/atom+xml", new OpenSearchDescriptionUrl("application/atom+xml", urib.ToString(), "search", OSDD.ExtraNamespace));

            query.Set("format", "json");
            queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key]));
            urib.Query  = string.Join("&", queryString);
            newUrls.Add("application/json", new OpenSearchDescriptionUrl("application/json", urib.ToString(), "search", OSDD.ExtraNamespace));

            query.Set("format", "html");
            queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key]));
            urib.Query  = string.Join("&", queryString);
            newUrls.Add("text/html", new OpenSearchDescriptionUrl("application/html", urib.ToString(), "search", OSDD.ExtraNamespace));

            OSDD.Url = new OpenSearchDescriptionUrl[newUrls.Count];

            newUrls.Values.CopyTo(OSDD.Url, 0);

            return(OSDD);
        }
Exemplo n.º 17
0
        public OpenSearchDescription GetOpenSearchDescription()
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.Contact          = context.GetConfigValue("CompanyEmail");
            osd.SyndicationRight = "open";
            osd.AdultContent     = "false";
            osd.Language         = "en-us";
            osd.OutputEncoding   = "UTF-8";
            osd.InputEncoding    = "UTF-8";
            osd.Developer        = "Terradue OpenSearch Development Team";
            osd.Attribution      = context.GetConfigValue("CompanyName");

            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");
            osd.ExtraNamespace.Add("cor", "http://a9.com/-/opensearch/extensions/correlation/1.0/");

            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>();

            UriBuilder urlb = new UriBuilder(GetDescriptionBaseUrl());

            OpenSearchDescriptionUrl url = new OpenSearchDescriptionUrl("application/opensearchdescription+xml", urlb.ToString(), "self", osd.ExtraNamespace);

            urls.Add(url);

            urlb = new UriBuilder(GetSearchBaseUrl("application/atom+xml"));
            NameValueCollection query = GetOpenSearchParameters("application/atom+xml");

            NameValueCollection nvc = HttpUtility.ParseQueryString(urlb.Query);

            foreach (var key in nvc.AllKeys)
            {
                query.Set(key, nvc[key]);
            }

            foreach (var osee in OpenSearchEngine.Extensions.Values)
            {
                query.Set("format", osee.Identifier);

                string[] queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key]));
                urlb.Query = string.Join("&", queryString);
                url        = new OpenSearchDescriptionUrl(osee.DiscoveryContentType, urlb.ToString(), "search", osd.ExtraNamespace);
                urls.Add(url);
            }

            osd.Url = urls.ToArray();

            return(osd);
        }
Exemplo n.º 18
0
        public NameValueCollection GetOpenSearchParameters(string mimeType)
        {
            OpenSearchDescription osd = this.GetOpenSearchDescription();

            foreach (OpenSearchDescriptionUrl url in osd.Url)
            {
                if (url.Type == mimeType)
                {
                    return(HttpUtility.ParseQueryString(new Uri(url.Template).Query));
                }
            }

            return(null);
        }
Exemplo n.º 19
0
        public static OpenSearchDescription GetDefaultOpenSearchDescription(IOpenSearchableElasticType type)
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.ShortName        = "Terradue Catalogue";
            osd.Attribution      = "Terradue";
            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      = string.Format("This Search Service performs queries in the index {0}. There are several URL templates that return the results in different formats." +
                                                 "This search service is in accordance with the OGC 10-032r3 specification.", type.Index.Name);

            OpenSearchEngine ose = type.GetOpenSearchEngine(new NameValueCollection());

            var searchExtensions = ose.Extensions;
            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>();

            NameValueCollection parameters = type.GetOpenSearchParameters(type.DefaultMimeType);

            UriBuilder          searchUrl   = new UriBuilder(string.Format("{0}/catalogue/{1}/{2}/search", Settings.BaseUrl, type.Index.Name, type.Type.Name));
            NameValueCollection queryString = HttpUtility.ParseQueryString("?format=format");

            parameters.AllKeys.FirstOrDefault(k => {
                queryString.Add(k, parameters[k]);
                return(false);
            });

            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);
                urls.Add(new OpenSearchDescriptionUrl(searchExtensions[code].DiscoveryContentType,
                                                      searchUrl.ToString(),
                                                      "results"));
            }
            searchUrl = new UriBuilder(string.Format("{0}/catalogue/{1}/{2}/description", Settings.BaseUrl, type.Index.Name, type.Type.Name));
            urls.Add(new OpenSearchDescriptionUrl("application/opensearchdescription+xml",
                                                  searchUrl.ToString(),
                                                  "self"));
            osd.Url = urls.ToArray();

            return(osd);
        }
Exemplo n.º 20
0
        public object Get(ProxyWpsJobDescriptionRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);

            context.Open();
            context.LogInfo(this, string.Format("/proxy/wps/{{jobid}}/description GET jobid='{0}'", request.jobid));

            WpsJob wpsjob = WpsJob.FromIdentifier(context, request.jobid);

            context.LogDebug(this, string.Format("Wps Proxy description for wpsjob {0}", wpsjob.Identifier));

            OpenSearchDescription osd = GetWpsOpenSearchDescription(context, request.jobid, wpsjob.Name);

            context.Close();
            return(new HttpResult(osd, "application/opensearchdescription+xml"));
        }
Exemplo n.º 21
0
        //---------------------------------------------------------------------------------------------------------------------

        /// <summary>Generates the corresponding OpenSearch description.</summary>
        /// <returns>An OpenSearch description document.</returns>
        /// \ingroup Series
        /// \xrefitem rmodp "RM-ODP" "RM-ODP Documentation"
        public virtual OpenSearchDescription GetLocalOpenSearchDescription(string basePath)
        {
            OpenSearchDescription osd = GetOpenSearchDescription();

            osd.ShortName        = this.Identifier;
            osd.LongName         = this.Name;
            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      = String.Format("This Search Service performs queries in the series {0}. This search service is in accordance with the OGC 10-032r3 specification.", Identifier);

            return(osd);
        }
Exemplo n.º 22
0
        public void CanSearch()
        {
            // Arrange
            OpenSearchDescription description = GetSearchDescription();

            // Act
            ILinkTemplate   searchTemplate = description.Urls[0];
            SyndicationFeed result         = Session.Bind(searchTemplate, new { searchTerms = "" }).Get <SyndicationFeed>().Body;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Items.Count());
            SyndicationItem i1 = result.Items.First();

            Assert.AreEqual("Result 1", ((TextSyndicationContent)i1.Title).Text);
        }
Exemplo n.º 23
0
        public void CanLoadSearchDescriptionAndGetResultUrl()
        {
            // Arrange
            ILink searchLink = GetSearchLink();

            // Act - follow Open Search link and get search description document.
            // Ramone delivers codecs for Open Search.
            OpenSearchDescription search = searchLink.Follow(Session).Get <OpenSearchDescription>().Body;

            // Assert
            Assert.AreEqual("Blog Search", search.ShortName);
            Assert.AreEqual("Searching for blogs.", search.Description);
            Assert.AreEqual("*****@*****.**", search.Contact);

            Assert.AreEqual(1, search.Urls.Count);
            ILinkTemplate l1 = search.Urls.Select("results");

            Assert.IsNotNull(l1);
        }
Exemplo n.º 24
0
        public static string EntrySelfLinkTemplate(IOpenSearchResultItem item, OpenSearchDescription osd, string mimeType)
        {
            if (item == null)
            {
                return(null);
            }

            string identifier = item.Identifier;

            NameValueCollection nvc = new NameValueCollection();

            nvc.Set("q", string.Format("_id:{0}", item.Identifier));

            UriBuilder template = new UriBuilder(OpenSearchFactory.GetOpenSearchUrlByType(osd, mimeType).Template);

            string[] queryString = Array.ConvertAll(nvc.AllKeys, key => string.Format("{0}={1}", key, nvc[key]));
            template.Query = string.Join("&", queryString);
            return(template.ToString());
        }
        public Terradue.OpenSearch.Schema.OpenSearchDescription GetOpenSearchDescription()
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.ShortName        = "Elastic Catalogue";
            osd.Attribution      = "Terradue";
            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 dataset catalogue. There are several URL templates that return the results in different formats (GeoJson, RDF, ATOM or KML). This search service is in accordance with the OGC 10-032r3 specification.";

            OpenSearchEngine ose = new OpenSearchEngine();

            ose.LoadPlugins();

            var searchExtensions = ose.Extensions;
            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>();

            NameValueCollection parameters = GetOpenSearchParameters(this.DefaultMimeType);

            UriBuilder          searchUrl   = new UriBuilder(string.Format("es://elasticsearch/{0}/{1}/search", this.index.Name, this.Type.Name));
            NameValueCollection queryString = HttpUtility.ParseQueryString("?format=json");

            parameters.AllKeys.FirstOrDefault(k => {
                queryString.Add(parameters[k], "{" + k + "?}");
                return(false);
            });


            searchUrl.Query = queryString.ToString();
            urls.Add(new OpenSearchDescriptionUrl("application/json",
                                                  searchUrl.ToString(),
                                                  "search"));

            osd.Url = urls.ToArray();

            return(osd);
        }
Exemplo n.º 26
0
        /// <summary>
        /// Get the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Get(DataPackageDescriptionDefaultRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default/description GET"));
                Terradue.Tep.DataPackage datapackage = DataPackage.GetTemporaryForCurrentUser(context);
                datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine);
                OpenSearchDescription osd = datapackage.GetLocalOpenSearchDescription();

                context.Close();

                return(new HttpResult(osd, "application/opensearchdescription+xml"));
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
        }
Exemplo n.º 27
0
        public object Get(DataPackagesDescriptionRequest request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/data/package/description GET"));

                EntityList <Terradue.Tep.DataPackage> tmp_datapackages = new EntityList <DataPackage> (context);

                OpenSearchDescription osd = tmp_datapackages.GetOpenSearchDescription();

                context.Close();

                return(new HttpResult(osd, "application/opensearchdescription+xml"));
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
        }
Exemplo n.º 28
0
        public ActionResult OpenSearch()
        {
            string template = String.Format("{0}?q={{searchTerms}}", HttpContext.RootUrl());

            OpenSearchDescription osd = new OpenSearchDescription()
            {
                ShortName   = "CS:GO Searcher",
                Description = "Quickly search the CS:GO Steam market.",
                Url         = new OpenSearchDescriptionUrl()
                {
                    Method   = "get",
                    Type     = "text/html",
                    Template = template
                },
                InputEncoding = "UTF-8"
            };

            string            xml;
            XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
            {
                Indent             = true,
                OmitXmlDeclaration = false,
                Encoding           = Encoding.UTF8
            };

            using (MemoryStream ms = new MemoryStream())
                using (XmlWriter xmlWriter = XmlWriter.Create(ms, xmlWriterSettings))
                {
                    StreamReader sr = new StreamReader(ms, Encoding.UTF8);
                    var          x  = new XmlSerializer(typeof(OpenSearchDescription));
                    x.Serialize(xmlWriter, osd);

                    xmlWriter.Flush();

                    ms.Seek(0, SeekOrigin.Begin);
                    xml = sr.ReadToEnd();
                }

            return(Content(xml, "text/xml"));
        }
Exemplo n.º 29
0
        public Terradue.OpenSearch.Schema.OpenSearchDescription GetOpenSearchDescription()
        {
            OpenSearchDescription osd = new OpenSearchDescription();

            osd.ShortName        = "SciHub";
            osd.Contact          = "*****@*****.**";
            osd.SyndicationRight = "open";
            osd.AdultContent     = "false";
            osd.Language         = "en-us";
            osd.OutputEncoding   = "UTF-8";
            osd.InputEncoding    = "UTF-8";
            osd.Developer        = "Terradue OpenSearch Development Team";
            osd.Attribution      = "Terradue";

            List <OpenSearchDescriptionUrl> urls = new List <OpenSearchDescriptionUrl>();

            UriBuilder urlb = new UriBuilder(qcBaseUrl);

            urlb.Path += "/description";

            OpenSearchDescriptionUrl url = new OpenSearchDescriptionUrl("application/opensearchdescription+xml", urlb.ToString(), "self");

            urls.Add(url);

            urlb       = new UriBuilder(qcBaseUrl);
            urlb.Path += "/search";
            NameValueCollection query = GetOpenSearchParameters("application/atom+xml");

            string[] queryString = Array.ConvertAll(query.AllKeys, key => string.Format("{0}={1}", key, query[key]));
            urlb.Query      = string.Join("&", queryString);
            url             = new OpenSearchDescriptionUrl("application/atom+xml", urlb.ToString(), "search");
            url.IndexOffset = 0;
            urls.Add(url);

            osd.Url        = urls.ToArray();
            osd.DefaultUrl = url;

            return(osd);
        }
Exemplo n.º 30
0
        public object Get(CommunityDescriptionRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/community/description GET"));

                EntityList <ThematicCommunity> domains = new EntityList <ThematicCommunity>(context);
                domains.OpenSearchEngine = MasterCatalogue.OpenSearchEngine;

                OpenSearchDescription osd = domains.GetOpenSearchDescription();

                context.Close();

                return(new HttpResult(osd, "application/opensearchdescription+xml"));
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
        }