internal static HttpRequestMessage GetRequestMessage()

in Darabonba/Core.cs [365:407]


        internal static HttpRequestMessage GetRequestMessage(Request request, Dictionary<string, object> runtimeOptions, out int timeout)
        {
            var url = ComposeUrl(request);
            HttpRequestMessage req = new HttpRequestMessage();
            req.Method = HttpUtils.GetHttpMethod(request.Method);
            req.RequestUri = new Uri(url);
            timeout = 100000;
            int readTimeout = DictUtils.GetDicValue(runtimeOptions, "readTimeout").ToSafeInt(0);
            int connectTimeout = DictUtils.GetDicValue(runtimeOptions, "connectTimeout").ToSafeInt(0);

            if (readTimeout != 0 || connectTimeout != 0)
            {
                timeout = readTimeout + connectTimeout;
            }

            if (request.Body != null)
            {
                Stream requestStream = new MemoryStream();
                request.Body.Position = 0;

                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = request.Body.Read(buffer, 0, buffer.Length)) != 0)
                {
                    requestStream.Write(buffer, 0, bytesRead);
                }

                requestStream.Position = 0;
                StreamContent streamContent = new StreamContent(requestStream);
                req.Content = streamContent;
            }

            foreach (var header in request.Headers)
            {
                req.Headers.TryAddWithoutValidation(header.Key, header.Value);
                if (header.Key.ToLower().StartsWith("content-") && req.Content != null)
                {
                    req.Content.Headers.TryAddWithoutValidation(header.Key, header.Value);
                }
            }

            return req;
        }