Ejemplo n.º 1
0
        public virtual async Task <PurgeResponse> PurgeAsync <T>(PurgeEntityRequest <T> request, CancellationToken cancellationToken = default) where T : class
        {
            var httpRequest = PurgeHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest, cancellationToken).ForAwait())
            {
                return(await PurgeResponseFactory.CreateAsync(res).ForAwait());
            }
        }
        protected virtual string GetEntityRev <T>(PurgeEntityRequest <T> request) where T : class
        {
            var entityRev = Reflector.RevMember.GetValueFrom(request.Entity);

            if (string.IsNullOrWhiteSpace(entityRev))
            {
                throw new ArgumentException("Could not extract entity rev from entity being deleted. Ensure member exists.", nameof(request));
            }

            return(entityRev);
        }
        public virtual HttpRequest Create <T>(PurgeEntityRequest <T> request) where T : class
        {
            Ensure.Any.IsNotNull(request, nameof(request));

            var entityId  = GetEntityId(request);
            var entityRev = GetEntityRev(request);
            var data      = new PurgeData(entityId, entityRev);

            return(new HttpRequest(HttpMethod.Post, GenerateRelativeUrl(entityId, entityRev))
                   .SetRequestTypeHeader(request.GetType())
                   .SetJsonContent(Serializer.ToJson(data)));
        }