IAsyncResult IHttpAsyncHandler.BeginProcessRequest(HttpContext http, AsyncCallback cb, object extraData) { _log = Logger.Instance; _notifyCompletion = cb; var response = http.Response; var route = http.Request.FilePath.ToLowerInvariant(); _request = SrvRequest.New(http, route, this); logStart(_request); response.Headers.Set("Access-Control-Allow-Origin", "*"); try { startRequest(_request); } catch (Exception ex) { writeResponse(new AnyResponse { Error = ex }); endRequest(); } return(this); }
void IApi.Thumbnail(ISrvRequest request) { var config = _config; var http = request.Http.Request; var trackingId = request.TrackingId; var url = http.Require("url"); var width = http.OptionalInt("width", config.thumbnail.defaultWidth); var height = http.OptionalInt("height", config.thumbnail.defaultHeight); if (!Uri.IsWellFormedUriString(url, UriKind.Absolute)) { throw new ApplicationException($"Bad url '{url}'"); } _log.info(trackingId, () => $"thumbnail request [{width} x {height}] for '{url}'"); var key = $"{url}_{width}x{height}"; _thumbnail.Process(new ThumbnailRequest { Srv = request, Key = key, Url = url, Width = width, Height = height }); }
private void startRequest(ISrvRequest request) { var log = Logger.Instance; var http = request.Http.Request; var api = Api.Instance; log.info(request.TrackingId, "anyhandler", () => $"starting request '{http.Path}'"); switch (request.Route) { case "/thumbnail": { api.Thumbnail(request); break; } case "/config": { var config = http.RequireArgs <SrvConfig>(); api.SetConfig(config); writeResponse(new AnyResponse { Json = config.ToJson() }); endRequest(); break; } case "/log": { var msgs = log.GetMessages(); writeResponse(new AnyResponse { Json = msgs.ToJson() }); endRequest(); break; } case "/log/detailed": { var dump = log.Dump(); writeResponse(new AnyResponse { Json = dump.ToJson() }); endRequest(); break; } case "/log/clear": { log.Clear(); writeResponse(new AnyResponse { Json = "{}" }); endRequest(); break; } default: { throw new ApplicationException($"Route '{request.Route}' is not found"); } } }
private void logEnd(ISrvRequest request) { }
private void logStart(ISrvRequest request) { }