private async Task <PeekResponse> HandleAsync(PeekCommandBase request, Func <ActorId, Uuid?, Task <Bundle?> > requestHandler) { ArgumentNullException.ThrowIfNull(request, nameof(request)); _logger.LogProcess("Peek", _correlationContext.Id, request.MarketOperator); var marketOperator = Guid.TryParse(request.MarketOperator, out var actorId) ? new ActorId(actorId) : new LegacyActorId(new GlobalLocationNumber(request.MarketOperator)); var suggestedBundleId = request.BundleId != null ? new Uuid(request.BundleId) : null; var bundle = await requestHandler(marketOperator, suggestedBundleId).ConfigureAwait(false); if (bundle != null) { if (bundle.TryGetContent(out var bundleContent)) { _logger.LogProcess("Peek", "HasContent", _correlationContext.Id, request.MarketOperator, bundle.BundleId.ToString(), bundle.NotificationIds.Select(x => x.ToString())); return(new PeekResponse( true, bundle.BundleId.ToString(), await bundleContent.OpenAsync().ConfigureAwait(false), bundle.DocumentTypes)); } _logger.LogProcess("Peek", "TimeoutOrError", _correlationContext.Id, request.MarketOperator, bundle.BundleId.ToString(), bundle.NotificationIds.Select(x => x.ToString())); } _logger.LogProcess("Peek", "NoContent", _correlationContext.Id, request.MarketOperator, string.Empty); return(new PeekResponse( false, string.Empty, Stream.Null, Enumerable.Empty <string>())); }
private static bool BundleIdCheck(Uuid r, PeekCommandBase request) { return(r.ToString().Equals(request.BundleId, StringComparison.OrdinalIgnoreCase)); }