Example #1
0
        protected override void beforeEach()
        {
            const string viewPath    = "/_Package1_/Handlers/Models/SerieSL.spark";
            var          appRoot     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates");
            var          packageRoot = Path.Combine(appRoot, "App", "fubu-packages", "Package1", "WebContent");

            var binding1       = new Template(Path.Combine(packageRoot, "Handlers", "Shared", "bindings.xml"), packageRoot, "Package1");
            var binding2       = new Template(Path.Combine(appRoot, "Shared", "bindings.xml"), appRoot, TemplateConstants.HostOrigin);
            var viewPathPolicy = new ViewPathPolicy <ITemplate>();

            viewPathPolicy.Apply(binding1);
            viewPathPolicy.Apply(binding2);

            _viewFolder = MockFor <IViewFolder>();
            _viewFolder.Expect(x => x.GetViewSource(binding1.ViewPath)).Return(new FileSystemViewFile(binding1.FilePath));
            _viewFolder.Expect(x => x.GetViewSource(binding2.ViewPath)).Return(new FileSystemViewFile(binding2.FilePath));

            _request = new BindingRequest(_viewFolder)
            {
                ViewPath = viewPath
            };

            _templateRegistry = MockFor <ISparkTemplateRegistry>();
            _templateRegistry.Expect(x => x.BindingsForView(viewPath)).Return(new[] { binding1, binding2 });
        }
Example #2
0
        public async Task <ActionResult> HttpBinding([FromServices] DaprClient daprClient)
        {
            var request = new BindingRequest("httpbinding", "get");
            var result  = await daprClient.InvokeBindingAsync(request, cancellationToken : _cts.Token);

            return(Ok());
        }
        public async Task InvokeBindingAsync_WithRequest_ValidateRequest()
        {
            await using var client = TestClient.CreateForDaprClient();

            var payload = new InvokeRequest()
            {
                RequestParameter = "Hello "
            };
            var bindingRequest = new BindingRequest("test", "create")
            {
                Data     = JsonSerializer.SerializeToUtf8Bytes(payload, client.InnerClient.JsonSerializerOptions),
                Metadata =
                {
                    { "key1", "value1" },
                    { "key2", "value2" }
                }
            };

            var request = await client.CaptureGrpcRequestAsync(async daprClient =>
            {
                return(await daprClient.InvokeBindingAsync(bindingRequest));
            });

            var gRpcResponse = new Autogen.Grpc.v1.InvokeBindingResponse()
            {
                Data = ByteString.CopyFrom(JsonSerializer.SerializeToUtf8Bytes(new Widget()
                {
                    Color = "red",
                }, client.InnerClient.JsonSerializerOptions)),
                Metadata =
                {
                    { "anotherkey", "anothervalue" },
                }
            };
            var response = await request.CompleteWithMessageAsync(gRpcResponse);

            var envelope = await request.GetRequestEnvelopeAsync <InvokeBindingRequest>();

            envelope.Name.Should().Be("test");
            envelope.Metadata.Count.Should().Be(2);
            envelope.Metadata.Keys.Contains("key1").Should().BeTrue();
            envelope.Metadata.Keys.Contains("key2").Should().BeTrue();
            envelope.Metadata["key1"].Should().Be("value1");
            envelope.Metadata["key2"].Should().Be("value2");

            var json            = envelope.Data.ToStringUtf8();
            var typeFromRequest = JsonSerializer.Deserialize <InvokeRequest>(json, client.InnerClient.JsonSerializerOptions);

            typeFromRequest.RequestParameter.Should().Be("Hello ");

            Assert.Same(bindingRequest, response.Request);
            Assert.Equal("red", JsonSerializer.Deserialize <Widget>(response.Data.Span, client.InnerClient.JsonSerializerOptions).Color);
            Assert.Collection(
                response.Metadata,
                kvp =>
            {
                Assert.Equal("anotherkey", kvp.Key);
                Assert.Equal("anothervalue", kvp.Value);
            });
        }
Example #4
0
        private void RegisterRemoteVariable(BindingRequest req)
        {
            var variable = varCache.VariableByNumber(req.Index);
            var entry    = RegisterVariable(variable);

            entry.TrySendValue();
        }
        public IEnumerable<Binding> GetBindings(BindingRequest bindingRequest)
        {
            var providers = _container.ResolveAll<IBindingProvider>();
              var bindings = providers.SelectMany(x => x.GetBindings(bindingRequest));
              providers.ToList().ForEach(x => _container.Release(x));

              return bindings;
        }
        public override IEnumerable <Binding> GetBindings(BindingRequest bindingRequest)
        {
            var locatedFiles =
                Directory.GetFiles(this.rootPathProvider.GetRootPath(), "bindings.xml", SearchOption.AllDirectories);

            return(locatedFiles.Any() ?
                   locatedFiles.SelectMany(this.LoadBindings) :
                   Enumerable.Empty <Binding>());
        }
Example #7
0
        public override IEnumerable<Binding> GetBindings(BindingRequest bindingRequest)
        {
            var locatedFiles = 
                Directory.GetFiles(this.rootPathProvider.GetRootPath(), "bindings.xml", SearchOption.AllDirectories);

            return locatedFiles.Any() ? 
                locatedFiles.SelectMany(this.LoadBindings) :
                Enumerable.Empty<Binding>();
        }
Example #8
0
        public RestfulResult Bind(BindingRequest request, int?authuid, UserModel authUser)
        {
            request.AuthUser = authUser;
            request.AuthUid  = authuid.Value;

            return(new RestfulResult {
                Data = _cardDataService.Binding(request)
            });
        }
Example #9
0
        private IEnumerable <Binding> FindBindings(string viewPath)
        {
            if (this.BindingProvider == null)
            {
                return(new Binding[0]);
            }
            BindingRequest bindingRequest = new BindingRequest(this.ViewFolder)
            {
                ViewPath = viewPath
            };

            return(this.BindingProvider.GetBindings(bindingRequest));
        }
Example #10
0
        public ExecuteResult <CardInfoResponse> UnBinding(BindingRequest request)
        {
            throw new NotSupportedException("不支持该方法");

            if (request == null || request.AuthUser == null)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            var entities = _cardRepository.GetListForUserId(request.AuthUser.Id, CardType.YintaiMemberCard, DataStatus.Normal).ToList();

            if (entities.Count == 0)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "你还没有绑定银泰卡,请您先绑定"
                });
            }

            if (entities.Count > 1)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.InternalServerError, Message = "服务器开小差了,请您等等再试"
                });
            }

            var entity = entities[0];

            using (var ts = new TransactionScope())
            {
                var delEntity = _cardRepository.GetItem(entity.Id);
                delEntity.UpdatedDate = DateTime.Now;
                delEntity.UpdatedUser = request.AuthUser.Id;
                delEntity.Status      = (int)DataStatus.Deleted;

                _cardRepository.Delete(delEntity);

                _userService.SetCardBinder(entity.User_Id, false);

                ts.Complete();
            }

            return(new ExecuteResult <CardInfoResponse>(null)
            {
                StatusCode = StatusCode.Success, Message = "解除绑定成功"
            });
        }
Example #11
0
        public async Task <Result <BindingInfo> > Create(string sourceBinding, string destinationBinding, BindingType bindingType, string vhost,
                                                         string bindingKey = null, Action <BindingConfigurator> configurator = null, CancellationToken cancellationToken = default)
        {
            cancellationToken.RequestCanceled();

            var impl = new BindingConfiguratorImpl();

            configurator?.Invoke(impl);

            impl.Validate();

            BindingRequest request = new BindingRequest(bindingKey, impl.Arguments.Value);

            Debug.Assert(request != null);

            var errors = new List <Error>();

            errors.AddRange(impl.Errors.Value);

            if (string.IsNullOrWhiteSpace(sourceBinding))
            {
                errors.Add(new ErrorImpl("The name of the source binding (queue/exchange) is missing."));
            }

            if (string.IsNullOrWhiteSpace(destinationBinding))
            {
                errors.Add(new ErrorImpl("The name of the destination binding (queue/exchange) is missing."));
            }

            if (string.IsNullOrWhiteSpace(vhost))
            {
                errors.Add(new ErrorImpl("The name of the virtual host is missing."));
            }

            string virtualHost = vhost.ToSanitizedName();

            string url = bindingType == BindingType.Exchange
                ? $"api/bindings/{virtualHost}/e/{sourceBinding}/e/{destinationBinding}"
                : $"api/bindings/{virtualHost}/e/{sourceBinding}/q/{destinationBinding}";

            if (errors.Any())
            {
                return(new FaultedResult <BindingInfo>(new DebugInfoImpl(url, request.ToJsonString(), errors)));
            }

            Result <BindingInfoImpl> result = await PostRequest <BindingInfoImpl, BindingRequest>(url, request, cancellationToken).ConfigureAwait(false);

            Result <BindingInfo> MapResult(Result <BindingInfoImpl> result) => new ResultCopy(result);

            return(MapResult(result));
        }
Example #12
0
        public override IEnumerable<Binding> GetBindings(BindingRequest bindingRequest)
        {
            if (bindingRequest.ViewFolder.HasView("bindings.xml") == false)
                return new Binding[0];

            var file = bindingRequest.ViewFolder.GetViewSource("bindings.xml");
            using (var stream = file.OpenViewStream())
            {
                using (var reader = new StreamReader(stream))
                {
                    return LoadStandardMarkup(reader);
                }
            }
        }
        public override IEnumerable<Binding> GetBindings(BindingRequest bindingRequest)
        {
            if (!bindingRequest.ViewFolder.HasView(_service + "/Bindings.xml"))
              {
            return Enumerable.Empty<Binding>();
              }

              var file = bindingRequest.ViewFolder.GetViewSource(_service + "/Bindings.xml");
              using (var stream = file.OpenViewStream())
              {
            using (var reader = new StreamReader(stream))
            {
              return LoadStandardMarkup(reader);
            }
              }
        }
        public override IEnumerable<Binding> GetBindings(BindingRequest request)
        {
            var viewFolder = request.ViewFolder;
            var bindings = new List<Binding>();

            foreach (var binding in _bindingTemplates)
            {
                using (var stream = viewFolder.GetViewSource(binding.ViewPath).OpenViewStream())
                using (var reader = new StreamReader(stream))
                {
                    bindings.AddRange(LoadStandardMarkup(reader));
                }
            }

            return bindings;
        }
Example #15
0
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger <Startup> logger, DaprClient daprClient)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCloudEvents();

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapSubscribeHandler();

                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });

                endpoints.MapPost("/history", async context =>
                {
                    var history = await context.Request.ReadFromJsonAsync <TransactionHistory>();
                    if (history.StartingBalance - history.EndingBalance >= 200m)
                    {
                        logger.LogInformation(
                            "Whoa there {Username} is a big spender! Before: {StartingBalance} After:{EndingBalance}",
                            history.Username,
                            history.StartingBalance,
                            history.EndingBalance);

                        // TODO - keep a record of all the big transactions
                        var request = new BindingRequest("auditstore", "create")
                        {
                            Data = CreateUpload(history),
                        };

                        await daprClient.InvokeBindingAsync(request);
                    }

                    // Returning a 2XX status code will mark the message as 'read'
                    //
                    // This would be the default, so it's not explicitly necessary to put in code.
                    context.Response.StatusCode = 200;
                }).WithTopic("pubsub", "history");
            });
        }
Example #16
0
        public override IEnumerable <Binding> GetBindings(BindingRequest request)
        {
            var viewFolder = request.ViewFolder;
            var viewPath   = request.ViewPath;
            var bindings   = new List <Binding>();

            foreach (var binding in _templateRegistry.BindingsForView(viewPath))
            {
                using (var stream = viewFolder.GetViewSource(binding.ViewPath).OpenViewStream())
                    using (var reader = new StreamReader(stream))
                    {
                        bindings.AddRange(LoadStandardMarkup(reader));
                    }
            }

            return(bindings);
        }
Example #17
0
        public async Task Verify_can_create_exchange_binding_without_arguments2()
        {
            var services = GetContainerBuilder().BuildServiceProvider();
            var result   = await services.GetService <IBrokerObjectFactory>()
                           .CreateExchangeBinding("E2", "Q1", "HareDu");

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.HasFaulted);
                Assert.IsNotNull(result.DebugInfo);
                Assert.IsNotNull(result.DebugInfo.Request);

                BindingRequest request = result.DebugInfo.Request.ToObject <BindingRequest>();

                Assert.That(request.BindingKey, Is.Empty.Or.Null);
                Assert.IsNull(request.Arguments);
            });
        }
Example #18
0
        public async Task <IPEndPoint> GetMappedAddressAsync()
        {
            NetworkStream stream  = _control.GetStream();
            var           request = new BindingRequest();

            await SendMessageAsync(stream, request);

            StunMessage response =
                await _responses[request.TransactionId].Task;

            if (response is BindingSuccessResponse success)
            {
                return(success.MappedAddress);
            }

            throw new TurnClientException(
                      "BindingRequest failed.",
                      response);
        }
        public async Task <DeployProcessResponse> DeployProcess([FromForm] DeployProcessRequest request)
        {
            await using var memoryStream = new MemoryStream();
            var(fileContent, fileName)   = request;
            await fileContent.OpenReadStream().CopyToAsync(memoryStream);

            var bindingRequest = new BindingRequest("command", Commands.DeployProcess)
            {
                Data = memoryStream.ToArray().AsMemory()
            };

            bindingRequest.Metadata.Add("fileName", fileName);

            var bindingResponse = await _daprClient.InvokeBindingAsync(bindingRequest);

            var responseJson = await JsonSerializer.DeserializeAsync <DeployProcessResponse>(
                bindingResponse.Data.AsStream(), SerializerOptions.Json);

            return(responseJson);
        }
Example #20
0
        public void EncodeToBytes()
        {
            var request = new BindingRequest()
            {
                TransactionId = new byte[]
                {
                    0xb9, 0x5e, 0x6c, 0xcd, 0xa3, 0x84, 0x74, 0xfb, 0x43, 0xe9,
                    0xae, 0xb1,
                }
            };

            Assert.Equal(
                new byte[]
            {
                0x00, 0x01, 0x00, 0x08, 0x21, 0x12, 0xa4, 0x42, 0xb9, 0x5e,
                0x6c, 0xcd, 0xa3, 0x84, 0x74, 0xfb, 0x43, 0xe9, 0xae, 0xb1,
                0x80, 0x28, 0x00, 0x04, 0xa7, 0xca, 0x62, 0xd4,
            },
                request.Encode(new TestStunContext()));
        }
Example #21
0
        public async Task <IPEndPoint> GetMappedAddressAsync(
            CancellationToken cancellationToken = default(CancellationToken))
        {
            NetworkStream stream  = _control.GetStream();
            var           request = new BindingRequest();

            await SendMessageAsync(stream, request, cancellationToken);

            StunMessage response = await ReceiveMessage(request.TransactionId);

            if (response is BindingSuccessResponse success)
            {
                Log.Debug($"Mapped address: {success.MappedAddress}");
                return(success.MappedAddress);
            }

            throw new TurnClientException(
                      "BindingRequest failed.",
                      response);
        }
Example #22
0
        public async Task Verify_can_create_queue_binding_with_arguments2()
        {
            var services = GetContainerBuilder().BuildServiceProvider();
            var result   = await services.GetService <IBrokerObjectFactory>()
                           .CreateExchangeBindingToQueue("E2", "Q1", "HareDu", "*.", x =>
            {
                x.Add("arg1", "value1");
            });

            Assert.Multiple(() =>
            {
                Assert.IsFalse(result.HasFaulted);
                Assert.IsNotNull(result.DebugInfo);
                Assert.IsNotNull(result.DebugInfo.Request);

                BindingRequest request = result.DebugInfo.Request.ToObject <BindingRequest>();

                Assert.AreEqual("*.", request.BindingKey);
                Assert.AreEqual("value1", request.Arguments["arg1"].ToString());
            });
        }
Example #23
0
        public async Task <bool> IsConnectable(
            CancellationToken cancellationToken = default(CancellationToken))
        {
            try
            {
                using var client = new TcpClient();
#pragma warning disable PC001 // API not supported on all platforms
                client.Connect(_host, _port);
#pragma warning restore PC001 // API not supported on all platforms
                NetworkStream stream = client.GetStream();

                var request = new BindingRequest();
                var asBytes = request.Encode(this);
                await stream.WriteAsync(asBytes, 0, asBytes.Length, cancellationToken);

                await StunMessage.ParseAsync(stream, cancellationToken);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
 //Implement IBindingSource.Bind
 public Binding Bind(BindingRequest request)
 {
     return(BindingInstance);
 }
Example #25
0
 public abstract IEnumerable<Binding> GetBindings(BindingRequest bindingRequest);
Example #26
0
 public IUpdateableBinding BindSingle(BindingRequest bindingRequest)
 {
     return(new FullBinding(bindingRequest));
 }
Example #27
0
 public abstract Binding Bind(BindingRequest request);
 public override Binding Bind(BindingRequest request)
 {
     return(_binding);
 }
Example #29
0
 public FullBinding(BindingRequest bindingRequest)
 {
     _bindingDescription = bindingRequest.Description;
     CreateTargetBinding(bindingRequest.Target);
     CreateSourceBinding(bindingRequest.Source);
 }
Example #30
0
 //Used for imported modules
 public Binding BindToExport(BindingRequest request)
 {
     return(null);
 }
Example #31
0
 Binding IBindingSource.Bind(BindingRequest request)
 {
     return(BindToExport(request));
 }
        public async Task InvokeBindingAsync_WithRequest_ValidateRequest()
        {
            // Configure Client
            var httpClient = new TestHttpClient();
            var daprClient = new DaprClientBuilder()
                             .UseGrpcChannelOptions(new GrpcChannelOptions {
                HttpClient = httpClient
            })
                             .Build();

            var payload = new InvokeRequest()
            {
                RequestParameter = "Hello "
            };
            var request = new BindingRequest("test", "create")
            {
                Data     = JsonSerializer.SerializeToUtf8Bytes(payload, daprClient.JsonSerializerOptions),
                Metadata =
                {
                    { "key1", "value1" },
                    { "key2", "value2" }
                }
            };

            var task = daprClient.InvokeBindingAsync(request);

            // Get Request and validate
            httpClient.Requests.TryDequeue(out var entry).Should().BeTrue();

            var gRpcRequest = await GrpcUtils.GetRequestFromRequestMessageAsync <InvokeBindingRequest>(entry.Request);

            gRpcRequest.Name.Should().Be("test");
            gRpcRequest.Metadata.Count.Should().Be(2);
            gRpcRequest.Metadata.Keys.Contains("key1").Should().BeTrue();
            gRpcRequest.Metadata.Keys.Contains("key2").Should().BeTrue();
            gRpcRequest.Metadata["key1"].Should().Be("value1");
            gRpcRequest.Metadata["key2"].Should().Be("value2");

            var json            = gRpcRequest.Data.ToStringUtf8();
            var typeFromRequest = JsonSerializer.Deserialize <InvokeRequest>(json, daprClient.JsonSerializerOptions);

            typeFromRequest.RequestParameter.Should().Be("Hello ");

            var gRpcResponse = new Autogen.Grpc.v1.InvokeBindingResponse()
            {
                Data = ByteString.CopyFrom(JsonSerializer.SerializeToUtf8Bytes(new Widget()
                {
                    Color = "red",
                }, daprClient.JsonSerializerOptions)),
                Metadata =
                {
                    { "anotherkey", "anothervalue" },
                }
            };
            var streamContent = await GrpcUtils.CreateResponseContent(gRpcResponse);

            entry.Completion.SetResult(GrpcUtils.CreateResponse(HttpStatusCode.OK, streamContent));

            var response = await task;

            Assert.Same(request, response.Request);
            Assert.Equal("red", JsonSerializer.Deserialize <Widget>(response.Data.Span, daprClient.JsonSerializerOptions).Color);
            Assert.Collection(
                response.Metadata,
                kvp =>
            {
                Assert.Equal("anotherkey", kvp.Key);
                Assert.Equal("anothervalue", kvp.Value);
            });
        }
Example #33
0
        /// <summary>
        /// 绑定
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult <CardInfoResponse> Binding(BindingRequest request)
        {
            //1.当前用户是否绑定过该卡
            //2.该卡是否被绑定过
            //3.验证是否可以绑定
            // 3.1 集团验证
            //4.入库
            //5.查询积点

            if (request == null || request.AuthUser == null)
            {
                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                });
            }

            var entity = _cardRepository.GetItemByCard(request.CardNo, CardType.YintaiMemberCard, DataStatus.Normal);

            if (entity != null)
            {
                if (entity.User_Id != request.AuthUser.Id)
                {
                    return(new ExecuteResult <CardInfoResponse>(null)
                    {
                        StatusCode = StatusCode.ClientError, Message = "该会员卡已经被绑定"
                    });
                }

                return(new ExecuteResult <CardInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError, Message = "您已经绑定过该会员卡"
                });
            }

            var result = _groupCardService.GetInfo(new GroupCardInfoRequest
            {
                CardNo = request.CardNo,
                Passwd = request.Password
            });

            if (result.RetType == GroupCardRetType.Ok)
            {
                using (var ts = new TransactionScope())
                {
                    //入库
                    var e = _cardRepository.Insert(new CardEntity
                    {
                        CardNo      = request.CardNo,
                        CardProfile = JsonExtension.ToJson_(new CardProfile
                        {
                            Lvl  = result.Lvl,
                            Type = result.Type
                        }),
                        CreatedDate = DateTime.Now,
                        CreatedUser = request.AuthUser.Id,
                        Status      = (int)DataStatus.Normal,
                        Type        = (int)CardType.YintaiMemberCard,
                        UpdatedDate = DateTime.Now,
                        UpdatedUser = request.AuthUser.Id,
                        User_Id     = request.AuthUser.Id
                    });
                    //成功后
                    _userService.SetCardBinder(e.User_Id, true);

                    ts.Complete();
                }

                return(GetInfo(new GetCardInfoRequest
                {
                    AuthUser = request.AuthUser,
                    CardNo = request.CardNo,
                    Client_Version = request.Client_Version,
                    Method = request.Method,
                    Token = request.Token
                }, "恭喜您绑定会员卡成功"));
            }

            return(new ExecuteResult <CardInfoResponse>(null)
            {
                StatusCode = StatusCode.ClientError, Message = "会员卡号或密码错"
            });
        }
Example #34
0
 public Binding Bind(BindingRequest request)
 {
     return(null);
 }