public virtual async Task <EntityResponse <T> > PutAsync <T>(PutEntityRequest <T> request) where T : class { var httpRequest = CreateHttpRequest(request); using (var res = await SendAsync(httpRequest).ForAwait()) { return(ProcessEntityResponse(request, res)); } }
protected virtual string GetEntityRev <T>(PutEntityRequest <T> request) where T : class { if (!string.IsNullOrWhiteSpace(request.ExplicitRev)) { return(request.ExplicitRev); } return(Reflector.RevMember.GetValueFrom(request.Entity)); }
public virtual async Task <EntityResponse <T> > PutAsync <T>(PutEntityRequest <T> request, CancellationToken cancellationToken = default) where T : class { var httpRequest = PutHttpRequestFactory.Create(request); using (var res = await SendAsync(httpRequest, cancellationToken).ForAwait()) { return(await ProcessEntityResponseAsync(request, res).ForAwait()); } }
protected virtual string GetEntityId <T>(PutEntityRequest <T> request) where T : class { var entityId = Reflector.IdMember.GetValueFrom(request.Entity); Ensure.That(entityId, "request") .WithExtraMessageOf(() => "Could not extract entity Id from entity being PUT. Ensure member exists.") .IsNotNullOrWhiteSpace(); return(entityId); }
public virtual HttpRequest Create <T>(PutEntityRequest <T> request) where T : class { var id = Reflector.IdMember.GetValueFrom(request.Entity); var rev = Reflector.RevMember.GetValueFrom(request.Entity); var httpRequest = CreateFor <PutEntityRequest <T> >(HttpMethod.Put, GenerateRequestUrl(id, rev)); httpRequest.SetIfMatch(rev); httpRequest.SetContent(SerializeEntity(request.Entity)); return(httpRequest); }
public virtual HttpRequest Create <T>(PutEntityRequest <T> request) where T : class { Ensure.That(request, "request").IsNotNull(); var entityId = GetEntityId(request); var entityRev = GetEntityRev(request); return(new HttpRequest(HttpMethod.Put, GenerateRelativeUrl(entityId, entityRev, request.Batch)) .SetRequestTypeHeader(request.GetType()) .SetIfMatchHeader(entityRev) .SetJsonContent(SerializeEntity(request.Entity))); }
protected virtual EntityResponse <T> ProcessEntityResponse <T>(PutEntityRequest <T> request, HttpResponseMessage response) where T : class { var entityResponse = EntityResponseFactory.Create <T>(response); entityResponse.Content = request.Entity; if (entityResponse.IsSuccess) { Reflector.RevMember.SetValueTo(entityResponse.Content, entityResponse.Rev); } return(entityResponse); }
protected virtual string GetEntityId <T>(PutEntityRequest <T> request) where T : class { if (!string.IsNullOrWhiteSpace(request.ExplicitId)) { return(request.ExplicitId); } var entityId = Reflector.IdMember.GetValueFrom(request.Entity); if (string.IsNullOrWhiteSpace(entityId)) { throw new ArgumentException("Could not extract entity Id from entity being PUT. Ensure member exists.", nameof(request)); } return(entityId); }
protected virtual HttpRequest CreateHttpRequest <T>(PutEntityRequest <T> request) where T : class { return(PutHttpRequestFactory.Create(request)); }
protected virtual string GetEntityRev <T>(PutEntityRequest <T> request) where T : class { return(Reflector.RevMember.GetValueFrom(request.Entity)); }
protected virtual async Task <EntityResponse <T> > ProcessEntityResponseAsync <T>(PutEntityRequest <T> request, HttpResponseMessage response) where T : class { var entityResponse = await EntityResponseFactory.CreateAsync <T>(response).ForAwait(); entityResponse.Content = request.Entity; if (!string.IsNullOrWhiteSpace(request.ExplicitId)) { Reflector.IdMember.SetValueTo(entityResponse.Content, entityResponse.Id); } if (entityResponse.IsSuccess) { Reflector.RevMember.SetValueTo(entityResponse.Content, entityResponse.Rev); } return(entityResponse); }