/// <summary> /// Get the specified request. /// </summary> /// <param name="request">Request.</param> public object Get(DataPackageSearchDefaultRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); IOpenSearchResultCollection result = null; try { context.Open(); context.LogInfo(this, string.Format("/data/package/default/search GET")); Terradue.Tep.DataPackage datapackage = DataPackage.GetTemporaryForCurrentUser(context); datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine); OpenSearchEngine ose = MasterCatalogue.OpenSearchEngine; Type responseType = OpenSearchFactory.ResolveTypeFromRequest(HttpContext.Current.Request.QueryString, HttpContext.Current.Request.Headers, ose); List <Terradue.OpenSearch.IOpenSearchable> osentities = new List <Terradue.OpenSearch.IOpenSearchable>(); osentities.AddRange(datapackage.GetOpenSearchableArray()); var settings = MasterCatalogue.OpenSearchFactorySettings; MultiGenericOpenSearchable multiOSE = new MultiGenericOpenSearchable(osentities, settings); result = ose.Query(multiOSE, Request.QueryString, responseType); MasterCatalogue.ReplaceSelfLinksFormat(result, Request.QueryString); context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(new HttpResult(result.SerializeToString(), result.ContentType)); }
/// <summary> /// Get the specified request. /// </summary> /// <param name="request">Request.</param> public object Get(GetOpensearchSearch request) { var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); IOpenSearchResultCollection result = null; try{ context.Open(); context.LogInfo(this, string.Format("/data/collection/{{serieId}}/search GET serieId='{0}'", request.serieId)); // Load the complete request HttpRequest httpRequest = HttpContext.Current.Request; if (request.serieId == null) { throw new ArgumentNullException(Terradue.Tep.WebServer.CustomErrorMessages.WRONG_IDENTIFIER); } Terradue.Tep.Collection serie = Terradue.Tep.Collection.FromIdentifier(context, request.serieId); OpenSearchEngine ose = MasterCatalogue.OpenSearchEngine; ose.DefaultTimeOut = 60000; Type type = OpenSearchFactory.ResolveTypeFromRequest(httpRequest.QueryString, httpRequest.Headers, ose); result = ose.Query(serie, httpRequest.QueryString, type); var descriptionUrl = serie.GetDescriptionBaseUrl("application/opensearchdescription+xml"); if (descriptionUrl != null) { result.Links.Add(new SyndicationLink(new Uri(descriptionUrl.Template), descriptionUrl.Relation, "OpenSearch Description link", descriptionUrl.Type, 0)); } MasterCatalogue.ReplaceSelfLinksFormat(result, Request.QueryString); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(new HttpResult(result.SerializeToString(), result.ContentType)); }
/// <summary> /// Get the specified request. /// </summary> /// <param name="request">Request.</param> public object Get(GetOpensearchDescriptions request) { OpenSearchDescription OSDD; var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); try{ context.Open(); context.LogInfo(this, string.Format("/data/collection/description GET")); MasterCatalogue cat = new MasterCatalogue(context); OSDD = cat.GetOpenSearchDescription(); 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); }
/// <summary> /// Get the specified request. /// </summary> /// <param name="request">Request.</param> public object Get(DataPackageSearchRequest request) { var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); IOpenSearchResultCollection result = null; try { context.Open(); context.LogInfo(this, string.Format("/data/package/{{DataPackageId}}/search GET DataPackageId='{0}'", request.DataPackageId)); Terradue.Tep.DataPackage datapackage; try{ datapackage = DataPackage.FromIdentifier(context, request.DataPackageId); }catch (Exception) { if (request.Key != null) //or if public { 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); } } if (Request.QueryString != null && Request.QueryString["cache"] == "false") { datapackage.SetOpenSearchEngine(MasterCatalogue.GetNewOpenSearchEngine()); } else if (Request.QueryString != null && Request.QueryString["clearcache"] == "true") { datapackage.SetOpenSearchEngine(MasterCatalogue.ClearOpenSearchEngine()); } else { datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine); } OpenSearchEngine ose = MasterCatalogue.OpenSearchEngine; Type responseType = OpenSearchFactory.ResolveTypeFromRequest(HttpContext.Current.Request.QueryString, HttpContext.Current.Request.Headers, ose); result = ose.Query(datapackage, Request.QueryString, responseType); var openSearchDescription = datapackage.GetLocalOpenSearchDescription(); var uri_s = datapackage.GetSearchBaseUrl(); OpenSearchDescriptionUrl openSearchUrlByRel = OpenSearchFactory.GetOpenSearchUrlByRel(openSearchDescription, "self"); Uri uri_d; if (openSearchUrlByRel != null) { uri_d = new Uri(openSearchUrlByRel.Template); } else { uri_d = openSearchDescription.Originator; } if (uri_d != null) { result.Links.Add(new SyndicationLink(uri_d, "search", "OpenSearch Description link", "application/opensearchdescription+xml", 0)); } if (uri_s != null) { result.Links.Add(new SyndicationLink(uri_s, "self", "OpenSearch Search link", "application/atom+xml", 0)); } MasterCatalogue.ReplaceSelfLinksFormat(result, Request.QueryString); ActivityTep activity = new ActivityTep(context, datapackage, EntityOperationType.Search); activity.SetParam("items", result.TotalResults + ""); activity.Store(); context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(new HttpResult(result.SerializeToString(), result.ContentType)); }