public string Format(IRestRequest request) { var sb = new StringBuilder(); using (var writer = new StringWriter(sb)) { writer.WriteLine($"{request.Method} {MakeResourceandQuery(request)}"); foreach (var header in request.Headers()) { writer.WriteLine($"{header.Key}: {header.Value}"); } var body = request.Body(); if (body != null) { WriteBody(writer, body); } writer.Flush(); } return(sb.ToString()); }
internal static HttpRequestMessage AsHttpRequestMessage(this IRestRequest request, IRestClient client) { var uri = UriHelper.MakeUri(client.Settings.BaseUri, request); var httpRequest = new HttpRequestMessage(request.Method, uri); if (request.Method == HttpMethod.Post || request.Method == HttpMethod.Put) { HttpContent content = null; if (request.HasBody()) { content = request.Body().GetHttpContent(client); } else if (request.HasFiles()) { var files = request.Files().ToList(); if (files.Count > 1) { content = MakeFileMultipart(client, request.Files()); } else { content = files[0].GetFileContent(client, false); } } httpRequest.Content = content; } if (request.HasHeaders()) { foreach (var header in request.Headers()) { httpRequest.Headers.Add(header.Key, SafeValue(header.Value)); } } if (request.Returned != null && !request.Returned.IsVoid()) { if (request.Returned.IsFile()) { var contentType = request.Returned.ContentType; if (!String.IsNullOrEmpty(contentType)) { httpRequest.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(contentType)); } } else { var contentFormat = request.Returned.ContentFormat(); if (contentFormat == ContentFormat.Default) { contentFormat = client.Settings.DefaultFormat; } var serializer = client.Settings.Serializer(contentFormat); if (serializer == null) { throw new InvalidOperationException($"No serializer was configured to handle the format {contentFormat} required."); } var contentTypes = serializer.ContentTypes; foreach (var contentType in contentTypes) { httpRequest.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(contentType)); } } } return(httpRequest); }