public IBluemResponse SendRequest(IBluemSignedRequest request) { try { var content = request.File.File.ReadAsStringAsync().Result; var bluemContentType = Enum.GetName(typeof(BluemContentTypeEnum), request.ContentType); var httpRequest = WebRequest.Create(request.RequestType.RequestUri); var formDataBoundary = string.Format("----------{0:N}", Guid.NewGuid()); var contentType = "multipart/form-data; boundary=" + formDataBoundary; var postParameters = new Dictionary <string, Tuple <string, string> >(); postParameters.Add(request.File.Filename, new Tuple <string, string>(content, $"Content-Type: {request.File.MimeType}; type={bluemContentType}; charset=utf-8;")); var formData = GetMultipartFormData(postParameters, formDataBoundary); httpRequest.Method = request.RequestType.RequestMethod.Method; httpRequest.ContentType = contentType; httpRequest.Headers.Add("x-ttrs-authorization", request.RequestSignature); httpRequest.Headers.Add("x-ttrs-date", request.DateTime.ToString()); httpRequest.Headers.Add("x-ttrs-files-count", "1"); httpRequest.Headers.Add("x-ttrs-filename", $"{request.File.Filename}:{request.File.Signature}"); try { using (var requestStream = httpRequest.GetRequestStream()) { requestStream.Write(formData, 0, formData.Length); requestStream.Close(); var response = httpRequest.GetResponse() as HttpWebResponse; var transformer = request.RequestType.Transformer; DumpReport(request.UnsignedString, httpRequest, formData); return(transformer.GetBluemResponse(response)); } } catch (WebException e) { var report = DumpReport(request.UnsignedString, httpRequest, formData); _logger.Error(e, report); throw new BluemRequestException(e); } } catch (Exception e) { _logger.Error(e); throw; } }
public HttpRequestMessage GetHttpRequestMessage(IBluemSignedRequest request) { var type = request.RequestType; return(new HttpRequestMessage(type.RequestMethod, type.RequestUri)); }