コード例 #1
0
        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;
            }
        }
コード例 #2
0
        public HttpRequestMessage GetHttpRequestMessage(IBluemSignedRequest request)
        {
            var type = request.RequestType;

            return(new HttpRequestMessage(type.RequestMethod, type.RequestUri));
        }