public Task HandleAsync(TeamStubUpdatedEvent @event, CancellationToken cancellationToken) { _cache.Remove(_cacheKey.FindTeamStub ( @event.TeamId, @event.StubId )); return(Task.CompletedTask); }
public async Task <FindTeamStubProjection> HandleAsync(FindTeamStubQuery query, CancellationToken cancellationToken) { if (_authenticatedUserAccessor.AuthenticatedUser.Teams.All(t => t.Id != query.TeamId)) { throw new UserNotAddedToTeamException ( _authenticatedUserAccessor.AuthenticatedUser.Id, query.TeamId ); } var stub = await _cache.GetOrSetAsync ( _cacheKey.FindTeamStub(query.TeamId, query.StubId), async() => await _stubsCollection.Find(s => s.TeamId == query.TeamId && s.Id == query.StubId) .Project(s => new FindTeamStubProjection ( s.Id.ToString(), s.TeamId.ToString(), s.Name, new Request ( s.Request.HttpMethod, s.Request.Path, s.Request.QueryStringParameters.Select(qsp => new QueryStringParamter(qsp.Key, qsp.Value)) .ToList(), s.Request.BodyTokens.Select(bt => new BodyToken(bt.Path, bt.Type, bt.Value)).ToList(), s.Request.Headers.Select(h => new Header(h.Key, h.Value)).ToList() ), new Response ( s.Response.HttpStatusCode, s.Response.Body, s.Response.Headers.Select(h => new Header(h.Key, h.Value)).ToList() ), s.Tags )) .SingleOrDefaultAsync(cancellationToken) ); if (stub == null) { throw new StubNotFoundException ( query.StubId, query.TeamId ); } return(stub); }