Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
Arquivo: Api.cs Projeto: mamasha/tests
        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
            });
        }
Exemplo n.º 3
0
        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");
            }
            }
        }
Exemplo n.º 4
0
 private void logEnd(ISrvRequest request)
 {
 }
Exemplo n.º 5
0
 private void logStart(ISrvRequest request)
 {
 }