示例#1
0
        protected virtual string GenerateRelativeUrl <T>(PostEntityRequest <T> request) where T : class
        {
            var urlParams = new UrlParams();

            urlParams.AddIfTrue("batch", request.Batch, "ok");

            return(string.Format("/{0}", new QueryString(urlParams)));
        }
示例#2
0
        public virtual HttpRequest Create <T>(PostEntityRequest <T> request) where T : class
        {
            Ensure.Any.IsNotNull(request, nameof(request));

            return(new HttpRequest(HttpMethod.Post, GenerateRelativeUrl(request))
                   .SetRequestTypeHeader(request.GetType())
                   .SetJsonContent(SerializeEntity(request.Entity)));
        }
        public virtual HttpRequest Create <T>(PostEntityRequest <T> request) where T : class
        {
            var httpRequest = CreateFor <PostEntityRequest <T> >(HttpMethod.Post, GenerateRequestUrl());

            httpRequest.SetContent(SerializeEntity(request.Entity));

            return(httpRequest);
        }
示例#4
0
        public virtual async Task <EntityResponse <T> > PostAsync <T>(PostEntityRequest <T> request) where T : class
        {
            var httpRequest = CreateHttpRequest(request);

            using (var res = await SendAsync(httpRequest).ForAwait())
            {
                return(ProcessEntityResponse(request, res));
            }
        }
示例#5
0
 public async static Task<EntityResponse<Property>> Post(Property property)
 {
     using (var db = Database.Connect())
     {
         var post = new PostEntityRequest<Property>(property);
         var result = await db.Entities.PostAsync<Property>(property);
         return result;
     }
 }
示例#6
0
        public virtual async Task <EntityResponse <T> > PostAsync <T>(PostEntityRequest <T> request, CancellationToken cancellationToken = default) where T : class
        {
            var httpRequest = PostHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest, cancellationToken).ForAwait())
            {
                return(await ProcessEntityResponseAsync(request, res).ForAwait());
            }
        }
示例#7
0
        protected virtual EntityResponse <T> ProcessEntityResponse <T>(PostEntityRequest <T> request, HttpResponseMessage response) where T : class
        {
            var entityResponse = EntityResponseFactory.Create <T>(response);

            entityResponse.Content = request.Entity;

            if (entityResponse.IsSuccess)
            {
                Reflector.IdMember.SetValueTo(entityResponse.Content, entityResponse.Id);
                Reflector.RevMember.SetValueTo(entityResponse.Content, entityResponse.Rev);
            }

            return(entityResponse);
        }
示例#8
0
 protected virtual HttpRequest CreateHttpRequest <T>(PostEntityRequest <T> request) where T : class
 {
     return(PostHttpRequestFactory.Create(request));
 }