Ejemplo n.º 1
0
        static async Task MainAsync(string[] args) //static void main
        {
            //first expected argument is account
            //second is "true" for the first parameter is integer account, "false" for first parameter is alias
            //third is "false" for blank form, "true" for final form

#if DEBUG
            args = new[] { "1024246", "True", "False" };
#endif

            string ExitMessage = "";
            if (args == null || args.Length != 3)
            {
                ExitMessage = "Invalid number of arguments given!";
            }
            else if (args[0].Length == 0)
            {
                ExitMessage = "Account not given!";
            }
            else if (args[1].ToUpper() != "TRUE" && args[1].ToUpper() != "FALSE")
            {
                ExitMessage = "Parameter 2 invalid: expected true or false in string form";
            }
            else if (args[2].ToUpper() != "TRUE" && args[2].ToUpper() != "FALSE")
            {
                ExitMessage = "Parameter 3 invalid: expected true or false in string form";
            }

            if (ExitMessage.Length > 0)
            {
                MessageBox.Show("SyngrafiiExecutor error: " + ExitMessage);
                return;
            }

            bool SecondParameterInput = args[1].ToUpper() == "TRUE";
            bool ThirdParameterInput  = args[2].ToUpper() == "TRUE";

            string PdfTempFilePath = iTextPlaceholderDLL.iTextPlaceholderClass.CompletedTempForm(args[0], SecondParameterInput, ThirdParameterInput);

            //now that we have the path of the PDF we need to upload to the package, we can do so.
            string FileAddAPIkey    = "SK-8BFF18BCA34F6CC1194772997F3A3D6D-E49E0A7F7C5FE1F02CA32AC56B674BFE0C3D1E9880E228127EF3CCA38D791414"; //WIP: find API key and replace!
            string PackageAddAPIkey = "SK-DA2FC1E5EEF303A6358DF2B19E6B718A-DEB5C689924A4B4FA22F83A10F13C3731E184E2101CA333160D3D57155D2B350";



            //First, add files to the account using /api/v1/files/add - the response will include a folderId as well as an addPackageLink that will be used in the next step to create a new package with the uploaded files
            //note: Additional files can be added to an existing folder by passing the original folderId with subsequent files/add requests.
            // /api/v1/packages/add

            //Change to match syngrafii

            //Presumably, final API Endpoint is

            SyngrafiiHttpClient client = new SyngrafiiHttpClient(@"https://sign.syngrafii.com/api/v1", FileAddAPIkey);

            //client = new RestClient(@"https://sandbox.syngrafii.com/api/v1");

            //client.Authenticator = new HttpBasicAuthenticator(GFZuser, GFZpass);


            //var request = new RestRequest(@"/files/add", Method.POST);



            //request.AddParameter("files", String.Format("{{ \"fileName\": \"{0}\",  \"fileUrl\": \"{1}\" }}", new string[] { PdfTempFilePath.Split('/')[PdfTempFilePath.Split('/').Length - 1].Split('.')[0], PdfTempFilePath }), "application/json", ParameterType.RequestBody);
            //MPA 8/28/2020 WIP trying to use class to facilitate?
            req_file ToUpload = new req_file();
            ToUpload.fileName = PdfTempFilePath.Split('\\')[PdfTempFilePath.Split('\\').Length - 1];
            ToUpload.fileUrl  = PdfTempFilePath; //WIP!!! the files need to already exist in SYNGRAFII and then are uploaded to the user's account! I think! This will need to be fixed in placeholder!
            //MPA 9/14/2020 may become vestigial



            //byte[] bytes = File.ReadAllBytes(ToUpload.fileUrl);
            string contentType = MimeMapping.GetMimeMapping(ToUpload.fileUrl);


            //request.AddHeader("api_key", FileAddAPIkey);
            //request.AddHeader("Content-Type", "multipart/form-data"); //"application/json"
            //request.AddParameter("files", bytes, contentType, ParameterType.RequestBody);
            //request.AddParameter("files", ToUpload, "application/json", ParameterType.RequestBody);
            //request.AddFile(ToUpload.fileName, bytes, ToUpload.fileUrl, contentType);
            //request.AddBody();

            //var response = client.Execute(request);

            //MPA 9/14/2020
            FileAdded_Result whatreturns = await client.AddFile(ToUpload.fileName, ToUpload.fileUrl); //MPA 9/14/2020 this may become vestigial

            string KeepFileId = whatreturns.files[0].fileId;


            //MPA 9/11/2020
            //WIP: Insert a part here that goes to SQL to get details to populate AddPackageHelper
            AddPackageHelper APH = new AddPackageHelper();

            //MPA 9/14/2020
            //APH.UploadPDFfile = ToUpload.fileUrl;
            APH.UploadedPDFid = KeepFileId;
            SyngrafiiHttpClient client2      = new SyngrafiiHttpClient(@"https://sign.syngrafii.com/api/v1", PackageAddAPIkey); //Works!
            PackageAdded_Result whatreturns2 = await client2.AddPackage(APH);



            //if (response.IsSuccessful)
            //{
            //MessageBox.Show("Successful response!");
            //string loc = response.Headers.FirstOrDefault(t => t.Name.ToUpper().Equals("LOCATION")).Value.ToString();
            //request = new RestRequest(loc, Method.GET);
            //IRestResponse<ClassLib.PDF_Result> pdfResp;
            //ClassLib.PDF_Result pdfResult = null;
            //string pdfStatus = "UNKNOWN";
            //}
        }
        public async Task <PackageAdded_Result> AddPackage(AddPackageHelper APH)
        {
            object request; //request *was* initialized as var without conditional MPA 9/15/2020

            try
            {
                //MPA 9/15/2020 Conditional for how initial document is included
                if (!string.IsNullOrEmpty(APH.UploadPDFfile))
                {
                    // Add Package Request
                    request = new
                    {
                        Name = "API Call Package",

                        //MPA 9/11/2020
                        Type = "video_closing_room",
                        //State = "open", //draft is another option //forbidden

                        /*
                         * Options = new[] { new {
                         *  MeetingVideoRecordingAuto = false,
                         *  MeetingVideoRecordingDisabled = false,
                         *  NotifyMeeting = true,
                         *  NotifyMeetingIcsAttachment = true} },
                         */

                        //MPA 11/10/2020
                        GenerateSignerLinks = "True",

                        Meeting = new[] { new { TimeStart   = DateTime.Now.ToString("yyyy/MM/ddTHH:mm")
                                                , Duration  = XmlConvert.ToString(TimeSpan.FromHours(1)) // ISO 8601 Duration
                                                , isPrivate = true } },
                        Signers = new object[] {                                                         //WAS just new[], changed to relieve error MPA 9/11/2020
                            new  { FirstName = "Michael", LastName = "Andro", Email = "*****@*****.**", Role = "host", SignCac = true }//MPA 9/11/2020 added role and signcac
                            , new { FirstName = "Leahcim", LastName = "Ordna", Email = "*****@*****.**" } //MPA 9/11/2020
                        },
                        Documents = new[]
                        {
                            new {     //fileUrl = "https://download.syngrafii.com/test/agreement.pdf"
                                fileData = File.ReadAllBytes(APH.UploadPDFfile)
                                      //fileId = APH.UploadPDFfile
                            }
                        }
                    };
                }
                else if (!string.IsNullOrEmpty(APH.UploadedPDFid))
                {
                    // Add Package Request
                    request = new
                    {
                        Name = "API Call Package",

                        //MPA 9/11/2020
                        Type = "video_closing_room",
                        //State = "open", //draft is another option //forbidden

                        /*
                         * Options = new[] { new {
                         *  MeetingVideoRecordingAuto = false,
                         *  MeetingVideoRecordingDisabled = false,
                         *  NotifyMeeting = true,
                         *  NotifyMeetingIcsAttachment = true} },
                         */
                        Meeting = new[] { new { TimeStart   = DateTime.Now.ToString("yyyy/MM/ddTHH:mm")
                                                , Duration  = XmlConvert.ToString(TimeSpan.FromHours(1)) // ISO 8601 Duration
                                                , isPrivate = true } },
                        Signers = new object[] {                                                         //WAS just new[], changed to relieve error MPA 9/11/2020
                            new  { FirstName = "Michael", LastName = "Andro", Email = "*****@*****.**", Role = "host", SignCac = true }//MPA 9/11/2020 added role and signcac
                            , new { FirstName = "Leahcim", LastName = "Ordna", Email = "*****@*****.**" } //MPA 9/11/2020
                        },
                        Documents = new[]
                        {
                            new { //fileUrl = "https://download.syngrafii.com/test/agreement.pdf"
                                  //fileData = File.ReadAllBytes(APH.UploadPDFfile)
                                fileId = APH.UploadedPDFid
                            }
                        }
                    };
                }
                else
                {
                    throw new Exception("Must have an initial form.");
                }

                // Serialize Json
                var message = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
                // Post Request
                var response = await _httpClient.PostAsync("packages/add", message);

                response.EnsureSuccessStatusCode();

                //return JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
                //MPA 9/14/2020
                dynamic             content = JsonConvert.DeserializeObject <dynamic>(await response.Content.ReadAsStringAsync());
                PackageAdded_Result Presult = JsonConvert.DeserializeObject <PackageAdded_Result>(JsonConvert.SerializeObject(content));

                //MPA 11/6/2020
                //DebugClass.Jot(new List<string>() { Presult.package.signers[0].meetingLink.ToString() });


                return(Presult);
            }
            catch (Exception Ex)
            {
                DebugClass.Jot(new List <string>()
                {
                    "Unsuccessful Package Add! " + Ex.Message
                });
                return(null);
            }
        }