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"); } })); }
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()); }
/// <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); }
public static Task AddHttpClient(HttpClientInfo client, ServerBase serverBase, string address, string methodName, IDictionary <string, string[]> requestHeaders, IDictionary <string, string[]> responseHeaders)