コード例 #1
0
        public static async Task AddHttpClient(HttpClientInfo client, ServerBase serverBase, string address, string methodName, IDictionary <string, string[]> requestHeaders, IDictionary <string, string[]> responseHeaders)
#endif
        {
#if (NET35 || NET40)
            return(Task.Factory.StartNew(() =>
#else
            await Task.Run(async() =>
#endif
            {
                try
                {
                    if (requestHeaders != null)
                    {
                        client.RequestHeaders = requestHeaders;
                    }
                    if (responseHeaders != null)
                    {
                        client.ResponseHeaders = responseHeaders;
                    }
                    await HandleHttpRequest(methodName, address, serverBase, client);
                }
                catch (Exception ex)
                {
                    if (client.IsOwinClient)
                    {
                        throw;
                    }
                    serverBase.DisposeClient(client, null, "HttpProvider AddHttpClient exception");
                }
            }));
        }
コード例 #2
0
        public async void PassesBodyToJsonRPCProcessorAndSetsResponse()
        {
            var context    = Mock <ITestableHttpContext>();
            var body       = "body";
            var clientInfo = new HttpClientInfo();

            context.SetupGet(s => s.HttpMethod).Returns("POST");
            context.Setup(c => c.GetRequestBody()).Returns(body);
            context.Setup(c => c.GetClientInfo()).Returns(clientInfo);

            var response = new HttpResponse();

            response.HttpCode = 200;
            context.SetupSet(c => c.StatusCode = response.HttpCode);

            var processor = Mock <IJsonRpcProcessor>();

            processor.Setup(s => s.Process(body, clientInfo)).Returns(Task.FromResult(response));

            await ClassUnderTest.Process(context.Object);

            context.VerifySet(c => c.StatusCode = response.HttpCode, Times.Once());
            context.Verify(c => c.WriteResponseBody(response.Body), Times.Once());
            context.Verify(c => c.CloseResponse(), Times.Once());
            processor.Verify(p => p.Process(body, clientInfo), Times.Once());
        }
コード例 #3
0
        /// <summary>
        /// create client information
        /// </summary>
        /// <param name="isHttp"></param>
        /// <param name="tcpClient"></param>
        /// <param name="stream"></param>
        /// <returns></returns>
        public ClientInfo CreateClientInfo(bool isHttp, TcpClient tcpClient, PipeNetworkStream stream)
        {
            ClientInfo client = null;

            if (isHttp)
            {
                client = new HttpClientInfo(_serverBase);
            }
            else
            {
                client = new ClientInfo(_serverBase);
            }
            client.ConnectedDateTime = DateTime.Now;
            client.TcpClient         = tcpClient;
            //client.IPAddressBytes = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.ToString().Replace("::ffff:", "");
            client.IPAddressBytes = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.GetAddressBytes();
            client.ClientId       = Guid.NewGuid().ToString();
            _serverBase.Clients.TryAdd(client.ClientId, client);
            client.ClientStream = stream;
            _serverBase.OnClientConnectedAction?.Invoke(client);
            return(client);
        }
コード例 #4
0
 public static Task AddHttpClient(HttpClientInfo client, ServerBase serverBase, string address, string methodName, IDictionary <string, string[]> requestHeaders, IDictionary <string, string[]> responseHeaders)