public Task<HSAccountResponse> CreateAccount(string emailAddress, string password)
        {
            var formData = new MultipartFormDataContent();
            if (!string.IsNullOrEmpty(emailAddress) && !string.IsNullOrEmpty(password))
            {
                formData.AddStringContent("email_address", emailAddress);
                formData.AddStringContent("password", password);
            }
            else
                throw new ArgumentNullException("emailAddress", "Both email address and password is required");

            return _httpClient.PostAsync(Config.CreateAccountUri, formData)
                .ContinueWith(t =>
                {
                    using (var sr = new StreamReader(t.Result.Content.ReadAsStreamAsync().Result))
                    using (var tr = new JsonTextReader(sr))
                    {
                        var resp = Serializer.Deserialize<HSAccountResponse>(tr);
                        return resp;
                    }
                });
        }
        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<HSAccountResponse> VerifyAccount(string emailAddress)
        {
            var formData = new MultipartFormDataContent();
            if (!string.IsNullOrEmpty(emailAddress))
                formData.AddStringContent("email_address", emailAddress);

            return _httpClient.PostAsync(Config.VerifyAccountUri, formData)
                .ContinueWith(t =>
                {
                    using (var sr = new StreamReader(t.Result.Content.ReadAsStreamAsync().Result))
                    using (var tr = new JsonTextReader(sr))
                    {
                        var resp = Serializer.Deserialize<HSAccountResponse>(tr);
                        return resp;
                    }
                });
        }
 private MultipartFormDataContent CreateFormData(HSRemindSignatureRequestData request)
 {
     var formData = new MultipartFormDataContent();
     if (!string.IsNullOrEmpty(request.EmailAddress))
         formData.AddStringContent("email_address", request.EmailAddress);
     return formData;
 }
        public Task<HSAccountResponse> UpdateAccount(string callbackUrl)
        {
            var formData = new MultipartFormDataContent();

            if (!string.IsNullOrEmpty(callbackUrl))
                formData.AddStringContent("callback_url", callbackUrl);

            return _httpClient.PostAsync(Config.UpdateAccountUri, formData)
                .ContinueWith(t =>
                {
                    using (var sr = new StreamReader(t.Result.Content.ReadAsStreamAsync().Result))
                    using (var tr = new JsonTextReader(sr))
                    {
                        var resp = Serializer.Deserialize<HSAccountResponse>(tr);
                        return resp;
                    }
                });
        }