Ejemplo n.º 1
0
        public async Task LoadFromAssembliesInDirectory(
            DirectoryInfo directory,
            IKernel kernel,
            KernelInvocationContext context)
        {
            if (directory.Exists)
            {
                var extensionDlls = directory
                                    .GetFiles("*.dll", SearchOption.TopDirectoryOnly)
                                    .ToList();

                if (extensionDlls.Count > 0)
                {
                    using var op = new ConfirmationLogger(
                              Log.Category,
                              message: "Loading extensions in directory {directory}",
                              logOnStart: true,
                              args: new object[] { directory });

                    foreach (var extensionDll in extensionDlls)
                    {
                        await LoadFromAssembly(
                            extensionDll,
                            kernel,
                            context);
                    }

                    op.Succeed();
                }
            }
        }
Ejemplo n.º 2
0
        public static void Completion <T>(
            ConfirmationLogger operation,
            ICommandDelivery <T> delivery,
            ICommandDeliveryResult result)
        {
            string resultString = null;

            switch (result)
            {
            case CompleteDeliveryResult <T> complete:
                resultString = "Complete";
                break;

            case RetryDeliveryResult <T> retry:
                resultString = "WillRetry";
                break;

            case CancelDeliveryResult <T> cancel:
                resultString = "Cancelled";
                break;
            }

            operation.Succeed(
                $"{{result}}: {messageTemplate}",
                resultString,
                delivery.Command,
                delivery.IdempotencyToken,
                delivery.DueTime,
                delivery.NumberOfPreviousAttempts);
        }
Ejemplo n.º 3
0
 public static void Completion <T>(
     ConfirmationLogger operation,
     ICommandDelivery <T> delivery) =>
 operation.Succeed(
     "{Command} :{IdempotencyToken} due @ {DueTime}",
     delivery.Command,
     delivery.IdempotencyToken,
     delivery.DueTime);
Ejemplo n.º 4
0
        private void LogResponse(HttpContext context, string responseBody, ConfirmationLogger operation)
        {
            var responseHeaders = context.Response.Headers.HeaderSummary();

            var reasonPhrase = context.Features.Get <IHttpResponseFeature>()?.ReasonPhrase ?? "";

            var responseStatusCode = context.Response.StatusCode;

            operation.Succeed(@"
  HTTP/{reasonPhrase} {responseStatusCode}
{responseHeaders}
  {responseBody}",
                              reasonPhrase,
                              responseStatusCode,
                              responseHeaders,
                              responseBody);
        }
Ejemplo n.º 5
0
        private async Task LoadScriptExtensionFromDirectory(
            DirectoryInfo directory,
            Kernel kernel,
            KernelInvocationContext context)
        {
            var extensionFile = new FileInfo(Path.Combine(directory.FullName, ExtensionScriptName));

            if (extensionFile.Exists)
            {
                var logMessage = $"Loading extension script from `{extensionFile.FullName}`";
                using var op = new ConfirmationLogger(
                          Log.Category,
                          message: logMessage,
                          logOnStart: true,
                          args: new object[] { extensionFile });

                context.Display(logMessage, "text/markdown");

                var scriptContents = File.ReadAllText(extensionFile.FullName, Encoding.UTF8);
                await kernel.SubmitCodeAsync(scriptContents);
            }
        }
 internal static void Complete(
     this ConfirmationLogger logger,
     Budget budget) =>
 logger.Succeed("Completed with {budget}", budget);