Ejemplo n.º 1
0
        /// <summary>
        /// Configure application to use standart Lykke middleware
        /// </summary>
        /// <param name="app">Application builder</param>
        /// <param name="createGlobalErrorResponse">Create global error response delegate</param>
        /// <param name="logClientErrors">Enables logging of the requests with 4xx response codes</param>
        public static void UseLykkeMiddleware(
            [NotNull] this IApplicationBuilder app,
            [NotNull] CreateErrorResponse createGlobalErrorResponse,
            bool logClientErrors = false)
        {
            if (app == null)
            {
                throw new ArgumentNullException(nameof(app));
            }
            if (createGlobalErrorResponse == null)
            {
                throw new ArgumentNullException(nameof(createGlobalErrorResponse));
            }

            app.Use(async(context, next) =>
            {
                // enable ability to seek on request stream within any host,
                // but not only Kestrel, for any subsequent middleware
                context.Request.EnableRewind();
                await next();
            });

            var logFactory = app.ApplicationServices.GetRequiredService <ILogFactory>();

            app.UseMiddleware <GlobalErrorHandlerMiddleware>(
                logFactory,
                createGlobalErrorResponse);

            if (logClientErrors)
            {
                app.UseMiddleware <ClientErrorHandlerMiddleware>(logFactory);
            }
        }
Ejemplo n.º 2
0
        public static void UseLykkeMiddleware(
            this IApplicationBuilder app,
            string componentName,
            CreateErrorResponse createGlobalErrorResponse,
            bool logClientErrors = false)
        {
            app.Use(async(context, next) =>
            {
                // enable ability to seek on request stream within any host,
                // but not only Kestrel, for any subsequent middleware
                context.Request.EnableRewind();
                await next();
            });

            var log = app.ApplicationServices.GetRequiredService <ILog>();

            app.UseMiddleware <GlobalErrorHandlerMiddleware>(
                log,
                componentName,
                createGlobalErrorResponse);

            if (logClientErrors)
            {
                app.UseMiddleware <ClientErrorHandlerMiddleware>(
                    log,
                    componentName);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Middleware that handles all unhandled exceptions and uses delegate to generate the error response object.
 /// </summary>
 public UnhandledExceptionResponseMiddleware(
     RequestDelegate next,
     CreateErrorResponse errorResponseFactory,
     ResolveHttpStatusCode httpStatusCodeResolver)
 {
     _next = next;
     _errorResponseFactory   = errorResponseFactory ?? throw new ArgumentNullException(nameof(errorResponseFactory));
     _httpStatusCodeResolver = httpStatusCodeResolver ?? throw new ArgumentNullException(nameof(httpStatusCodeResolver));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Middleware that handles all unhandled exceptions and use delegate to generate error response
        /// </summary>
        public GlobalErrorHandlerMiddleware(RequestDelegate next, ILogFactory logFactory, CreateErrorResponse createErrorResponse)
        {
            if (logFactory == null)
            {
                throw new ArgumentNullException(nameof(logFactory));
            }

            _log = logFactory.CreateLog(this);
            _createErrorResponse = createErrorResponse ?? throw new ArgumentNullException(nameof(createErrorResponse));
            _next = next;
        }
Ejemplo n.º 5
0
        public GlobalErrorHandlerMiddleware(RequestDelegate next, ILog log, string componentName, CreateErrorResponse createErrorResponse)
        {
            if (log == null)
            {
                throw new ArgumentNullException(nameof(log));
            }

            _log = log.CreateComponentScope(componentName);
            _createErrorResponse = createErrorResponse ?? throw new ArgumentNullException(nameof(createErrorResponse));
            _next = next;
        }
 internal LykkeConfigurationOptions()
 {
     DefaultErrorHandler = ex => ErrorResponse.Create("Technical problem");
 }