예제 #1
0
        private string Sign(QueryString queryString)
        {
            var sign = _appSecret;

            foreach (var item in queryString.GetSortedDictionary())
            {
                foreach (var val in item.Value)
                {
                    sign += item.Key + val;
                }
            }
            sign += _appSecret;

            return(MD5Utility.Compute(sign));
        }
예제 #2
0
        public string HttpUpload(string apiContext, QueryString queryString, FileStream fileStream)
        {
            var finalParams = AddAdditionParams(queryString).GetEncodedString();
            var url         = GetUrl(apiContext) + "?" + finalParams;

            var request = WebRequest.Create(url) as HttpWebRequest;

            request.Method    = "POST";
            request.KeepAlive = true;
            request.Headers["accept-encoding"] = "gzip,deflate";
            request.UserAgent = "onecloud-video-dot-net-client";

            var boundary = MD5Utility.Compute(DateTime.Now.Ticks.ToString("X") + "==");

            request.ContentType = "multipart/form-data; boundary=" + boundary;

            var multipartFileHeader = Encoding.UTF8.GetBytes("--" + boundary + "\r\n"
                                                             + "Content-Disposition: form-data; name=\"uploadFile\"; filename=\"" + Path.GetFileName(fileStream.Name) + "\"\r\n"
                                                             + "Content-Type: application/octet-stream\r\n"
                                                             + "Content-Transfer-Encoding:binary\r\n\r\n");

            var endBoundary = Encoding.UTF8.GetBytes("\r\n\r\n--" + boundary + "--\r\n");

            request.ContentLength = multipartFileHeader.Length + fileStream.Length + endBoundary.Length;

            using (var stream = request.GetRequestStream())
            {
                // write header
                stream.Write(multipartFileHeader, 0, multipartFileHeader.Length);

                // write file
                var buff     = new byte[10240];
                var byteRead = 0;
                while ((byteRead = fileStream.Read(buff, 0, buff.Length)) != 0)
                {
                    stream.Write(buff, 0, byteRead);
                }

                // write end boundary
                stream.Write(endBoundary, 0, endBoundary.Length);
            }

            using (var reader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
            {
                return(reader.ReadToEnd());
            }
        }