rightsignature 0.1.4 → 0.1.5
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/README.md +31 -23
- data/lib/rightsignature/helpers/normalizing.rb +14 -5
- data/lib/rightsignature/template.rb +2 -1
- data/lib/rightsignature/version.rb +1 -1
- data/spec/normalizing_spec.rb +67 -0
- data/spec/template_spec.rb +32 -0
- metadata +2 -1
data/README.md
CHANGED
@@ -8,7 +8,7 @@ gem install rightsignature
|
|
8
8
|
```
|
9
9
|
or in your Gemfile
|
10
10
|
```
|
11
|
-
gem 'rightsignature', '~> 0.1.
|
11
|
+
gem 'rightsignature', '~> 0.1.5'
|
12
12
|
```
|
13
13
|
|
14
14
|
Setup
|
@@ -199,6 +199,7 @@ Optional options:
|
|
199
199
|
Ex. ['sent_from_api', {"user_id" => "32"}]
|
200
200
|
* callback_url: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
201
201
|
Ex. "http://yoursite/callback"
|
202
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
202
203
|
|
203
204
|
#####Template Prepacking
|
204
205
|
For cloning a Template before sending it.
|
@@ -211,17 +212,20 @@ After prepacking, the new template can be updated with prefill data. This won't
|
|
211
212
|
```
|
212
213
|
RightSignature::Template.prefill(guid, subject, roles)
|
213
214
|
```
|
214
|
-
|
215
|
-
|
216
|
-
*
|
217
|
-
*
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
215
|
+
* guid: template guid to use. Should be a template that was prepackaged
|
216
|
+
* subject: document subject.
|
217
|
+
* roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :name => "a@example.com"}}
|
218
|
+
* Optional options:
|
219
|
+
* description: document description that'll appear in the email
|
220
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
221
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
222
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
223
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
224
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
225
|
+
* callback_url: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
226
|
+
Ex. "http://yoursite/callback"
|
227
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
228
|
+
|
225
229
|
```
|
226
230
|
options = {
|
227
231
|
:description => "Please read over the handbook and sign it.",
|
@@ -245,16 +249,19 @@ Send template as a document for signing. Same options as prefill.
|
|
245
249
|
```
|
246
250
|
RightSignature::Template.send_template(guid, subject, roles)
|
247
251
|
```
|
248
|
-
|
249
|
-
|
250
|
-
*
|
251
|
-
*
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
252
|
+
* guid: template guid to use. Should be a template that was prepackaged
|
253
|
+
* subject: document subject.
|
254
|
+
* roles: recipient names in array of {:name => "Person's Name", :email => "Email"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name", :name => "a@example.com"}}
|
255
|
+
* Optional options:
|
256
|
+
* description: document description that'll appear in the email
|
257
|
+
* merge_fields: document merge fields, should be an array of merge_field_values in a hash with the merge_field_name.
|
258
|
+
Ex. [{"Salary" => "$1,000,000"}]
|
259
|
+
* expires_in: number of days before expiring the document. API only allows 2,5,15, or 30.
|
260
|
+
* tags: document tags, an array of string or hashes 'single_tag' (for simple tag) or {'tag_name' => 'tag_value'} (for tuples pairs)
|
261
|
+
Ex. ['sent_from_api', {"user_id" => "32"}]
|
262
|
+
* callback_url: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
263
|
+
Ex. "http://yoursite/callback"
|
264
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
258
265
|
|
259
266
|
```
|
260
267
|
options = {
|
@@ -280,7 +287,7 @@ Returns an array of {:name => "John Bellingham", "url" => "https://rightsignatur
|
|
280
287
|
RightSignature::Template.send_as_embedded_signers(guid, recipients, options={})
|
281
288
|
```
|
282
289
|
* guid: guid of template to create document with
|
283
|
-
* recipient: recipient names in array of {"
|
290
|
+
* recipient: recipient names in array of {:name => "Person's Name"} hashed by Role ID. Ex. {"signer_A" => {:name => "Your Name"}}
|
284
291
|
* options:
|
285
292
|
* subject: document subject that'll appear in the email
|
286
293
|
* description: document description that'll appear in the email
|
@@ -292,6 +299,7 @@ RightSignature::Template.send_as_embedded_signers(guid, recipients, options={})
|
|
292
299
|
* callback_url: A URI encoded URL that specifies the location for API to POST a callback notification to when the document has been created and signed.
|
293
300
|
Ex. "http://yoursite/callback"
|
294
301
|
* redirect_location: URL to redirect users after signing.
|
302
|
+
* use_merge_field_ids: Using merge field ids instead of merge field name for merge_fields. true or false.
|
295
303
|
|
296
304
|
#####Create New Template Link
|
297
305
|
Generate a url that let's someone upload and create a template under OAuth user's account.
|
@@ -34,14 +34,19 @@ module RightSignature::Helpers
|
|
34
34
|
|
35
35
|
module RolesHelper
|
36
36
|
class <<self
|
37
|
-
# Converts [{"
|
38
|
-
# [{:role => {:name => "John", :email => "email@example.com", "@
|
37
|
+
# Converts [{"Role_ID" => {:name => "John", :email => "email@example.com"}}] to
|
38
|
+
# [{:role => {:name => "John", :email => "email@example.com", "@role_id" => "Role_ID"} }]
|
39
|
+
# Tries to guess if it's using Role ID or Role Name
|
39
40
|
def array_to_xml_hash(roles_array)
|
40
41
|
roles_hash_array = []
|
41
42
|
roles_array.each do |role_hash|
|
42
43
|
name, value = role_hash.first
|
43
44
|
raise "Hash '#{role_hash.inspect}' is malformed, should be something like {ROLE_NAME => {:name => \"a\", :email => \"a@a.com\"}}" unless value.is_a? Hash and name.is_a? String
|
44
|
-
|
45
|
+
if name.match(/^signer_[A-Z]+$/) || name.match(/^cc_[A-Z]+$/)
|
46
|
+
roles_hash_array << {:role => value.merge({"@role_id" => name})}
|
47
|
+
else
|
48
|
+
roles_hash_array << {:role => value.merge({"@role_name" => name})}
|
49
|
+
end
|
45
50
|
end
|
46
51
|
|
47
52
|
roles_hash_array
|
@@ -55,11 +60,15 @@ module RightSignature::Helpers
|
|
55
60
|
class <<self
|
56
61
|
# Converts [{"Role Name" => {:name => "John", :email => "email@example.com"}}] to
|
57
62
|
# [{"role roles_name=\"Role Name\"" => {:role => {:name => "John", :email => "email@example.com"}} }]
|
58
|
-
def array_to_xml_hash(merge_fields_array)
|
63
|
+
def array_to_xml_hash(merge_fields_array, use_id=false)
|
59
64
|
merge_fields = []
|
60
65
|
merge_fields_array.each do |merge_field_hash|
|
61
66
|
name, value = merge_field_hash.first
|
62
|
-
|
67
|
+
if use_id
|
68
|
+
merge_fields << { :merge_field => {:value => value, "@merge_field_id" => name}}
|
69
|
+
else
|
70
|
+
merge_fields << { :merge_field => {:value => value, "@merge_field_name" => name}}
|
71
|
+
end
|
63
72
|
end
|
64
73
|
|
65
74
|
merge_fields
|
@@ -80,7 +80,8 @@ module RightSignature
|
|
80
80
|
xml_hash[:template][:roles] = RolesHelper.array_to_xml_hash(roles)
|
81
81
|
|
82
82
|
# Optional arguments
|
83
|
-
|
83
|
+
use_merge_field_ids = options.delete(:use_merge_field_ids)
|
84
|
+
xml_hash[:template][:merge_fields] = MergeFieldsHelper.array_to_xml_hash(options[:merge_fields], use_merge_field_ids) if options[:merge_fields]
|
84
85
|
xml_hash[:template][:tags] = TagsHelper.array_to_xml_hash(options[:tags]) if options[:tags]
|
85
86
|
[:expires_in, :description, :callback_url, :action].each do |other_option|
|
86
87
|
xml_hash[:template][other_option] = options[other_option] if options[other_option]
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
|
3
|
+
describe RightSignature::Helpers::TagsHelper do
|
4
|
+
describe "mixed_array_to_string_array" do
|
5
|
+
it "should convert array of strings and hashes to string" do
|
6
|
+
RightSignature::Helpers::TagsHelper.mixed_array_to_string_array(["a", {'good' => "yea"}, '123']).should == "a,good:yea,123"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should raise error if array contains something other than hash or string" do
|
10
|
+
lambda {RightSignature::Helpers::TagsHelper.mixed_array_to_string_array(["a", ['bad'], {'good' => "yea"}])}.should raise_error
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "array_to_xml_hash" do
|
15
|
+
it "should convert array of string and hash of {name => value} into array of :tag => {:name => name, :value => value}" do
|
16
|
+
RightSignature::Helpers::TagsHelper.array_to_xml_hash(['abc', {"taggy" => "tvalue"}]).should == [{:tag => {:name => 'abc'}}, {:tag => {:name => 'taggy', :value => 'tvalue'}}]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe RightSignature::Helpers::RolesHelper do
|
22
|
+
describe "array_to_xml_hash" do
|
23
|
+
it "should convert array of {\"Role name\" => {:name => name, :email => email}} to array of {:role => {:name => name, :email => email, \"@role_id\" => \"Role name\"}} " do
|
24
|
+
results = RightSignature::Helpers::RolesHelper.array_to_xml_hash([
|
25
|
+
{"Leaser" => {:name => "John Bellingham", :email => "j@example.com"}},
|
26
|
+
{"Leasee" => {:name => "Timmy S", :email => "t@example.com"}}
|
27
|
+
])
|
28
|
+
results.size.should == 2
|
29
|
+
results.include?({:role => {:name => "John Bellingham", :email => "j@example.com", "@role_name" => "Leaser"}})
|
30
|
+
results.include?({:role => {:name => "Timmy S", :email => "t@example.com", "@role_name" => "Leasee"}})
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should convert array of {\"signer_A\" => {:name => name, :email => email}} or {\"cc_A\" => {:name => name, :email => email}} to array of {:role => {:name => name, :email => email, \"@role_id\" => \"signer_a\"}} " do
|
34
|
+
results = RightSignature::Helpers::RolesHelper.array_to_xml_hash([
|
35
|
+
{"signer_A" => {:name => "John Bellingham", :email => "j@example.com"}},
|
36
|
+
{"cc_A" => {:name => "Timmy S", :email => "t@example.com"}}
|
37
|
+
])
|
38
|
+
results.size.should == 2
|
39
|
+
results.include?({:role => {:name => "John Bellingham", :email => "j@example.com", "@role_id" => "signer_A"}})
|
40
|
+
results.include?({:role => {:name => "Timmy S", :email => "t@example.com", "@role_id" => "cc_A"}})
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe RightSignature::Helpers::MergeFieldsHelper do
|
46
|
+
describe "array_to_xml_hash" do
|
47
|
+
it "should convert array of {\"Merge field name\" => \"Merge Field Value\"} to array of {:merge_field => {:value => \"Merge Field Value\", \"@merge_field_name\" => \"Merge Field Name\"}} " do
|
48
|
+
results = RightSignature::Helpers::MergeFieldsHelper.array_to_xml_hash([
|
49
|
+
{"City" => "Santa Barbara"},
|
50
|
+
{"Section" => "House"}
|
51
|
+
])
|
52
|
+
results.size.should == 2
|
53
|
+
results.include?({:merge_field => {:value => "Santa Barbara", "@merge_field_name" => "City"}})
|
54
|
+
results.include?({:merge_field => {:value => "House", "@merge_field_name" => "Section"}})
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should convert array of {\"Merge field name\" => \"Merge Field Value\"} to array of {:merge_field => {:value => \"Merge Field Value\", \"@merge_field_id\" => \"Merge Field Name\"}} " do
|
58
|
+
results = RightSignature::Helpers::MergeFieldsHelper.array_to_xml_hash([
|
59
|
+
{"1_abc_defg" => "Santa Barbara"},
|
60
|
+
{"2_345_789" => "House"}
|
61
|
+
], true)
|
62
|
+
results.size.should == 2
|
63
|
+
results.include?({:merge_field => {:value => "Santa Barbara", "@merge_field_id" => "1_abc_defg"}})
|
64
|
+
results.include?({:merge_field => {:value => "House", "@merge_field_id" => "2_345_789"}})
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/spec/template_spec.rb
CHANGED
@@ -80,6 +80,24 @@ describe RightSignature::Template do
|
|
80
80
|
})
|
81
81
|
RightSignature::Template.prefill("MYGUID", "sign me", [{"Employee" => {:name => "John Employee", :email => "john@employee.com"}}])
|
82
82
|
end
|
83
|
+
|
84
|
+
it "should add \"@role_id\"=>'signer_A' key to roles in xml hash" do
|
85
|
+
RightSignature::Connection.should_receive(:post).with('/api/templates.xml', {
|
86
|
+
:template => {
|
87
|
+
:guid => "MYGUID",
|
88
|
+
:action => "prefill",
|
89
|
+
:subject => "sign me",
|
90
|
+
:roles => [
|
91
|
+
{:role => {
|
92
|
+
:name => "John Employee",
|
93
|
+
:email => "john@employee.com",
|
94
|
+
"@role_id" => "signer_A"
|
95
|
+
}}
|
96
|
+
]
|
97
|
+
}
|
98
|
+
})
|
99
|
+
RightSignature::Template.prefill("MYGUID", "sign me", [{"signer_A" => {:name => "John Employee", :email => "john@employee.com"}}])
|
100
|
+
end
|
83
101
|
|
84
102
|
describe "optional options" do
|
85
103
|
it "should add \"@merge_field_name\"=>'Tax_id' key to merge_fields in xml hash" do
|
@@ -96,6 +114,20 @@ describe RightSignature::Template do
|
|
96
114
|
RightSignature::Template.prefill("MYGUID", "sign me", [], {:merge_fields => [{"Tax_id" => "123456"}]})
|
97
115
|
end
|
98
116
|
|
117
|
+
it "should add \"@merge_field_id\"=>'123_abc_78' key to merge_fields in xml hash" do
|
118
|
+
RightSignature::Connection.should_receive(:post).with('/api/templates.xml', {
|
119
|
+
:template => {
|
120
|
+
:guid => "MYGUID",
|
121
|
+
:action => "prefill",
|
122
|
+
:subject => "sign me",
|
123
|
+
:roles => [
|
124
|
+
],
|
125
|
+
:merge_fields => [{:merge_field => {:value => "123456", "@merge_field_id" => "123_abc_78"}}]
|
126
|
+
}
|
127
|
+
})
|
128
|
+
RightSignature::Template.prefill("MYGUID", "sign me", [], {:merge_fields => [{"123_abc_78" => "123456"}], :use_merge_field_ids => true})
|
129
|
+
end
|
130
|
+
|
99
131
|
it "should add \"tag\" key to tags in xml hash" do
|
100
132
|
RightSignature::Connection.should_receive(:post).with('/api/templates.xml', {
|
101
133
|
:template => {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rightsignature
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- spec/connection_spec.rb
|
137
137
|
- spec/document_spec.rb
|
138
138
|
- spec/errors_spec.rb
|
139
|
+
- spec/normalizing_spec.rb
|
139
140
|
- spec/oauth_connnection_spec.rb
|
140
141
|
- spec/spec_helper.rb
|
141
142
|
- spec/template_spec.rb
|