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(); } } }
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); }
public static void Completion <T>( ConfirmationLogger operation, ICommandDelivery <T> delivery) => operation.Succeed( "{Command} :{IdempotencyToken} due @ {DueTime}", delivery.Command, delivery.IdempotencyToken, delivery.DueTime);
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); }
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);