public NameValueCollection GetOpenSearchParameters(string mimeType) { var parameters = openSearchable.GetOpenSearchParameters(mimeType); parameters.Set("do", "{t2:downloadOrigin?}"); return(parameters); }
private NameValueCollection PrepareQueryParameters(IOpenSearchable entity) { NameValueCollection nvc = new NameValueCollection(); totalResults = 0; foreach (string parameter in parameterArgs) { Match matchParamDef = Regex.Match(parameter, @"^(.*)=(.*)$"); // if martch is successful if (matchParamDef.Success) { // TODO filter and convert query param if (matchParamDef.Groups[1].Value == "count") { if (matchParamDef.Groups[2].Value == "unlimited") { nvc.Add(matchParamDef.Groups[1].Value, pagination.ToString()); totalResults = int.MaxValue; continue; } totalResults = int.Parse(matchParamDef.Groups[2].Value); if (totalResults > pagination) { nvc.Add(matchParamDef.Groups[1].Value, pagination.ToString()); continue; } } nvc.Add(matchParamDef.Groups[1].Value, matchParamDef.Groups[2].Value); } } if (totalResults == 0) { totalResults = pagination; nvc.Add("count", pagination.ToString()); } NameValueCollection remoteParams = entity.GetOpenSearchParameters(entity.DefaultMimeType); if (remoteParams["do"] != null && nvc["do"] == null) { if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOWNLOAD_ORIGIN"))) { nvc["do"] = Environment.GetEnvironmentVariable("DOWNLOAD_ORIGIN"); } else { nvc["do"] = Dns.GetHostName(); } } dataModel.SetQueryParameters(nvc); return(nvc); }
private NameValueCollection ResolveParameters(NameValueCollection nameValueCollection, IOpenSearchable entity) { string contentType = entity.DefaultMimeType; NameValueCollection osdParam = entity.GetOpenSearchParameters(contentType); NameValueCollection osdRevParams = OpenSearchFactory.ReverseTemplateOpenSearchParameters(osdParam); NameValueCollection parameters = new NameValueCollection(); foreach (string key in nameValueCollection.AllKeys) { if (osdRevParams[key] != null) { foreach (string id in osdRevParams.GetValues(key)) { parameters.Set(id, nameValueCollection[key]); } } else { parameters.Set(key, nameValueCollection[key]); } } return(parameters); }
NameValueCollection ResolveParameters(NameValueCollection nameValueCollection, IOpenSearchable entity) { string contentType = entity.DefaultMimeType; NameValueCollection osdParam = entity.GetOpenSearchParameters(contentType); NameValueCollection osdRevParams = OpenSearchFactory.ReverseTemplateOpenSearchParameters(osdParam); NameValueCollection parameters = new NameValueCollection(); foreach (string key in nameValueCollection.AllKeys) { if (osdRevParams[key] != null) { foreach (var id in osdRevParams.GetValues(key)) parameters.Set(id, nameValueCollection[key]); } else { parameters.Set(key, nameValueCollection[key]); } } return parameters; }
NameValueCollection PrepareQueryParameters(IOpenSearchable entity) { NameValueCollection nvc = new NameValueCollection(); totalResults = 0; foreach (var parameter in parameterArgs) { Match matchParamDef = Regex.Match(parameter, @"^(.*)=(.*)$"); // if martch is successful if (matchParamDef.Success) { // TODO filter and convert query param if (matchParamDef.Groups[1].Value == "count") { if (matchParamDef.Groups[2].Value == "unlimited") { nvc.Add(matchParamDef.Groups[1].Value, pagination.ToString()); totalResults = int.MaxValue; continue; } totalResults = int.Parse(matchParamDef.Groups[2].Value); if (totalResults > pagination) { nvc.Add(matchParamDef.Groups[1].Value, pagination.ToString()); continue; } } nvc.Add(matchParamDef.Groups[1].Value, matchParamDef.Groups[2].Value); } } if (totalResults == 0) { totalResults = pagination; nvc.Add("count", pagination.ToString()); } var remoteParams = entity.GetOpenSearchParameters(entity.DefaultMimeType); if (remoteParams["do"] != null && nvc["do"] == null) { nvc["do"] = Dns.GetHostName(); } dataModel.SetQueryParameters(nvc); return nvc; }
/// <summary> /// Gets the name of the identifier from parameter. /// </summary> /// <returns>The identifier from parameter name.</returns> /// <param name="entity">Entity.</param> /// <param name="mimeType">MIME type.</param> /// <param name="paramName">Parameter name.</param> public static string GetIdFromParamName(IOpenSearchable entity, string mimeType, string paramName) { NameValueCollection nvc = entity.GetOpenSearchParameters(mimeType); NameValueCollection revNvc = ReverseTemplateOpenSearchParameters(nvc); return revNvc[paramName]; }
/// <summary> /// Create an OpenSearchRequest based on the IOpenSearchable entity, type and parameters. /// </summary> /// <description> /// This method is the basic default implementation for creating OpenSearchRequest. It supports only 2 schemes: /// 1) file:// that will create a FileOpenSearchRequest /// 2) http:// that will create an HttpOpenSearchRequest /// <param name="entity">IOpenSearchable Entity.</param> /// <param name="type">MimeType of the request.</param> /// <param name="parameters">Parameters of the request.</param> public static OpenSearchRequest Create(IOpenSearchable entity, QuerySettings querySettings, NameValueCollection parameters) { OpenSearchDescription osd = entity.GetOpenSearchDescription(); OpenSearchDescriptionUrl url = OpenSearchFactory.GetOpenSearchUrlByType(osd, querySettings.PreferredContentType); if (url == null) throw new InvalidOperationException(string.Format("Could not find a URL template for entity {0} with type {1}", entity.Identifier, querySettings.PreferredContentType)); OpenSearchUrl queryUrl = OpenSearchFactory.BuildRequestUrlForTemplate(url, parameters, entity.GetOpenSearchParameters(querySettings.PreferredContentType), querySettings); OpenSearchRequest request = null; switch (queryUrl.Scheme) { case "http": case "https": request = new HttpOpenSearchRequest(queryUrl, querySettings.PreferredContentType); ((HttpOpenSearchRequest)request).TimeOut = 60000; break; case "file": request = new FileOpenSearchRequest(queryUrl, querySettings.PreferredContentType); break; } request.OriginalParameters = parameters; return request; }