示例#1
0
        public ProxyStrategyProvider(ProxyNamespaceConfig namespaceConfig)
        {
            _namespaceConfig = namespaceConfig;

            _client = namespaceConfig.CreateClient?.Invoke("") ?? new HttpClient();

            _client.BaseAddress = new Uri(_namespaceConfig.Url);

            _clientProvider = new RpcHttpClientProvider(_client);
        }
示例#2
0
        public void RpcProxyServiceMakeCallMethodNotAuthorized(IRpcHttpClient client,
                                                               IRpcHttpClientProvider clientProvider,
                                                               RpcProxyService proxyService)
        {
            var response = new HttpResponseMessage(HttpStatusCode.Accepted)
            {
                Content = new StreamContent(new ErrorResponseMessage(JsonRpcErrorCode.UnauthorizedAccess, "Not Authorized").SerializeToStream())
            };

            client.SendAsync(Arg.Any <HttpRequestMessage>()).Returns(response);

            clientProvider.GetHttpClient(Arg.Any <string>(), Arg.Any <string>()).Returns(client);

            var bytes = new byte[] { 0, 1, 1, 0 };

            Assert.Throws <AggregateException>(() => proxyService.MakeCallNoReturn("SomeNamespace", "SomeClass", "SomeMethod", bytes, false, false));
        }
示例#3
0
        public void RpcProxyServiceMakeCallNoReturn(IRpcHttpClient client,
                                                    IRpcHttpClientProvider clientProvider,
                                                    RpcProxyService proxyService)
        {
            var response = new HttpResponseMessage(HttpStatusCode.Accepted)
            {
                Content = new StreamContent(new EmptyResponseMessage("2.0", "1").SerializeToStream())
            };

            client.SendAsync(Arg.Any <HttpRequestMessage>()).Returns(response);

            clientProvider.GetHttpClient(Arg.Any <string>(), Arg.Any <string>()).Returns(client);

            var bytes = new byte[] { 0, 1, 1, 0 };

            proxyService.MakeCallNoReturn("SomeNamespace", "SomeClass", "SomeMethod", bytes, false, false);

            client.Received().SendAsync(Arg.Is <HttpRequestMessage>(message => ValidateSomeClassSomeMethod(message)));
        }
示例#4
0
        public void RpcProxyServiceMakeCallReturnValueCompressResponse(IRpcHttpClient client,
                                                                       IRpcHttpClientProvider clientProvider,
                                                                       RpcProxyService proxyService)
        {
            var response = new HttpResponseMessage(HttpStatusCode.Accepted)
            {
                Content = new StreamContent(new ResponseMessage <int>(10, "2.0", "1").SerializeToStream("gzip"))
            };

            response.Content.Headers.Add("Content-Encoding", "gzip");

            client.SendAsync(Arg.Any <HttpRequestMessage>()).Returns(response);

            clientProvider.GetHttpClient(Arg.Any <string>(), Arg.Any <string>()).Returns(client);

            var bytes = new byte[] { 0, 1, 1, 0 };

            var intValue = proxyService.MakeCallWithReturn <int>("SomeNamespace", "SomeClass", "SomeMethod", bytes, false, true);

            Assert.Equal(10, intValue);

            client.Received().SendAsync(Arg.Is <HttpRequestMessage>(message => ValidateSomeClassSomeMethod(message)));
        }
示例#5
0
 public RpcProxyService(IRpcHttpClientProvider clientProvider, IHeaderProcessor[] headerProcessors, JsonSerializer jsonSerializer)
 {
     _clientProvider   = clientProvider;
     _headerProcessors = headerProcessors;
     _jsonSerializer   = jsonSerializer;
 }