private string getServer()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.online-convert.com/get-queue");
request.Method = "POST";
request.ContentType = @"application/x-www-form-urlencoded";
string inputdata = "\n" + @"
2e3152........03258494237510e6
image
";
string postData = "queue=" + inputdata;
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
request.ContentLength = byte1.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();
WebResponse response = request.GetResponse();
Stream rs = response.GetResponseStream();
StreamReader readStream = new StreamReader(rs, Encoding.UTF8);
string result = readStream.ReadToEnd();
response.Close();
readStream.Close();
XDocument xdoc = XDocument.Parse(result);
string server = xdoc.Descendants("params").FirstOrDefault().Descendants("server").FirstOrDefault().Value;
return server;
}
private XDocument getStatus(string hash)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.online-convert.com/queue-status");
request.Method = "POST";
request.ContentType = @"application/x-www-form-urlencoded";
string inputdatatemplate = "queue=\n" + @"
2e3152........03258494237510e6
{0}
";
string postData = string.Format(inputdatatemplate, hash);
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
request.ContentLength = byte1.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
newStream.Close();
WebResponse response = request.GetResponse();
Stream rs = response.GetResponseStream();
StreamReader readStream = new StreamReader(rs, Encoding.UTF8);
string result = readStream.ReadToEnd();
response.Close();
readStream.Close();
XDocument xdoc = XDocument.Parse(result);
return xdoc;
}
private void download(string directdownload, string filename)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(directdownload);
request.Method = "GET";
WebResponse response = request.GetResponse();
Stream rs = response.GetResponseStream();
FileStream stream = new FileStream(filename, FileMode.Create);
BinaryWriter writer = new BinaryWriter(stream);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = rs.Read(buffer, 0, buffer.Length)) != 0)
{
writer.Write(buffer, 0, bytesRead);
}
rs.Close();
writer.Close();
stream.Close();
}
private void Button5_Click(object sender, RoutedEventArgs e)
{
string s = getServer();
string inputdata = "\n" + @"
2e3152........03258494237510e6
image
convert-to-svg
true
";
string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
//C:\Users\Downloads\file.eps
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(s + "/queue-insert");
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
request.KeepAlive = true;
request.Credentials =
System.Net.CredentialCache.DefaultCredentials;
Stream memStream = new System.IO.MemoryStream();
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}";
//1 parameter that is not a file
string formitem = string.Format(formdataTemplate, "queue", inputdata);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
memStream.Write(formitembytes, 0, formitembytes.Length);
memStream.Write(boundarybytes, 0, boundarybytes.Length);
//1 file
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";
string header = string.Format(headerTemplate, "file", @"C:\Users\\Downloads\file.eps");
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
memStream.Write(headerbytes, 0, headerbytes.Length);
FileStream fileStream = new FileStream(@"C:\Users\Downloads\file.eps", FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);
}
memStream.Write(boundarybytes, 0, boundarybytes.Length);
fileStream.Close();
request.ContentLength = memStream.Length;
Stream newStream = request.GetRequestStream();
memStream.Position = 0;
byte[] tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
newStream.Write(tempBuffer, 0, tempBuffer.Length);
newStream.Close();
string statuscode;
do{
WebResponse response = request.GetResponse();
Stream rs = response.GetResponseStream();
StreamReader readStream = new StreamReader (rs, Encoding.UTF8);
string result = readStream.ReadToEnd();
response.Close();
readStream.Close();
MessageBox.Show(result);
XDocument xdoc = XDocument.Parse(result);
string downloadUrl = xdoc.Descendants("params").FirstOrDefault().Descendants("downloadUrl").FirstOrDefault().Value;
string hash = xdoc.Descendants("params").FirstOrDefault().Descendants("hash").FirstOrDefault().Value;
xdoc = getStatus(hash);
statuscode = xdoc.Descendants("status").FirstOrDefault().Descendants("code").FirstOrDefault().Value;
if (statuscode == "101" || statuscode == "104")
{
Trace.WriteLine("sleeping for 10s");
Thread.Sleep(1000 * 10);
}
else
{
Trace.WriteLine(xdoc);
string directDownload = xdoc.Descendants("params").FirstOrDefault().Descendants("directDownload").FirstOrDefault().Value;
download(directDownload,@"C:\Users\Downloads\test.svg");
}
}
while(statuscode == "101" || statuscode == "104");
}