Exemple #1
0
        internal (ErrStruct, jobstatus) AwaitCompletion(int id, MainFormClass mainForm)
        {
            string     ConversionStatus = string.Empty;
            jobstatus  StatusUpdate;
            RestClient client = new RestClient(ZServer + "jobs/");

            client.Authenticator = new HttpBasicAuthenticator(apiKey, "");
            RestRequest      request      = new RestRequest(id.ToString(), DataFormat.Json);
            JsonDeserializer deserializer = new JsonDeserializer();

            do
            {
                System.Threading.Thread.Sleep(10000);
                IRestResponse response = client.Get(request);
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    ErrStruct err = deserializer.Deserialize <ErrStruct>(response);
                    return(err, new jobstatus());
                }
                //Console.WriteLine(response.Content);
                StatusUpdate     = deserializer.Deserialize <jobstatus>(response);
                ConversionStatus = StatusUpdate.status;
                string msg = string.Format("Conversion status = {0} at {1:HH:mm:ss}", ConversionStatus, DateTime.Now);
                mainForm.Log(msg);
                Console.WriteLine("Conversion status = " + ConversionStatus);
            } while (ConversionStatus != "successful");
            return(new ErrStruct(), StatusUpdate);
        }
Exemple #2
0
        public (ErrStruct, jobstatus) UploadFileStartConversion(string FullInputFileName, string TargetFormat)
        {
            // upload the input file
            RestClient client = new RestClient(ZServer);

            client.Authenticator = new HttpBasicAuthenticator(apiKey, "");
            RestRequest request = new RestRequest("jobs/", Method.POST, DataFormat.Json);

            request.AddParameter("target_format", TargetFormat);
            request.AddFile("source_file", FullInputFileName);
            request.AlwaysMultipartFormData = true;
            IRestResponse response = client.Execute(request);

            Console.WriteLine(response.Content);
            Console.WriteLine(response.ResponseUri);
            JsonDeserializer deserializer = new JsonDeserializer();

            if (response.StatusCode == HttpStatusCode.Created)
            {
                jobstatus InitialStatus = deserializer.Deserialize <jobstatus>(response);
                return(new ErrStruct(), InitialStatus);
            }
            else
            {
                ErrStruct err = deserializer.Deserialize <ErrStruct>(response);
                return(err, new jobstatus());
            }
        }
Exemple #3
0
        public (ErrStruct, tgtdata) GetTargetTypes(string TargetFormat)
        {
            // get target types available from the source format
            if (TargetFormat.StartsWith("."))
            {
                TargetFormat = TargetFormat.Substring(1);
            }
            RestClient client = new RestClient(ZServer + "formats/");

            client.Authenticator = new HttpBasicAuthenticator(apiKey, "");
            RestRequest      request      = new RestRequest(TargetFormat, DataFormat.Json);
            IRestResponse    response     = client.Get(request);
            JsonDeserializer deserializer = new JsonDeserializer();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                tgtdata td = deserializer.Deserialize <tgtdata>(response);
                return(new ErrStruct(), td);
            }
            else
            {
                ErrStruct err = deserializer.Deserialize <ErrStruct>(response);
                return(err, new tgtdata());
            }
        }
Exemple #4
0
        internal void DownloadFiles(string DestFolderName, List <aboutfile> target_files, bool overwrite)
        {
            // download and save the generated file(s)
            RestClient client = new RestClient(ZServer + "files/");

            client.Authenticator = new HttpBasicAuthenticator(apiKey, "");
            foreach (aboutfile about in target_files)
            {
                RestRequest   request  = new RestRequest(about.id.ToString() + "/content", Method.GET);
                IRestResponse response = client.Get(request);
                // check for an error
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    JsonDeserializer deserializer = new JsonDeserializer();
                    ErrStruct        err          = deserializer.Deserialize <ErrStruct>(response);
                    MainFormClass.MainForm.Log(string.Format("Error downloading {0}", about.name));
                    foreach (OneError one in err.errors)
                    {
                        MainFormClass.MainForm.Log(string.Format("  {0}   (code {1})", one.message, one.code));
                    }
                }
                else
                {
                    byte[] data = client.DownloadData(request);
                    (string, string)ErrAndName = SafelyWriteOutputFile(DestFolderName, about.name, data, overwrite);
                    string outfilename = ErrAndName.Item2;
                    if (outfilename == string.Empty)
                    {
                        MainFormClass.MainForm.Log(ErrAndName.Item1);
                    }
                    else
                    {
                        //string msg = string.Format("Downloaded: {0}", Path.GetFileName(outfilename));
                        string finalDirectory = Path.GetDirectoryName(outfilename);
                        string finalName      = Path.GetFileName(outfilename);
                        string msg            = string.Format("Downloaded File:\n  {0}\n  {1}", finalDirectory, finalName);
                        Console.WriteLine(msg);
                        MainFormClass.MainForm.Log(msg);
                    }
                }
            }
        }
Exemple #5
0
        private void Start()
        {
            // this will do all communication with the server
            ServerWorker Server = new ServerWorker(ApiKeyTBox, SandboxCkBox);

            //
            Log("Clear");

            // have user select input file
            Log("Selecting Input file");
            UserSelectInputFile();
            if (FullInputFileName == string.Empty)
            {
                Log("Clear");
                Log("No input file selected");
                ControlsEnabled(true);
                return;
            }
            Log("Input file: " + Path.GetFileName(FullInputFileName));

            // get possible target formats
            (ErrStruct, tgtdata)ErrAndTgt = Server.GetTargetTypes(Path.GetExtension(FullInputFileName));
            ErrStruct err  = ErrAndTgt.Item1;
            tgtdata   tdat = ErrAndTgt.Item2;

            if (err.errors != null)
            {
                Log("Error from Server:");
                foreach (OneError oneE in err.errors)
                {
                    string msg = oneE.message;
                    if (msg == "resource does not exist")
                    {
                        msg = "Can not convert a file of this type.";
                    }
                    Log("  " + msg + "  (code: " + oneE.code + ")");
                }
                Util.ErrorBeep();
                ControlsEnabled(true);
                return;
            }

            // have user select destination format
            UserSelectTargetFileType(tdat.targets);
            if (SelectedTypeExtension == string.Empty)
            {
                Log("No conversion Format selected.");
                ControlsEnabled(true);
                return;
            }
            Log("Convert file to ." + SelectedTypeExtension);

            // determine where output file(s) should be placed
            string DestFolder = Path.GetDirectoryName(FullInputFileName);

            if (!SameDirectoryCkBox.Checked)
            {
                // ask user where to put the files
                bool UseWindowsDefaultUglyBrowser = false;
                if (UseWindowsDefaultUglyBrowser)
                {
                    FolderBrowserDialog folderDlg = new FolderBrowserDialog();
                    folderDlg.ShowNewFolderButton = true;
                    folderDlg.SelectedPath        = DestFolder;
                    folderDlg.Description         = "Where should output files be placed?";
                    DialogResult result = folderDlg.ShowDialog(this);
                    if (result != DialogResult.OK)
                    {
                        Log("No Destination folder was selected.");
                        ControlsEnabled(true);
                        return;
                    }
                    DestFolder = folderDlg.SelectedPath;
                }
                else
                {
                    WKLib.BetterFolderBrowser bfb = new WKLib.BetterFolderBrowser();
                    bfb.RootFolder = DestFolder.Substring(0, DestFolder.LastIndexOf('\\'));
                    bfb.Title      = "Where should output files be placed?";
                    DialogResult result = bfb.ShowDialog();
                    if (result != DialogResult.OK)
                    {
                        Log("No Destination folder was selected.");
                        ControlsEnabled(true);
                        return;
                    }
                    DestFolder = bfb.SelectedFolder;
                }
            }

            // insure the output directory exists (it always should, in theory)
            bool okay = Util.DirectoryExistsOrWasCreated(DestFolder);

            if (!okay)
            {
                ControlsEnabled(true);
                Log("ERROR");
                Log("  Can not create output directory: ");
                Log("  " + DestFolder);
                return;
            }

            // insure we can write to the selected output directory
            okay = Util.DirectoryIsWriteable(DestFolder);
            if (!okay)
            {
                ControlsEnabled(true);
                Log("ERROR:");
                Log("  Can not write to destination directory:");
                Log("  " + DestFolder);
                return;
            }

            // send input file to server and start conversion job
            (ErrStruct, jobstatus)ErrAndJob = Server.UploadFileStartConversion(FullInputFileName, SelectedTypeExtension);
            err = ErrAndJob.Item1;
            jobstatus jobstat = ErrAndJob.Item2;

            if (err.errors != null)
            {
                Log("Error from Server:");
                foreach (OneError oneE in err.errors)
                {
                    string msg = oneE.message;
                    Log("  " + msg + "  (code: " + oneE.code + ")");
                }
                Util.ErrorBeep();
                ControlsEnabled(true);
                return;
            }
            string msg2 = string.Format("job id = {0}, status = {1}", jobstat.id, jobstat.status);

            Log(msg2);

            // wait for conversion completion by the server
            (ErrStruct, jobstatus)StatusUpdate = Server.AwaitCompletion(jobstat.id, this);
            jobstat = StatusUpdate.Item2;
            Log(string.Format("Completion status: {0}", jobstat.status));
            Log(string.Format("Conversion cost:   {0} credit", jobstat.credit_cost));

            // download and save the completed file/files
            bool overwrite = OverwriteCkBox.Checked;

            Server.DownloadFiles(DestFolder, jobstat.target_files, overwrite);

            Log("Done.");
            //
            SaveState.Save(ApiKeyTBox.Text, DestFolder, OverwriteCkBox.Checked, SameDirectoryCkBox.Checked, SandboxCkBox.Checked);

            // done
            ControlsEnabled(true);
        }