private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary <string, object> parameters, byte[] body, out Func <int, string, string> buildExceptionMessage) { var uri = method != HttpMethod.Put ? uriBuilder.AddQueryParameters(parameters).Build() : uriBuilder.Build(); var request = WebRequest.Create(uri); request.Method = method.GetParameterName(); request.ContentType = "application/json"; body = body ?? new byte[0]; if (method == HttpMethod.Put) { var serializer = new SoundCloud.API.Client.Internal.Infrastructure.Serialization.JsonSerializer(); var serialized = serializer.Serialize(parameters); body = Encoding.UTF8.GetBytes(serialized); } if ((method == HttpMethod.Post || method == HttpMethod.Put) && body.Length > 0) { request.ContentLength = body.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(body, 0, body.Length); requestStream.Flush(); } } else { request.ContentLength = 0; } request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); buildExceptionMessage = (statusCode, content) => string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content); return(request); }
private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary<string, object> parameters, byte[] body, out Func<int, string, string> buildExceptionMessage) { var uri = method != HttpMethod.Put ? uriBuilder.AddQueryParameters(parameters).Build() : uriBuilder.Build(); var request = WebRequest.Create(uri); request.Method = method.GetParameterName(); request.ContentType = "application/json"; body = body ?? new byte[0]; if (method == HttpMethod.Put) { var serializer = new SoundCloud.API.Client.Internal.Infrastructure.Serialization.JsonSerializer(); var serialized = serializer.Serialize(parameters); body = Encoding.UTF8.GetBytes(serialized); } if ((method == HttpMethod.Post || method == HttpMethod.Put) && body.Length > 0) { request.ContentLength = body.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(body, 0, body.Length); requestStream.Flush(); } } else { request.ContentLength = 0; } request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); buildExceptionMessage = (statusCode, content) => string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content); return request; }