public HttpConnectionHandlerTest() { _mockSocket = new Mock <IAppSocket>(); _mockSocketReader = new Mock <ISocketReader>(); _mockDataParser = new Mock <IDataParser>(); _mockResponseRetriever = new Mock <IRequestProcessor>(); _testConnectionHandler = new HttpConnectionHandler() { SocketReader = _mockSocketReader.Object, DataParser = _mockDataParser.Object, RequestProcessor = _mockResponseRetriever.Object }; _testGetRequestString = "GET / HTTP/1.1\r\n" + "\r\n"; _testGetRequestBytes = Encoding.UTF8.GetBytes(_testGetRequestString); _testGetRequest = new Request( "GET", "/", "HTTP/1.1" ); _testGetResponse = new Response("HTTP/1.1", 200, "OK") .AddHeader("fake", "header"); _mockResponseRetriever.Setup(rr => rr.HandleRequest(It.IsAny <Request>())) .Returns(_testGetResponse); }
/// <summary> /// 默认配置信息 /// 使用<see cref="DefaultLogger"/>和<see cref="DefaultHttpLogger"/> /// 处理顺序:<see cref="ConnectionHandler"/>=><see cref="RetryHandler"/>=><see cref="LoggingHandler"/> /// </summary> /// <param name="path">日志目录</param> public HttpClientConfigs(string path) { Logger = new DefaultLogger(path); ConnectionHandler = new HttpConnectionHandler(Logger); HttpLogger = new DefaultHttpLogger(path); LoggingHandler = new HttpLoggingHandler(ConnectionHandler, HttpLogger); RetryHandler = new HttpRetryHandler(LoggingHandler, Logger); }
/// <summary> /// 处理顺序:<see cref="ConnectionHandler"/>=><see cref="RetryHandler"/>=><see cref="LoggingHandler"/> /// </summary> /// <param name="logger">通常日志记录者。记录一些类似“开始任务”或“进入特殊处理”之类的日志</param> /// <param name="httpLogger">HTTP日志记录者。每个Request与Response的头和内容都被记录在单独的文件中</param> public HttpClientConfigs(ILogger logger, IHttpLogger httpLogger) { Logger = logger; HttpLogger = httpLogger; ConnectionHandler = new HttpConnectionHandler(Logger); LoggingHandler = new HttpLoggingHandler(ConnectionHandler, HttpLogger); RetryHandler = new HttpRetryHandler(LoggingHandler, Logger); }
/// <summary> /// 默认配置信息 /// 使用<see cref="DefaultLogger"/>和<see cref="DefaultHttpLogger"/> /// 处理顺序:<see cref="ConnectionHandler"/>=><see cref="RetryHandler"/>=><see cref="LoggingHandler"/> /// </summary> public HttpClientConfigs() { var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "GlobalLogs", DateTime.Now.ToString("yyyy-MM-dd"), Guid.NewGuid().ToString("N")); Logger = new DefaultLogger(path); ConnectionHandler = new HttpConnectionHandler(Logger); HttpLogger = new DefaultHttpLogger(path); LoggingHandler = new HttpLoggingHandler(ConnectionHandler, HttpLogger); RetryHandler = new HttpRetryHandler(LoggingHandler, Logger); }
/// <summary> /// 创建<see cref="HttpClient"/>对象 /// 推荐在不需要控制HTTP细节时使用 /// </summary> /// <param name="path">日志保存目录</param> public static HttpClient CreateHttpClient(string path) { var logger = new DefaultLogger(path); var connectionHandler = new HttpConnectionHandler(logger); var httpLogger = new DefaultHttpLogger(path); var loggingHandler = new HttpLoggingHandler(connectionHandler, httpLogger); var retryHandler = new HttpRetryHandler(loggingHandler, logger); return(new HttpClient(retryHandler)); }
public void Stop() { if (connectionHandler != null) { connectionHandler.Stop(); connectionHandler = null; lock (parserSync) allowedUrls.Clear(); Logger.Debug("Proxy: Stopped listener"); } }
public void Start() { if (connectionHandler == null) { connectionHandler = new HttpConnectionHandler(ipAddress, Port); connectionHandler.SocketAccepted += connectionHandler_SocketAccepted; connectionHandler.Start(); Port = connectionHandler.Port; proxyAddress = string.Format("http://{0}:{1}", ipAddress, Port); Logger.Debug("Proxy: Started listener on '{0}'", proxyAddress); } }
public void Start() { lock (SyncRoot) { if (listener != null) { Stop(); } OnStarting(); listener = new HttpConnectionHandler(IPAddress.Any, port); listener.SocketAccepted += listener_SocketAccepted; listener.Start(); if (Emitter != null) { Emitter.Publish(); } } }
public void Stop() { Logger.Info("Server: Stopping"); lock (SyncRoot) { OnStopping(); if (Emitter != null) { Emitter.Stop(); Emitter = null; } if (listener != null) { listener.Stop(); listener = null; } } CloseConnections(); Logger.Info("Server: Stopped"); }