private static void UnmarshallResult(XmlUnmarshallerContext context, CreateRuleResponse response)
        {
            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth += 2;
            }

            while (context.ReadAtDepth(originalDepth))
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("Rules/member", targetDepth))
                    {
                        var unmarshaller = RuleUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.Rules.Add(item);
                        continue;
                    }
                }
            }

            return;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            CreateRuleResponse response = new CreateRuleResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("ChangeToken", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.ChangeToken = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Rule", targetDepth))
                {
                    var unmarshaller = RuleUnmarshaller.Instance;
                    response.Rule = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Exemplo n.º 3
0
        //创建一个完整的规则,订阅的Topic是系统类型(平台内置的)
        public void TestCreateRuleAboutSystemTopic()
        {
            DefaultAcsClient  acsClient = Demo.IotClient.GetClient();
            CreateRuleRequest request   = new CreateRuleRequest();

            //Topic名称不能同名
            request.Name       = "Rule_Property_Topic_0826";
            request.ProductKey = "<productKey>";
            //使用通配符,订阅全部设备的
            request.ShortTopic = "+/thing/event/property/post";
            //自定义Topic
            request.TopicType = 0;
            request.Select    = "*";
            request._Where    = " 1=1 ";
            request.DataType  = "JSON";
            request.RuleDesc  = "This is a test.";

            CreateRuleResponse response = acsClient.GetAcsResponse(request);

            Console.WriteLine("Create Rule: " + response.Success);
            if (!(bool)response.Success)
            {
                Console.WriteLine(response.Code + ", " + response.ErrorMessage);
                return;
            }
            Console.WriteLine("Rule: " + response.RuleId);
        }
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            CreateRuleResponse response = new CreateRuleResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.IsStartElement)
                {
                    if (context.TestExpression("CreateRuleResult", 2))
                    {
                        UnmarshallResult(context, response);
                        continue;
                    }

                    if (context.TestExpression("ResponseMetadata", 2))
                    {
                        response.ResponseMetadata = ResponseMetadataUnmarshaller.Instance.Unmarshall(context);
                    }
                }
            }

            return(response);
        }
        public static CreateRuleResponse Unmarshall(UnmarshallerContext _ctx)
        {
            CreateRuleResponse createRuleResponse = new CreateRuleResponse();

            createRuleResponse.HttpResponse = _ctx.HttpResponse;
            createRuleResponse.Code         = _ctx.StringValue("CreateRule.Code");
            createRuleResponse.Success      = _ctx.BooleanValue("CreateRule.Success");
            createRuleResponse.Message      = _ctx.StringValue("CreateRule.Message");
            createRuleResponse.RequestId    = _ctx.StringValue("CreateRule.RequestId");

            CreateRuleResponse.CreateRule_Model model = new CreateRuleResponse.CreateRule_Model();
            model.CreateTime         = _ctx.LongValue("CreateRule.Model.CreateTime");
            model.ModifyTime         = _ctx.LongValue("CreateRule.Model.ModifyTime");
            model.TenantId           = _ctx.StringValue("CreateRule.Model.TenantId");
            model.RuleName           = _ctx.StringValue("CreateRule.Model.RuleName");
            model.RuleRId            = _ctx.StringValue("CreateRule.Model.RuleRId");
            model.RuleType           = _ctx.StringValue("CreateRule.Model.RuleType");
            model.RelatedAdSlots     = _ctx.StringValue("CreateRule.Model.RelatedAdSlots");
            model.RuleConfig         = _ctx.StringValue("CreateRule.Model.RuleConfig");
            model.Status             = _ctx.StringValue("CreateRule.Model.Status");
            model.AccessStatus       = _ctx.StringValue("CreateRule.Model.AccessStatus");
            model.ExtInfo            = _ctx.StringValue("CreateRule.Model.ExtInfo");
            model.Version            = _ctx.LongValue("CreateRule.Model.Version");
            model.RuleId             = _ctx.StringValue("CreateRule.Model.RuleId");
            createRuleResponse.Model = model;

            return(createRuleResponse);
        }
Exemplo n.º 6
0
        //创建一个完整的规则,订阅的Topic是自定义类型(自己创建的)
        public void TestCreateRuleAboutUserTopic()
        {
            DefaultAcsClient  acsClient = Demo.IotClient.GetClient();
            CreateRuleRequest request   = new CreateRuleRequest();

            //Topic名称不能同名
            request.Name       = "Rule_User_Topic_0826";
            request.ProductKey = "<productKey>";

            request.ShortTopic = "firstDevice/user/update";
            //自定义Topic
            request.TopicType = 1;
            request.Select    = "*";
            request._Where    = " 1=1 ";
            request.DataType  = "JSON";
            request.RuleDesc  = "This is a test.";

            CreateRuleResponse response = acsClient.GetAcsResponse(request);

            Console.WriteLine("Create Rule: " + response.Success);
            if (!(bool)response.Success)
            {
                Console.WriteLine(response.Code + ", " + response.ErrorMessage);
                return;
            }
            Console.WriteLine("Rule: " + response.RuleId);
        }
        public static CreateRuleResponse Unmarshall(UnmarshallerContext context)
        {
            CreateRuleResponse createRuleResponse = new CreateRuleResponse();

            createRuleResponse.HttpResponse = context.HttpResponse;
            createRuleResponse.RequestId    = context.StringValue("CreateRule.RequestId");

            return(createRuleResponse);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            CreateRuleResponse response = new CreateRuleResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("Description", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Description = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Identifier", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Identifier = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("ResourceTags", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <ResourceTag, ResourceTagUnmarshaller>(ResourceTagUnmarshaller.Instance);
                    response.ResourceTags = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("ResourceType", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.ResourceType = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("RetentionPeriod", targetDepth))
                {
                    var unmarshaller = RetentionPeriodUnmarshaller.Instance;
                    response.RetentionPeriod = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Status", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Status = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("Tags", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <Tag, TagUnmarshaller>(TagUnmarshaller.Instance);
                    response.Tags = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        public static CreateRuleResponse Unmarshall(UnmarshallerContext context)
        {
            CreateRuleResponse createRuleResponse = new CreateRuleResponse();

            createRuleResponse.HttpResponse = context.HttpResponse;
            createRuleResponse.RequestId    = context.StringValue("CreateRule.RequestId");
            createRuleResponse.Success      = context.BooleanValue("CreateRule.Success");
            createRuleResponse.ErrorMessage = context.StringValue("CreateRule.ErrorMessage");
            createRuleResponse.RuleId       = context.LongValue("CreateRule.RuleId");

            return(createRuleResponse);
        }
Exemplo n.º 10
0
        public static CreateRuleResponse Unmarshall(UnmarshallerContext _ctx)
        {
            CreateRuleResponse createRuleResponse = new CreateRuleResponse();

            createRuleResponse.HttpResponse = _ctx.HttpResponse;
            createRuleResponse.Code         = _ctx.StringValue("CreateRule.Code");
            createRuleResponse.Message      = _ctx.StringValue("CreateRule.Message");
            createRuleResponse.RequestId    = _ctx.StringValue("CreateRule.RequestId");

            CreateRuleResponse.CreateRule_Data data = new CreateRuleResponse.CreateRule_Data();
            data.Content            = _ctx.StringValue("CreateRule.Data.Content");
            data.Id                 = _ctx.StringValue("CreateRule.Data.Id");
            data.Name               = _ctx.StringValue("CreateRule.Data.Name");
            createRuleResponse.Data = data;

            return(createRuleResponse);
        }
        public static CreateRuleResponse Unmarshall(UnmarshallerContext _ctx)
        {
            CreateRuleResponse createRuleResponse = new CreateRuleResponse();

            createRuleResponse.HttpResponse = _ctx.HttpResponse;
            createRuleResponse.Code         = _ctx.StringValue("CreateRule.code");
            createRuleResponse.RequestId    = _ctx.StringValue("CreateRule.requestId");
            createRuleResponse.Message      = _ctx.StringValue("CreateRule.message");

            CreateRuleResponse.CreateRule_Result result = new CreateRuleResponse.CreateRule_Result();
            result.GmtModified        = _ctx.StringValue("CreateRule.Result.gmtModified");
            result.GmtCreate          = _ctx.StringValue("CreateRule.Result.gmtCreate");
            result.RuleId             = _ctx.StringValue("CreateRule.Result.ruleId");
            result.Status             = _ctx.StringValue("CreateRule.Result.status");
            createRuleResponse.Result = result;

            return(createRuleResponse);
        }
Exemplo n.º 12
0
        //创建一个简单的规则,不设置处理规则(不指定规则订阅的topic)
        public void TestCreateSimpleRule()
        {
            DefaultAcsClient  acsClient = Demo.IotClient.GetClient();
            CreateRuleRequest request   = new CreateRuleRequest();

            request.Name     = "Rule_JSON_0826";
            request.DataType = "JSON";
            request.RuleDesc = "This is a test.";

            CreateRuleResponse response = acsClient.GetAcsResponse(request);

            Console.WriteLine("Create Rule: " + response.Success);
            if (!(bool)response.Success)
            {
                Console.WriteLine(response.Code + ", " + response.ErrorMessage);
                return;
            }
            Console.WriteLine("Rule: " + response.RuleId);
        }
Exemplo n.º 13
0
        public async Task <Guid> CreatAsync(Guid groupId, int index, string pattern, SourceTypeEnum sourceType, DestinationTypeEnum destinationType = DestinationTypeEnum.Any)
        {
            CreateRuleRequest request = new CreateRuleRequest
            {
                Index           = index,
                Pattern         = pattern,
                SourceType      = sourceType,
                DestinationType = destinationType,
                GroupId         = groupId
            };
            HttpResponseMessage response = await client.PostAsJsonAsync(
                controllerPath, request);

            if (response.IsSuccessStatusCode)
            {
                CreateRuleResponse rule = await response.Content.ReadAsAsync <CreateRuleResponse>();

                return(rule.Id);
            }
            else
            {
                throw new UnauthorizedAccessException($"Unauthorized rule creation at index '{index}' for group '{groupId}'");
            }
        }