public async Task <ServiceResult <GetWidgetResponseDto> > GetWidgetAsync(GetWidgetRequestDto request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (string.IsNullOrEmpty(request.Id)) { return(ServiceResult.Failure(ExampleApiErrors.CreateInvalidRequestMissingWidgetId())); } var widget = await m_repository.TryGetWidgetAsync(request.Id, cancellationToken).ConfigureAwait(false); if (widget == null) { return(ServiceResult.Failure(ExampleApiErrors.CreateNotFoundWidget(request.Id))); } string eTag = CreateWidgetETag(widget); if (request.IfNoneMatch == eTag) { return(ServiceResult.Success(new GetWidgetResponseDto { NotModified = true, ETag = eTag })); } return(ServiceResult.Success(new GetWidgetResponseDto { Widget = widget, ETag = eTag })); }
public static Task <ServiceResult <GetWidgetResponseDto> > GetWidgetAsync(this IExampleApi service, string id, CancellationToken cancellationToken = default(CancellationToken)) { var request = new GetWidgetRequestDto { Id = id }; return(service.GetWidgetAsync(request, cancellationToken)); }