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))); }