public bool Handle(IWebServerRequest request, IWebServerResponse response) { Request = request; Response = response; MethodInfo method = GetType().GetMethods().FirstOrDefault(m => m.Name == request.ControllerMethodName && SupportsHttpMethod(m, request.HttpMethod)); if (method != null) { if (UserAuthorized(method, request)) { try { object[] parameters = GetParametersFromRequest(method, request); object o = method.Invoke(this, parameters); IViewResult result = request.WebSite.ViewProvider.GetViewForRequest(request).Render(o); response.FromString(result.Content, result.ContentType); } catch (Exception exception) { response.InternalError(request, exception); } } else { response.NotAllowed(request); } } else { return(false); } return(true); }
protected void HandleControllerRequest(IWebServerRequest request, IWebServerResponse response) { if (request.Controller == null || !request.Controller.Handle(request, response)) { request.SetFileName(DefaultWebPage); } }
protected void HandleFileRequest(IWebServerRequest request, IWebServerResponse response) { string filePath = Path.Combine(path, request.FilePath); if (File.Exists(filePath)) { response.FromFile(filePath); } else { response.NotFound(request); } }
public virtual void Handle(IWebServerRequest request, IWebServerResponse response) { request.WebSite = this; if (!request.IsFile) { HandleControllerRequest(request, response); } if (request.IsFile) { HandleFileRequest(request, response); } }
private void ListenerCallback(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; if (listener.IsListening) { listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener); HttpListenerContext context = listener.EndGetContext(result); IWebServerRequest request = webServerRequestFactory.Create(context.Request); IWebServerResponse response = webServerResponseFactory.Create(context.Response); webSites.First(w => w.CanHandle(request)).Handle(request, response); logger.LogRequest(request, response); response.HttpListenerResponse.Close(); } }
public void LogRequest(IWebServerRequest request, IWebServerResponse response) { WriteMessage(string.Format(logFormatString, DateTime.Now.ToString("yyyy-MM-dd"), //date {0} DateTime.Now.ToString("HH:mm:ss"), //time {1} PlaceHolderIfBlank(request.WebSite.Name), // s-sitename {2} PlaceHolderIfBlank(request.HttpListenerRequest.LocalEndPoint.Address.ToString()), // s-ip {3} PlaceHolderIfBlank(request.HttpMethod), // cs-method {4} PlaceHolderIfBlank(request.HttpListenerRequest.Url.AbsolutePath), // cs-uri {5} PlaceHolderIfBlank(request.HttpListenerRequest.Url.Query), // cs-uri-query {6} request.HttpListenerRequest.LocalEndPoint.Port, // s-port {7} PlaceHolderIfBlank(request.User.UserId), // cs-username {8} PlaceHolderIfBlank(request.HttpListenerRequest.RemoteEndPoint.Address.ToString()), // c-ip {9} request.HttpListenerRequest.UserAgent ?? "-", // cs(User-Agent) {10} response.HttpListenerResponse.StatusCode, // sc-status {11} 0, // sc-substatus {12} 0 // sc-win32-status {13} )); }