예제 #1
0
        public void Constructor_AllowsReset()
        {
            var cr = new LoggersChangeRequest("foo", null);

            Assert.Equal("foo", cr.Name);
            Assert.Null(cr.Level);
        }
예제 #2
0
        public void Constructor_SetsProperties()
        {
            var cr = new LoggersChangeRequest("foo", "bar");

            Assert.Equal("foo", cr.Name);
            Assert.Equal("bar", cr.Level);
        }
        public override async Task Invoke(IOwinContext context)
        {
            if (!RequestVerbAndPathMatch(context.Request.Method, context.Request.Path.Value))
            {
                await Next.Invoke(context);
            }
            else
            {
                _logger?.LogTrace("Processing {SteeltoeEndpoint} request", typeof(LoggersEndpoint).Name);
                if (context.Request.Method == "GET")
                {
                    // GET request
                    var endpointResponse = _endpoint.Invoke(null);
                    _logger?.LogTrace("Returning: {EndpointResponse}", endpointResponse);
                    context.Response.Headers.SetValues("Content-Type", new string[] { "application/vnd.spring-boot.actuator.v2+json" });
                    await context.Response.WriteAsync(Serialize(endpointResponse));
                }
                else
                {
                    // POST - change a logger level
                    _logger?.LogDebug("Incoming logger path: {0}", context.Request.Path.Value);
                    foreach (var path in GetPaths())
                    {
                        PathString epPath = new PathString(path);
                        if (context.Request.Path.StartsWithSegments(epPath, out PathString remaining))
                        {
                            if (remaining.HasValue)
                            {
                                string loggerName = remaining.Value.TrimStart('/');

                                var change = ((LoggersEndpoint)_endpoint).DeserializeRequest(context.Request.Body);

                                change.TryGetValue("configuredLevel", out string level);

                                _logger?.LogDebug("Change Request: {Logger}, {Level}", loggerName, level ?? "RESET");
                                if (!string.IsNullOrEmpty(loggerName))
                                {
                                    var changeReq = new LoggersChangeRequest(loggerName, level);
                                    _endpoint.Invoke(changeReq);
                                    context.Response.StatusCode = (int)HttpStatusCode.OK;
                                    return;
                                }
                            }
                        }

                        context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                        return;
                    }
                }
            }
        }
        public override void HandleRequest(HttpContext context)
        {
            _logger?.LogTrace("Processing {SteeltoeEndpoint} request", typeof(LoggersEndpoint).Name);
            if (context.Request.HttpMethod == "GET")
            {
                // GET request
                var endpointResponse = _endpoint.Invoke(null);
                _logger?.LogTrace("Returning: {EndpointResponse}", endpointResponse);
                context.Response.Headers.Set("Content-Type", "application/vnd.spring-boot.actuator.v1+json");
                context.Response.Write(Serialize(endpointResponse));
                context.Response.StatusCode = (int)HttpStatusCode.OK;
                return;
            }
            else
            {
                // POST - change a logger level
                _logger?.LogDebug("Incoming logger path: {0}", context.Request.Path);

                var psPath = context.Request.Path;
                var epPath = _endpoint.Path;

                if (psPath.StartsWithSegments(epPath, out string remaining))
                {
                    if (!string.IsNullOrEmpty(remaining))
                    {
                        string loggerName = remaining.TrimStart('/');

                        var change = ((LoggersEndpoint)_endpoint).DeserializeRequest(context.Request.InputStream);

                        change.TryGetValue("configuredLevel", out string level);

                        _logger?.LogDebug("Change Request: {Logger}, {Level}", loggerName, level ?? "RESET");
                        if (!string.IsNullOrEmpty(loggerName))
                        {
                            var changeReq = new LoggersChangeRequest(loggerName, level);
                            _endpoint.Invoke(changeReq);
                            context.Response.StatusCode = (int)HttpStatusCode.OK;
                            return;
                        }
                    }
                }

                context.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
        }
예제 #5
0
 public override Dictionary <string, object> Invoke(LoggersChangeRequest request)
 {
     return(new Dictionary <string, object>());
 }