Exemple #1
0
        public virtual async Task <HttpContent> CreateHttpContentAsync(RQLRequestBatch requestBatch)
        {
            if (requestBatch == null)
            {
                throw new ArgumentNullException(nameof(requestBatch));
            }

            if (requestBatch.Requests.Count == 0)
            {
                throw new ArgumentException("There is no RQLRequests to send.");
            }

            var         json    = SerializeRqlRequestBatch(requestBatch);
            HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");

            if (requestBatch.HasFiles)
            {
                var multiPartContent = new MultipartFormDataContent();
                multiPartContent.Add(content, "json", "json");
                foreach (var file in requestBatch.AllFiles)
                {
                    multiPartContent.Add(new ByteArrayContent(file.FileContent), file.FilePart, file.FilePart);
                }
                content = multiPartContent;
            }


            var body = await content.ReadAsByteArrayAsync();

            var md5 = RQLRequestSignator.GetMd5Hash(body);

            content.Headers.Add("Content-MD5", md5);
            content.Headers.ContentLength = body.LongLength;
            return(content);
        }
Exemple #2
0
 internal RQLResponse(RQLRequestBatch batch, string jsonResult, bool success)
 {
     Success      = success;
     Batch        = batch;
     JsonResponse = jsonResult;
     if (success)
     {
         Results = Newtonsoft.Json.JsonConvert.DeserializeObject <IReadOnlyList <object[][]> >(jsonResult);
     }
 }
Exemple #3
0
        internal string SerializeRqlRequestBatch(RQLRequestBatch requestBatch)
        {
            if (requestBatch == null)
            {
                throw new ArgumentNullException(nameof(requestBatch));
            }
            if (requestBatch.Requests.Count == 0)
            {
                throw new ArgumentException("There is no RQLRequests to serizalze.");
            }
            var rqlRequestFormat = requestBatch.Requests.Select(r => new[] { r.Query, r.Parameters ?? new object() });
            var rqlRequest       = Newtonsoft.Json.JsonConvert.SerializeObject(rqlRequestFormat);

            return(rqlRequest);
        }
Exemple #4
0
        public virtual async Task <RQLResponse> MakeRequestsAsync(RQLRequestBatch requestBatch)
        {
            if (requestBatch == null)
            {
                throw new ArgumentNullException(nameof(requestBatch));
            }

            var content = await CreateHttpContentAsync(requestBatch);

            _httpClient.DefaultRequestHeaders.Date = DateTime.UtcNow;

            CreateAuthorizationHeader(_httpClient, content.Headers);

            var response = await _httpClient.PostAsync(_option.Value.RQLEndPoint, content);

            var resultString = await response.Content.ReadAsStringAsync();

            return(new RQLResponse(requestBatch, resultString, response.IsSuccessStatusCode));
        }