Exemple #1
0
        /// <summary>
        /// Converts the MetaConditions object into a collection of IUriCondition instances
        /// </summary>
        public IEnumerable <IUriCondition> AsConditionList()
        {
            var list = new List <IUriCondition>();

            if (Unsafe)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Unsafe, "true"));
            }
            if (Limit.Number > -1)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Limit, Limit.Number.ToString()));
            }
            if (Offset.Number == int.MinValue)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Offset, "-∞"));
            }
            else if (Offset.Number == int.MaxValue)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Offset, "∞"));
            }
            else if (Offset.Number != 0)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Offset, Offset.Number.ToString()));
            }
            if (OrderBy is OrderByDescending)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Order_desc, OrderBy.Term.ToString()));
            }
            else if (OrderBy != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Order_asc, OrderBy.Term.ToString()));
            }
            if (Select != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Select, string.Join(",", Select)));
            }
            if (Add != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Add, string.Join(",", Add)));
            }
            if (Rename != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Rename, string.Join(",", Rename.Select(r => $"{r.Key}->{r.Value}"))));
            }
            if (Distinct != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Distinct, "true"));
            }
            if (Search is RegexSearch)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Search_regex, Search.GetValueLiteral()));
            }
            else if (Search != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Search, Search.GetValueLiteral()));
            }
            if (SafePost != null)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Safepost, SafePost));
            }
            if (Formatter.HasValue)
            {
                list.Add(new UriCondition(RESTarMetaCondition.Format, Formatter.Value.Name));
            }
            return(list);
        }