hello_sign 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/hello_sign/client.rb +2 -1
- data/lib/hello_sign/signature_request_parameters.rb +45 -0
- data/lib/hello_sign/signature_request_proxy.rb +17 -0
- data/lib/hello_sign/version.rb +1 -1
- data/lib/hello_sign.rb +5 -0
- data/spec/fixtures/test.jpg +0 -0
- data/spec/fixtures/test.pdf +0 -0
- data/spec/fixtures/test.txt +1 -0
- data/spec/integration/account_spec.rb +1 -0
- data/spec/integration/signature_request_spec.rb +32 -0
- data/spec/unit/hello_sign_spec.rb +13 -0
- data/spec/unit/signature_request_parameters_spec.rb +42 -0
- data/spec/unit/signature_request_proxy_spec.rb +32 -0
- metadata +16 -2
data/lib/hello_sign/client.rb
CHANGED
@@ -36,10 +36,11 @@ module HelloSign
|
|
36
36
|
|
37
37
|
def unauth_connection(&auth)
|
38
38
|
Faraday.new(:url => API_ENDPOINT) do |faraday|
|
39
|
+
auth.call(faraday) if block_given?
|
40
|
+
faraday.request :multipart
|
39
41
|
faraday.request :url_encoded
|
40
42
|
faraday.response :logger
|
41
43
|
faraday.response :multi_json, :symbolize_keys => true
|
42
|
-
auth.call(faraday) if block_given?
|
43
44
|
faraday.adapter Faraday.default_adapter
|
44
45
|
end
|
45
46
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'faraday/upload_io'
|
2
|
+
|
3
|
+
module HelloSign
|
4
|
+
class SignatureRequestParameters
|
5
|
+
attr_accessor :title, :subject, :message, :ccs
|
6
|
+
attr_writer :signers, :files
|
7
|
+
|
8
|
+
def signers
|
9
|
+
@signers.each_with_index.inject({}) do |parameter, (signer, index)|
|
10
|
+
signer = {
|
11
|
+
:name => signer[:name],
|
12
|
+
:email_address => signer[:email],
|
13
|
+
:order => index
|
14
|
+
}
|
15
|
+
parameter[index] = signer
|
16
|
+
parameter
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def files
|
21
|
+
@files.each_with_index.inject({}) do |parameter, (file, index)|
|
22
|
+
parameter[index + 1] = upload_io.new(file[:io], file[:mime], file[:name])
|
23
|
+
parameter
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def formatted
|
28
|
+
{
|
29
|
+
:title => title,
|
30
|
+
:subject => subject,
|
31
|
+
:message => message,
|
32
|
+
:cc_email_addresses => ccs,
|
33
|
+
:signers => signers,
|
34
|
+
:file => files
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def upload_io
|
41
|
+
Faraday::UploadIO
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'hello_sign/signature_request_parameters'
|
2
|
+
|
3
|
+
module HelloSign
|
4
|
+
class SignatureRequestProxy
|
5
|
+
attr_reader :client
|
6
|
+
|
7
|
+
def initialize(client)
|
8
|
+
@client = client
|
9
|
+
end
|
10
|
+
|
11
|
+
def create(raw_parameters)
|
12
|
+
raw_parameters.call(request_parameters = SignatureRequestParameters.new)
|
13
|
+
client.post('/signature_request/send', :body => request_parameters.formatted)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/hello_sign/version.rb
CHANGED
data/lib/hello_sign.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'hello_sign/version'
|
2
2
|
require 'hello_sign/client'
|
3
3
|
require 'hello_sign/account_proxy'
|
4
|
+
require 'hello_sign/signature_request_proxy'
|
4
5
|
|
5
6
|
module HelloSign
|
6
7
|
class << self
|
@@ -10,6 +11,10 @@ module HelloSign
|
|
10
11
|
AccountProxy.new(client)
|
11
12
|
end
|
12
13
|
|
14
|
+
def signature_request(¶meters)
|
15
|
+
SignatureRequestProxy.new(client).create(parameters)
|
16
|
+
end
|
17
|
+
|
13
18
|
def client
|
14
19
|
@client ||= Client.new(email, password)
|
15
20
|
end
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a test upload file.
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'integration/helper'
|
2
|
+
|
3
|
+
describe HelloSign do
|
4
|
+
context "when sending a signature request" do
|
5
|
+
let(:text_file_io) { File.new('spec/fixtures/test.txt') }
|
6
|
+
let(:image_io) { File.new('spec/fixtures/test.jpg') }
|
7
|
+
|
8
|
+
before do
|
9
|
+
stub_post_with_auth('/signature_request/send')
|
10
|
+
request = HelloSign.signature_request do |request|
|
11
|
+
request.title = 'Lease'
|
12
|
+
request.subject = 'Sign this'
|
13
|
+
request.message = 'You must sign this.'
|
14
|
+
request.ccs = ['lawyer@lawfirm.com', 'spouse@family.com']
|
15
|
+
request.signers = [
|
16
|
+
{:name => 'Jack', :email => 'jack@hill.com'},
|
17
|
+
{:name => 'Jill', :email => 'jill@hill.com'}
|
18
|
+
]
|
19
|
+
request.files = [
|
20
|
+
{:name => 'test.txt', :io => text_file_io, :mime => 'text/plain'},
|
21
|
+
{:name => 'test.jpg', :io => image_io, :mime => 'image/jpeg'}
|
22
|
+
]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "sends a signature request to the HelloSign API" do
|
27
|
+
expect(a_post_with_auth('/signature_request/send')
|
28
|
+
.with(:headers => {'Content-Type' => /multipart\/form-data/}, :body => /This is a test upload file\./)
|
29
|
+
).to have_been_made
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -8,6 +8,19 @@ describe HelloSign do
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
+
describe "::signature_request" do
|
12
|
+
let(:sr_proxy) { double('signature_request_proxy') }
|
13
|
+
|
14
|
+
before do
|
15
|
+
HelloSign::SignatureRequestProxy.stub(:new).and_return(sr_proxy)
|
16
|
+
sr_proxy.should_receive(:create).and_return(@request_result = stub)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "calls #create on the signature request proxy and returns the result" do
|
20
|
+
expect(HelloSign.signature_request).to eq @request_result
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
11
24
|
describe "::client" do
|
12
25
|
context "when it has not previously been called" do
|
13
26
|
it "returns a new client" do
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'hello_sign/signature_request_parameters'
|
3
|
+
|
4
|
+
describe HelloSign::SignatureRequestParameters do
|
5
|
+
describe "#formatted" do
|
6
|
+
before do
|
7
|
+
Faraday::UploadIO.should_receive(:new).with('text file IO object', 'text/plain', 'test.txt').and_return(text_file = stub)
|
8
|
+
Faraday::UploadIO.should_receive(:new).with('image file IO object', 'image/jpeg', 'test.jpg').and_return(image_file = stub)
|
9
|
+
|
10
|
+
@request_parameters = HelloSign::SignatureRequestParameters.new
|
11
|
+
|
12
|
+
@request_parameters.title = 'Lease'
|
13
|
+
@request_parameters.subject = 'Sign this'
|
14
|
+
@request_parameters.message = 'You must sign this.'
|
15
|
+
@request_parameters.ccs = ['lawyer@lawfirm.com', 'spouse@family.com']
|
16
|
+
@request_parameters.signers = [
|
17
|
+
{:name => 'Jack', :email => 'jack@hill.com'},
|
18
|
+
{:name => 'Jill', :email => 'jill@hill.com'}
|
19
|
+
]
|
20
|
+
@request_parameters.files = [
|
21
|
+
{:name => 'test.txt', :io => 'text file IO object', :mime => 'text/plain'},
|
22
|
+
{:name => 'test.jpg', :io => 'image file IO object', :mime => 'image/jpeg'}
|
23
|
+
]
|
24
|
+
|
25
|
+
@expected = {
|
26
|
+
:title => 'Lease',
|
27
|
+
:subject =>'Sign this',
|
28
|
+
:message =>'You must sign this.',
|
29
|
+
:cc_email_addresses => ['lawyer@lawfirm.com', 'spouse@family.com'],
|
30
|
+
:signers => {
|
31
|
+
0 => {:name => 'Jack', :email_address => 'jack@hill.com', :order => 0},
|
32
|
+
1 => {:name => 'Jill', :email_address => 'jill@hill.com', :order => 1}
|
33
|
+
},
|
34
|
+
:file => {1 => text_file, 2 => image_file}
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns formatted parameters" do
|
39
|
+
expect(@request_parameters.formatted).to eq @expected
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'hello_sign/signature_request_proxy'
|
3
|
+
|
4
|
+
describe HelloSign::SignatureRequestProxy do
|
5
|
+
let(:client) { double('client') }
|
6
|
+
subject(:sr_proxy) { HelloSign::SignatureRequestProxy.new(client) }
|
7
|
+
|
8
|
+
describe "#client" do
|
9
|
+
it "returns the client" do
|
10
|
+
expect(sr_proxy.client).to be client
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#create" do
|
15
|
+
let(:formatted_request_body) { stub }
|
16
|
+
let(:create_response) { stub }
|
17
|
+
let(:raw_parameters) { Proc.new { |params| params.foo = 'bar' } }
|
18
|
+
|
19
|
+
before do
|
20
|
+
HelloSign::SignatureRequestParameters.stub(:new).and_return(request_parameters = mock)
|
21
|
+
request_parameters.stub(:formatted).and_return(formatted_request_body)
|
22
|
+
request_parameters.should_receive(:foo=).with('bar')
|
23
|
+
client.should_receive(:post)
|
24
|
+
.with('/signature_request/send', :body => formatted_request_body)
|
25
|
+
.and_return(create_response)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sends a signature request creation request and returns the result" do
|
29
|
+
expect(sr_proxy.create(raw_parameters)).to eq create_response
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hello_sign
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -85,16 +85,24 @@ files:
|
|
85
85
|
- lib/hello_sign/account_proxy.rb
|
86
86
|
- lib/hello_sign/client.rb
|
87
87
|
- lib/hello_sign/settings.rb
|
88
|
+
- lib/hello_sign/signature_request_parameters.rb
|
89
|
+
- lib/hello_sign/signature_request_proxy.rb
|
88
90
|
- lib/hello_sign/version.rb
|
89
91
|
- lib/hello_sign.rb
|
92
|
+
- spec/fixtures/test.jpg
|
93
|
+
- spec/fixtures/test.pdf
|
94
|
+
- spec/fixtures/test.txt
|
90
95
|
- spec/helper.rb
|
91
96
|
- spec/integration/account_spec.rb
|
92
97
|
- spec/integration/hello_sign_spec.rb
|
93
98
|
- spec/integration/helper.rb
|
99
|
+
- spec/integration/signature_request_spec.rb
|
94
100
|
- spec/unit/account_proxy_spec.rb
|
95
101
|
- spec/unit/client_spec.rb
|
96
102
|
- spec/unit/hello_sign_spec.rb
|
97
103
|
- spec/unit/settings_spec.rb
|
104
|
+
- spec/unit/signature_request_parameters_spec.rb
|
105
|
+
- spec/unit/signature_request_proxy_spec.rb
|
98
106
|
homepage: http://www.github.com/craiglittle/hello_sign
|
99
107
|
licenses: []
|
100
108
|
post_install_message:
|
@@ -120,11 +128,17 @@ signing_key:
|
|
120
128
|
specification_version: 3
|
121
129
|
summary: A Ruby interface to the HelloSign API.
|
122
130
|
test_files:
|
131
|
+
- spec/fixtures/test.jpg
|
132
|
+
- spec/fixtures/test.pdf
|
133
|
+
- spec/fixtures/test.txt
|
123
134
|
- spec/helper.rb
|
124
135
|
- spec/integration/account_spec.rb
|
125
136
|
- spec/integration/hello_sign_spec.rb
|
126
137
|
- spec/integration/helper.rb
|
138
|
+
- spec/integration/signature_request_spec.rb
|
127
139
|
- spec/unit/account_proxy_spec.rb
|
128
140
|
- spec/unit/client_spec.rb
|
129
141
|
- spec/unit/hello_sign_spec.rb
|
130
142
|
- spec/unit/settings_spec.rb
|
143
|
+
- spec/unit/signature_request_parameters_spec.rb
|
144
|
+
- spec/unit/signature_request_proxy_spec.rb
|