public static SaveAsResponse saveAs(Credentials credentials, string streamId, string fileName, string format, long start, long end, string notifyUrl,string pipleline)
{
if (streamId == null)
{
throw new PiliException(MessageConfig.NULL_STREAM_ID_EXCEPTION_MSG);
}
if (!Utils.isArgNotEmpty(fileName))
{
throw new PiliException(MessageConfig.ILLEGAL_FILE_NAME_EXCEPTION_MSG);
}
if (start < 0 || end < 0 || start > end)
{
throw new PiliException(MessageConfig.ILLEGAL_TIME_MSG);
}
string urlStr = string.Format("{0}/streams/{1}/saveas", API_BASE_URL, streamId);
HttpWebResponse response = null;
JObject json = new JObject();
json.Add("name", fileName);
if (Utils.isArgNotEmpty(notifyUrl))
{
json.Add("notifyUrl", notifyUrl);
}
if (start != 0)
{
json.Add("start", start);
}
if (end != 0)
{
json.Add("end", end);
}
json.Add("format", format);
if (pipleline!=""){
json.Add("pipleline", pipleline);
}
try
{
Uri url = new Uri(urlStr);
mOkHttpClient = (HttpWebRequest)HttpWebRequest.Create(url);
string contentType = "application/json";
byte[] body = json.ToString().GetBytes(Config.UTF8);
string macToken = credentials.signRequest(url, "POST", body, contentType);
mOkHttpClient.Method = WebRequestMethods.Http.Post;
mOkHttpClient.ContentType = contentType;
mOkHttpClient.UserAgent = Utils.UserAgent;
mOkHttpClient.Headers.Add("Authorization", macToken);
mOkHttpClient.ContentLength = body.Length;
using (System.IO.Stream requestStream = mOkHttpClient.GetRequestStream())
{
Utils.CopyN(requestStream, new MemoryStream(body), body.Length);
}
response = (HttpWebResponse)mOkHttpClient.GetResponse();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Console.Write(e.StackTrace);
throw new PiliException(e);
}
// response never be null
if ((int)response.StatusCode == 200)
{
try
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string text = reader.ReadToEnd();
JObject jsonObj = JObject.Parse(text);
return new SaveAsResponse(jsonObj);
}
catch (IOException e)
{
Console.WriteLine(e.ToString());
Console.Write(e.StackTrace);
throw new PiliException(e);
}
}
else
{
throw new PiliException(response);
}
}