public void Can_verify_invalid_SendSignatureRequestData_FileUrls()
 {
     var data = new HSSendSignatureRequestData
     {
         FileUrls = new List<string> {"http://example.com/pdf"},
     };
     Assert.False(data.IsValid);
 }
 public void Can_verify_invalid_SendSignatureRequestData_empty_FileUrls()
 {
     var data = new HSSendSignatureRequestData
     {
         FileUrls = new List<string>()
     };
     Assert.False(data.IsValid);
 }
 public void Can_verify_invalid_SendSignatureRequestData_Files()
 {
     var data = new HSSendSignatureRequestData
     {
         Files = new List<FileInfo> { new FileInfo("dummyfile.pdf") },
     };
     Assert.False(data.IsValid);
 }
 public void Can_verify_invalid_SendSignatureRequestData_FileUrls_and_Files()
 {
     var data = new HSSendSignatureRequestData
     {
         Signers = new List<HSSigner> {new HSSigner {Name = "John", EmailAddress = "*****@*****.**"}},
         Files = new List<FileInfo> { new FileInfo("dummyfile.pdf") },
         FileUrls = new List<string> {"http://example.com/pdf"},
     };
     Assert.Equal(false, data.IsValid);
 }
        public void Send_SignatureRequest_FileUrls_Response_Test()
        {
            var requestData = new HSSendSignatureRequestData
            {
                Title = "NDA for Project X",
                Subject = "NDA We Talk about",
                Message = "Bla Bla Bla",
                Signers = new List<HSSigner> { new HSSigner { Name = "John", EmailAddress = "*****@*****.**", Order = "1", Pin = "1234" } },
                FileUrls = new List<string> { "http://www.hollywood-arts.org/wp-content/uploads/2014/05/pdf-sample.pdf" },
            };

            using (var httpClient = FakeClientWithJsonResponse("TestData\\SignatureRequest.json"))
            {
                var apiClient = new HelloSignClient(httpClient);
                var t = apiClient.SendSignatureRequest(requestData);

                Assert.Equal("a9f4825edef25f47e7b", t.Result.SignatureRequest.SignatureRequestId);
            }
        }
        public void Send_SignatureRequest_Files_Response_Test()
        {
            var requestData = new HSSendSignatureRequestData
            {
                Title = "NDA for Project X",
                Subject = "NDA We Talk about",
                Message = "Bla Bla Bla",
                Signers = new List<HSSigner> {new HSSigner {Name = "John", EmailAddress = "*****@*****.**"}},
                Files = new List<FileInfo> {new FileInfo("TestData\\pdf-sample.pdf")}
            };

            using (var httpClient = FakeClientWithJsonResponse("TestData\\SignatureRequest.json"))
            {
                var apiClient = new HelloSignClient(httpClient);
                var t = apiClient.SendSignatureRequest(requestData);
                t.Wait();
                Assert.Equal("a9f4825edef25f47e7b", t.Result.SignatureRequest.SignatureRequestId);
            }
        }
        public void Send_Invalid_SignatureRequest_Get_Exception()
        {
            var requestData = new HSSendSignatureRequestData
            {
                Title = "NDA for Project X",
                Subject = "NDA We Talk about",
                Message = "Bla Bla Bla",
                Files = new List<FileInfo> {new FileInfo("TestData\\pdf-sample.pdf")}
            };

            using (var httpClient = FakeClientWithJsonResponse("TestData\\SignatureRequest.json"))
            {
                var apiClient = new HelloSignClient(httpClient);

                Assert.Throws<ArgumentException>(() => {
                    apiClient.SendSignatureRequest(requestData);
                });
            }
        }
 public void Can_verify_invalid_SendSignatureRequestData_Signer_info_email()
 {
     var data = new HSSendSignatureRequestData
     {
         Signers = new List<HSSigner> {new HSSigner {EmailAddress = "*****@*****.**" }},
         FileUrls = new List<string> {"http://example.com/pdf"},
     };
     Assert.Equal(false, data.IsValid);
 }
 public void Can_verify_invalid_SendSignatureRequestData_non_empty_Files_and_FileUrls()
 {
     var data = new HSSendSignatureRequestData
     {
         Files = new List<FileInfo> { new FileInfo("dummyfile.pdf") },
         FileUrls = new List<string> {"http://example.com/pdf"},
     };
     Assert.Equal(false, data.IsValid);
 }
        public void Can_verify_Valid_SendSignatureRequestData_FileUrls()
        {
            var data = new HSSendSignatureRequestData
            {
                Signers = new List<HSSigner> {new HSSigner {Name = "John", EmailAddress = "*****@*****.**"}},
                FileUrls = new List<string> {"http://example.com/pdf"}
            };

            Assert.True(data.IsValid);
        }
 public void Can_verify_Valid_SendSignatureRequestData_Files()
 {
     var data = new HSSendSignatureRequestData
     {
         Signers = new List<HSSigner> {new HSSigner {Name = "John", EmailAddress = "*****@*****.**"}},
         Files = new List<FileInfo> { new FileInfo("dummyfile.pdf") },
     };
     Assert.True(data.IsValid);
 }
 public void Can_verify_invalid_SendSignatureRequestData_with_empty_Files()
 {
     var data = new HSSendSignatureRequestData
     {
         Signers = new List<HSSigner> {new HSSigner {Name = "John", EmailAddress = "*****@*****.**"}},
         Files = new List<FileInfo>() {new FileInfo("TestFile.xml")}
     };
     Assert.Equal(true, data.IsValid);
 }
        private MultipartFormDataContent CreateFormData(HSSendSignatureRequestData request)
        {
            var formData = new MultipartFormDataContent();

            if (!string.IsNullOrEmpty(request.Title))
                formData.AddStringContent("title", request.Title);
            if (!string.IsNullOrEmpty(request.Subject))
                formData.AddStringContent("subject", request.Subject);
            if (!string.IsNullOrEmpty(request.Message))
                formData.AddStringContent("message", request.Message);
            if (!string.IsNullOrEmpty(request.SigningRedirectUrl))
                formData.AddStringContent("signing_redirect_url", request.SigningRedirectUrl);

            for (var i = 0; i < request.Signers.Count; i++)
            {
                formData.AddStringContent(string.Format("signers[{0}][name]", i), request.Signers[i].Name);
                formData.AddStringContent(string.Format("signers[{0}][email_address]", i),
                    request.Signers[i].EmailAddress);
                if (!string.IsNullOrEmpty(request.Signers[i].Order))
                    formData.AddStringContent(string.Format("signers[{0}][order]", i), request.Signers[i].Order);
                if (!string.IsNullOrEmpty(request.Signers[i].Pin))
                    formData.AddStringContent(string.Format("signers[{0}][pin]", i), request.Signers[i].Pin);
            }

            for (var i = 0; request.CcEmailAddresses != null && i < request.CcEmailAddresses.Count; i++)
            {
                formData.AddStringContent(string.Format("cc_email_addresses[{0}]", i), request.CcEmailAddresses[i]);
            }

            for (var i = 0; request.Files != null && i < request.Files.Count; i++)
            {
                formData.AddFileStreamContent(i, request.Files[i].FullName, request.Files[i].Name);
            }

            for (var i = 0; request.FileUrls != null && i < request.FileUrls.Count; i++)
            {
                formData.AddStringContent(string.Format("file_url[{0}]", i), request.FileUrls[i]);
            }

            if (request.UseTextTags == 1)
                formData.AddStringContent("use_text_tags", "1");

            if (request.HideTextTags == 1)
                formData.AddStringContent("hide_text_tags", "1");

            formData.AddStringContent("test_mode", "1");

            return formData;
        }
        public Task<HSSignatureRequestResponse> SendSignatureRequest(HSSendSignatureRequestData request)
        {
            if (!request.IsValid)
                throw new ArgumentException("Invalid Signature Request Data");

            var formData = CreateFormData(request);

            return _httpClient.PostAsync(Config.SendSignatureRequestUri, formData).ContinueWith(t =>
            {
                using (var sr = new StreamReader(t.Result.Content.ReadAsStreamAsync().Result))
                using (var jtr = new JsonTextReader(sr))
                {
                    var response = Serializer.Deserialize<HSSignatureRequestResponse>(jtr);
                    return response;
                }
            });
        }