Exemple #1
0
 public void UpdateFromHeaders(HttpResponseHeaders headers)
 {
     if (headers.Contains("X-RateLimit-Reset"))
     {
         ResetAt = new DateTime(1970, 1, 1).AddSeconds(double.Parse(headers.GetFirstValue("X-RateLimit-Reset")));
     }
     if (headers.Contains("X-RateLimit-Limit"))
     {
         Max = int.Parse(headers.GetFirstValue("X-RateLimit-Limit"));
     }
     if (headers.Contains("X-RateLimit-Remaining"))
     {
         Remaining = int.Parse(headers.GetFirstValue("X-RateLimit-Remaining"));
     }
 }
        /// <summary>
        /// Deserialize a request to a JsonDocument
        /// </summary>
        public static JsonDocumentMetadata DeserializeJsonDocumentMetadata(string key,
                                                                           HttpResponseHeaders headers,
                                                                           HttpStatusCode statusCode)
        {
            RavenJObject meta = null;

            try
            {
                meta = headers.FilterHeadersToObject();
            }
            catch (JsonReaderException jre)
            {
                throw new JsonReaderException("Invalid Json Response", jre);
            }
            var    etag             = headers.ETag.Tag;
            string lastModified     = headers.GetFirstValue(Constants.RavenLastModified) ?? headers.GetFirstValue(Constants.LastModified);
            var    dateTime         = DateTime.ParseExact(lastModified, new[] { "o", "r" }, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
            var    lastModifiedDate = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);

            return(new JsonDocumentMetadata
            {
                NonAuthoritativeInformation = statusCode == HttpStatusCode.NonAuthoritativeInformation,
                Key = key,
                Etag = HttpExtensions.EtagHeaderToEtag(etag),
                LastModified = lastModifiedDate,
                Metadata = meta
            });
        }
        private static DateTime?GetLastModifiedDate(HttpResponseHeaders headers)
        {
            var lastModified = headers.GetAllValues(Constants.RavenLastModified);

            if (lastModified == null || lastModified.Length != 1)
            {
                var dt = DateTime.ParseExact(headers.GetFirstValue(Constants.LastModified), new[] { "o", "r" }, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
                return(DateTime.SpecifyKind(dt, DateTimeKind.Utc));
            }
            return(DateTime.ParseExact(lastModified[0], new[] { "o", "r" }, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind));
        }
        internal RavenJToken GetCachedResponse(HttpJsonRequest httpJsonRequest, HttpResponseHeaders additionalHeaders)
        {
            if (httpJsonRequest.CachedRequestDetails == null)
            {
                throw new InvalidOperationException("Cannot get cached response from a request that has no cached information");
            }
            httpJsonRequest.ResponseStatusCode = HttpStatusCode.NotModified;
            httpJsonRequest.ResponseHeaders    = new NameValueCollection(httpJsonRequest.CachedRequestDetails.Headers);

            if (additionalHeaders != null)
            {
                string forcePrimaryServerCHeck = additionalHeaders.GetFirstValue(Constants.RavenForcePrimaryServerCheck);
                if (forcePrimaryServerCHeck != null)
                {
                    httpJsonRequest.ResponseHeaders.Add(Constants.RavenForcePrimaryServerCheck, forcePrimaryServerCHeck);
                }
            }

            IncrementCachedRequests();
            return(httpJsonRequest.CachedRequestDetails.Data.CloneToken());
        }