コード例 #1
0
        static private BulkExport readBulkExportFromApi(RestClient client, string id, string credentials)
        {
            Console.WriteLine("reading bulkexport " + id + " from API");
            RestRequest request = new RestRequest("api/documents/bulk_exports/{bulk_export_id}", Method.GET);

            request.AddUrlSegment("bulk_export_id", id); // replaces matching token in request.Resource

            // easily add HTTP Headers
            request.AddHeader("Authorization", credentials);
            request.AddHeader("x-api-version", "1");
            request.AddHeader("x-api_key", Properties.Settings.Default.ApiKey);

            IRestResponse response = client.Execute(request);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                string                     content = response.Content; // raw content as string
                BulkExport                 deserializedBulkExport = new BulkExport();
                System.IO.MemoryStream     ms  = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(content));
                DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedBulkExport.GetType());
                deserializedBulkExport = ser.ReadObject(ms) as BulkExport;
                ms.Close();
                return(deserializedBulkExport);
            }
            else
            {
                string message = "Could not download zip-file, status code: " + response.StatusCode;
                if (response.ErrorMessage != null)
                {
                    message += ":\n " + response.ErrorMessage;
                }
                addMessageToEmailBody(message);
                return(null);
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            //populate list of SaveLocation with the SaveLocations setting
            string[] saveLocs = Properties.Settings.Default.SaveLocations.Split(';');
            foreach (string saveLoc in saveLocs)
            {
                string[]     splitLoc     = saveLoc.Split(',');
                string       id           = splitLoc[0].Trim();
                string       savePath     = splitLoc[1].Trim();
                SaveLocation saveLocation = new SaveLocation(id, savePath);
                saveLocations.Add(saveLocation);
            }

            emailBody = "";
            string     credentials = "credentials u:" + (Properties.Settings.Default.Username) + " " + "pwd:" + (Properties.Settings.Default.Password);
            RestClient client      = new RestClient(Properties.Settings.Default.Url);

            foreach (SaveLocation saveLoc in saveLocations)
            {
                string bulkExportId = saveLoc.id;
                string savePath     = saveLoc.location;
                string zipPath      = savePath + "\\" + bulkExportId + ".zip";

                BulkExport bulkExport = readBulkExportFromApi(client, bulkExportId, credentials);
                if (bulkExport == null)
                {
                    string message = "Could not retrieve bulkexport with id " + bulkExportId;
                    addMessageToEmailBody(message);
                    continue; //if we could not retrieve this bulkexport we continue with the next bulkexport
                }

                if (!bulkExport.can_download)
                {
                    //send e-mailmessage that bulk export settings are not correct for download
                    string message = "The bulkexport " + bulkExport.name + " is not configured to allow download (manually of via the API)";
                    addMessageToEmailBody(message);
                    continue;
                }


                if (bulkExport.state == "ready")
                {
                    try
                    {
                        DeleteBackups(bulkExportId, savePath);
                        BackupBulkExport(savePath);

                        //download new bulkexport, continue to next bulkexport if this fails. Errormessage is added to mail inside the DownloadBulkExport method
                        if (!DownloadBulkExport(client, bulkExportId, credentials, zipPath, bulkExport.name))
                        {
                            continue;
                        }

                        //extract new bulkexport
                        ExtractBulkExport(zipPath, savePath);

                        //delete backup if download en extract succeeds
                        DeleteBackups(bulkExportId, savePath);
                        DeleteZip(zipPath);
                    }
                    catch (Exception e)
                    {
                        string message = "An error occurred when handling the bulkexport " + bulkExport.name + ":\n" + e.Message;
                        //addMessageToEmailBody(message);
                        continue;
                    }
                }
                else
                {
                    string message = "The bulkexport '" + bulkExport.name + "' could not be downloaded, because the status of the bulkexport is '" + bulkExport.state + "'";
                    addMessageToEmailBody(message);
                }
            }
            if (emailBody != "")
            {
                SendEmail();
            }

            Console.WriteLine("done");
            if (Properties.Settings.Default.DebugMode)
            {
                Console.ReadLine();
            }
        }