/// <summary> /// Prepares the request. It is not nessisary to call this method unless additional configuration is required. /// </summary> /// <returns>A <see cref="HttpClient"/> object fully configured and ready for execution.</returns> public async Task<HttpRequestMessage> PrepareRequest() { SetupOAuth(); formData = null; string contentType = string.Empty; if (!Multipart) { //We don't add the parameters to the query if we are multipart-ing AddQueryStringParametersToUri(); } else { string dataBoundary = "--------------------r4nd0m"; contentType = "multipart/form-data; boundary=" + dataBoundary; formData = GetMultipartFormData(Parameters, dataBoundary); this.Verb = HttpMethod.Post; } if (Multipart) { //Parameters are not added to the query string, post them in the request body instead MultipartFormDataContent content = new MultipartFormDataContent(); content.Headers.ContentType = new MediaTypeHeaderValue(contentType); using (Stream requestStream = new MemoryStream()) { if (formData != null) { requestStream.Write(formData, 0, formData.Length); } await content.CopyToAsync(requestStream); } } request = new HttpRequestMessage(this.Verb, this.RequestUri); request.Headers.ExpectContinue = false; if (!this.UseOAuth && this.networkCredentials != null) { request.Headers.ProxyAuthorization = new System.Net.Http.Headers.AuthenticationHeaderValue("basic", String.Format(networkCredentials.UserName, ":", networkCredentials.Password)); } request.Headers.Add("User-Agent", (string.IsNullOrEmpty(userAgent)) ? string.Format(CultureInfo.InvariantCulture, "Twitterizer/{0}", Information.AssemblyVersion()) : userAgent); if (this.UseOAuth) { request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("OAuth", GenerateAuthorizationHeader()); } return request; }