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;
}