public ApiKeysModule(ICommandDispatcher commandDispatcher, IIdentityProvider identityProvider, IValidatorResolver validatorResolver, IApiKeyStorage apiKeyStorage) : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "api-keys") { Get("", async args => await FetchCollection <BrowseApiKeys, ApiKey> (async x => await apiKeyStorage.BrowseAsync(x)) .MapTo(x => new { Name = x.Name, Key = x.Key }) .HandleAsync()); Get("{name}", async args => await Fetch <GetApiKey, ApiKey> (async x => await apiKeyStorage.GetAsync(x.UserId, x.Name)) .MapTo(x => new { Name = x.Name, Key = x.Key }) .HandleAsync()); Post("", async args => await For <RequestNewApiKey>() .OnSuccessAccepted("api-keys") .DispatchAsync()); Delete("{name}", async args => await For <DeleteApiKey>() .OnSuccess(HttpStatusCode.NoContent) .DispatchAsync()); }
public async Task HandleAsync(ApiKeyCreated @event) { var apiKey = await _apiKeyStorage.GetAsync(@event.UserId, @event.Name); if (apiKey.HasNoValue) { return; } _identityProvider.SetUserIdForApiKey(apiKey.Value.Key, @event.UserId); }