public Task<Stream> DownloadSignatureRequestDocuments(HSDownloadSignatureRequestData request)
        {
            string getUrl = Config.GetSignatureRequestFilesUri + "/" + request.SignatureRequestId;
            if (!string.IsNullOrEmpty(request.FileType))
                getUrl = getUrl + "?file_type=" + request.FileType;

            return _httpClient.GetAsync(getUrl, HttpCompletionOption.ResponseHeadersRead).ContinueWith(t =>
            {
                HttpResponseMessage response = t.Result;

                // No documents found from the input request data
                if (response.Content.Headers.ContentDisposition == null)
                    return null;

                return response.Content.ReadAsStreamAsync().Result;
            });
        }
        public Task<string> DownloadSignatureRequestDocuments(HSDownloadSignatureRequestData request, string outputDir)
        {
            if (FileStorage == null)
                throw new IOException("Undefined FileStore");

            string getUrl = Config.GetSignatureRequestFilesUri + "/" + request.SignatureRequestId;

            if (!string.IsNullOrEmpty(request.FileType))
                getUrl = getUrl + "?file_type=" + request.FileType;

            return _httpClient.GetAsync(getUrl, HttpCompletionOption.ResponseHeadersRead).ContinueWith(t =>
            {
                HttpResponseMessage response = t.Result;
                ContentDispositionHeaderValue contentDisposition = response.Content.Headers.ContentDisposition;

                // Not found
                if (contentDisposition == null)
                    return null;

                var filename = contentDisposition.FileName.Trim('"');

                var download = response.Content.ReadAsStreamAsync()
                    .ContinueWith(a => FileStorage.SaveFileAsync(a.Result, outputDir, filename));
                download.Wait();

                return filename;
            });
        }