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
            }));
        }
Example #2
0
        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));
        }