Пример #1
0
        public async Task UpdateNode()
        {
            var res = await _tvheadendService.NodesAsync(new QueryParams
            {
                Limit   = 1,
                Filters = new List <IQueryParamsFilter> {
                    FactoryQueryParamsFilter.CreateStringQueryParamsFilter("name", "bein")
                }
            }, API_URLS.CHANNELS_LIST, CancellationToken.None);

            Assert.Single(res);

            var expectedMediaName = (string)res.SingleOrDefault()["name"];

            res.SingleOrDefault()["name"] = nameof(UpdateNode);
            _tvheadendService.UpdateNode(res);

            res = await _tvheadendService.NodesAsync(new QueryParams
            {
                Limit   = 1,
                Filters = new List <IQueryParamsFilter> {
                    FactoryQueryParamsFilter.CreateStringQueryParamsFilter("name", nameof(UpdateNode))
                }
            }, API_URLS.CHANNELS_LIST, CancellationToken.None);

            Assert.Single(res);
            res.SingleOrDefault()["name"] = expectedMediaName;
            _tvheadendService.UpdateNode(res);
        }
Пример #2
0
        public void ListEpg(string field, string query, int count)
        {
            var res = _tvheadendService.EPG(new QueryParams
            {
                Limit   = count,
                Filters = new List <IQueryParamsFilter> {
                    FactoryQueryParamsFilter.CreateStringQueryParamsFilter(field, query)
                }
            });

            Assert.Equal(count, res.Count());
        }
Пример #3
0
        public void UpdateMediaTest(string field, string query)
        {
            var res = _tvheadendService.Channels(new QueryParams
            {
                Filters = new List <IQueryParamsFilter> {
                    FactoryQueryParamsFilter.CreateStringQueryParamsFilter(field, query)
                }
            });

            Assert.NotNull(res);
            Assert.Equal(20, res.Count());
        }
Пример #4
0
        /// <summary>
        /// filter:[{"type":"string","value":"bein","field":"name"},
        ///         {"type":"numeric","comparison":"lt","value":10000000,"intsplit":1000000,"field":"number"}]
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        protected override Expression VisitBinary(BinaryExpression node)
        {
            switch (node.NodeType)
            {
            case ExpressionType.And:
            case ExpressionType.AndAlso:
            case ExpressionType.Or:
            case ExpressionType.OrElse:
                Visit(node.Left);
                Visit(node.Right);
                break;

            case ExpressionType.Constant:
                return(node);

            case ExpressionType.NotEqual:
            case ExpressionType.Equal:
            case ExpressionType.GreaterThan:
            case ExpressionType.GreaterThanOrEqual:
            case ExpressionType.LessThan:
            case ExpressionType.LessThanOrEqual:
                // FIRST STEP
                // We support only a comparison between constant
                // and a possible flight query parameter
                ConstantExpression constant =
                    (node.Left as ConstantExpression ?? node.Right as ConstantExpression);
                MemberExpression memberAccess =
                    (node.Left as MemberExpression ?? node.Right as MemberExpression);
                // SECOND STEP
                // Sanity check of parameters
                if ((memberAccess == null) || (constant == null))
                {
                    throw new NotSupportedException(string.Format("The binary operator '{0}' must compare a valid " + "flight attribute with a constant", node.NodeType));
                }
                if (constant.Value == null)
                {
                    throw new NotSupportedException(string.Format("NULL constant is not supported in binary operator {0}", node.ToString()));
                }

                switch (Type.GetTypeCode(constant.Value.GetType()))
                {
                case TypeCode.String:
                case TypeCode.Int16:
                case TypeCode.Int32:
                case TypeCode.Double:
                    break;

                default:
                    throw new NotSupportedException(string.Format("Constant {0} is of an unsupported type ({1})", constant.ToString(), constant.Value.GetType().Name));
                }

                _queryParams.Filters.Add(FactoryQueryParamsFilter.CreateNumericQueryParamsFilter(memberAccess.Member.Name.ToLowerInvariant(), constant.Value.ToString(), GetComparaison(node.NodeType)));
                break;

            case ExpressionType.Parameter:
                break;

            case ExpressionType.IsTrue:
            case ExpressionType.IsFalse:
                CheckType(node, typeof(bool));
                break;

            default:
                throw new NotSupportedException();
            }

            return(node);
        }