ACRCloudUploadFile.ACRCloudUploadFile.Upload C# (CSharp) Method

Upload() public static method

public static Upload ( Object>.IDictionary audioParams, Object>.IDictionary userParams, int timeoutSecond ) : string
audioParams Object>.IDictionary
userParams Object>.IDictionary
timeoutSecond int
return string
        public static string Upload(IDictionary<string, Object> audioParams, IDictionary<string, Object> userParams, int timeoutSecond)
        {
            string reqUrl = "https://api.acrcloud.com/v1/audios";
            string httpMethod = "POST";
            string httpAction = "/v1/audios";
            string signatureVersion = "1";
            string accessKey = (string)audioParams["access_key"];
            string accessSecret = (string)audioParams["access_secret"];
            string audioId = (string)audioParams["audio_id"];
            string audioTitle = (string)audioParams["audio_title"];
            string bucketName = (string)audioParams["bucket_name"];
            string dataType = (string)audioParams["data_type"];
            byte[] audioData = (byte[])audioParams["audio_data"];
            string timestamp = ((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds).ToString();

            string sigStr = httpMethod + "\n" + httpAction + "\n" + accessKey + "\n" + signatureVersion + "\n" + timestamp;
            string signature = EncryptByHMACSHA1(sigStr, accessSecret);

            Console.WriteLine(signature);

            var headerParams = new Dictionary<string, object>();
            headerParams.Add("access-key", accessKey);
            headerParams.Add("signature-version", signatureVersion);
            headerParams.Add("signature", signature);
            headerParams.Add("timestamp", timestamp);

            var postParams = new Dictionary<string, object>();
            postParams.Add("title", audioTitle);
            postParams.Add("audio_id", audioId);
            postParams.Add("bucket_name", bucketName);
            postParams.Add("data_type", dataType);
            postParams.Add("audio_file", audioData);

            if (userParams != null) {
                int i = 0;
                foreach (var item in userParams)
                {
                    postParams.Add("custom_key[" + i + "]", item.Key);
                    postParams.Add("custom_value[" + i + "]", item.Value);
                    i++;
                }
            }

            string res = PostHttp(reqUrl, headerParams, postParams, timeoutSecond);

            return res;
        }

Usage Example

Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            string audioId      = "XXX";
            string audioTitle   = "xxx";
            string dataPath     = "./a.mp3";
            string dataType     = "audio"; // audio & fingerprint
            string bucketName   = "<your bucket name>";
            string accessKey    = "<your console access_key>";
            string accessSecret = "<your console access_secret>";

            var userParams = new Dictionary <string, object>();

            userParams.Add("<user-defined-key1>", "<user-defined-value1>");
            userParams.Add("<user-defined-key2>", "<user-defined-value2>");

            var audioParams = new Dictionary <string, object>();

            audioParams.Add("access_key", accessKey);
            audioParams.Add("access_secret", accessSecret);
            audioParams.Add("audio_id", audioId);
            audioParams.Add("audio_title", audioTitle);
            audioParams.Add("bucket_name", bucketName);
            audioParams.Add("data_type", dataType);


            using (FileStream fs = new FileStream(dataPath, FileMode.Open))
            {
                using (BinaryReader reader = new BinaryReader(fs))
                {
                    byte[] datas = reader.ReadBytes((int)fs.Length);
                    audioParams.Add("audio_data", datas);

                    // default timeout 10 seconds
                    string result = ACRCloudUploadFile.Upload(audioParams, userParams, 10);
                    Console.WriteLine(result);
                    Console.ReadLine();
                }
            }
        }