/// <summary> /// Processes the event. /// </summary> /// <param name="context">The context associated with the event to process.</param> /// <returns> /// A <see cref="ValueTask"/> that can be used to monitor the asynchronous operation. /// </returns> public async ValueTask HandleAsync([NotNull] ProcessRequestContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (context.EndpointType != OpenIddictServerEndpointType.Revocation) { return; } var notification = new ExtractRevocationRequestContext(context.Transaction); await _provider.DispatchAsync(notification); if (notification.IsRequestHandled) { context.HandleRequest(); return; } else if (notification.IsRequestSkipped) { context.SkipRequest(); return; } else if (notification.IsRejected) { context.Reject( error: notification.Error ?? Errors.InvalidRequest, description: notification.ErrorDescription, uri: notification.ErrorUri); return; } if (notification.Request == null) { throw new InvalidOperationException(new StringBuilder() .Append("The revocation request was not correctly extracted. To extract revocation requests, ") .Append("create a class implementing 'IOpenIddictServerHandler<ExtractRevocationRequestContext>' ") .AppendLine("and register it using 'services.AddOpenIddict().AddServer().AddEventHandler()'.") .ToString()); } context.Logger.LogInformation("The revocation request was successfully extracted: {Request}.", notification.Request); }
/// <inheritdoc/> public async ValueTask HandleAsync(ProcessRequestContext context) { if (context is null) { throw new ArgumentNullException(nameof(context)); } var notification = new ExtractRevocationRequestContext(context.Transaction); await _dispatcher.DispatchAsync(notification); if (notification.IsRequestHandled) { context.HandleRequest(); return; } else if (notification.IsRequestSkipped) { context.SkipRequest(); return; } else if (notification.IsRejected) { context.Reject( error: notification.Error ?? Errors.InvalidRequest, description: notification.ErrorDescription, uri: notification.ErrorUri); return; } if (notification.Request is null) { throw new InvalidOperationException(SR.GetResourceString(SR.ID0048)); } context.Logger.LogInformation(SR.GetResourceString(SR.ID6109), notification.Request); }
public override Task ExtractRevocationRequest([NotNull] ExtractRevocationRequestContext context) => _eventService.PublishAsync(new OpenIddictServerEvents.ExtractRevocationRequest(context));