private static string CreateQueryStringUrlTemplate(string functionId, XmlNamespaceSearchCriterionSet xmlCriterionSet, HttpContext httpContext, IOpenSearchContext openSearchContext)
        {
            UriBuilder uriTemplate = new UriBuilder(openSearchContext.BaseSearchUrlTemplate.ToString().Replace("{functionId}", functionId));

            uriTemplate.Query = xmlCriterionSet.ToQueryStringUrlTemplate();

            return(uriTemplate.ToString());
        }
 public static XmlSerializerNamespaces GetExtraNamespacesIfAny(this XmlNamespaceSearchCriterionSet criterionSet)
 {
     if (criterionSet.NamespacePrefixes == null || criterionSet.NamespacePrefixes.Count() == 0)
     {
         return(null);
     }
     return(new XmlSerializerNamespaces(
                criterionSet.NamespacePrefixes.ToArray()
                ));
 }
        internal static XmlNamespaceSearchCriterionSet QualifyCriterionSetForOpenSearch(ISearchCriterionSet criterionSet)
        {
            if (criterionSet is XmlNamespaceSearchCriterionSet)
            {
                return(criterionSet as XmlNamespaceSearchCriterionSet);
            }

            XmlNamespaceSearchCriterionSet xmlCriterionSet = new XmlNamespaceSearchCriterionSet();

            foreach (var criterion in criterionSet)
            {
                ISearchCriterion newCriterion = criterion;
                if (criterion is FreeTextSearchCriterion)
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(OSNS_PREFIX);
                    xmlCriterionSet.Add(XmlNamespaceSearchCriterionSet.QualifyCriterion(OSXN_SEARCHTERMS, criterion));
                }
                else if (criterion is PageSizeSearchCriterion)
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(OSNS_PREFIX);
                    xmlCriterionSet.Add(XmlNamespaceSearchCriterionSet.QualifyCriterion(OSXN_COUNT, criterion));
                }
                else if (criterion is StartIndexSearchCriterion)
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(OSNS_PREFIX);
                    xmlCriterionSet.Add(XmlNamespaceSearchCriterionSet.QualifyCriterion(OSXN_STARTINDEX, criterion));
                }
                else if (criterion is StartPageSearchCriterion)
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(OSNS_PREFIX);
                    xmlCriterionSet.Add(XmlNamespaceSearchCriterionSet.QualifyCriterion(OSXN_STARTPAGE, criterion));
                }
                else if (criterion is LanguageSearchCriterion)
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(OSNS_PREFIX);
                    xmlCriterionSet.Add(XmlNamespaceSearchCriterionSet.QualifyCriterion(OSXN_LANGUAGE, criterion));
                }
                else
                {
                    xmlCriterionSet.AddNamespacePrefixIfNotExist(UKNS_PREFIX);
                    newCriterion = XmlNamespaceSearchCriterionSet.QualifyCriterion(new XmlQualifiedName(criterion.Identifier, UKNS), criterion);
                }
            }
            return(xmlCriterionSet);
        }