signatory 0.0.3

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.
@@ -0,0 +1,49 @@
1
+ <page>
2
+ <total-documents><%= options[:total_documents] %></total-documents>
3
+ <current-page>1</current-page>
4
+ <total-pages>1</total-pages>
5
+ <per-page>10</per-page>
6
+ <documents>
7
+ <% options[:total_documents].times do |i| %>
8
+ <% document = options[:documents][i] %>
9
+ <document>
10
+ <completed-at nil="true"></completed-at>
11
+ <thumbnail-url>http://thumbnailurl.png</thumbnail-url>
12
+ <message>Please sign this document.</message>
13
+ <state>pending</state>
14
+ <pdf-url>http://pdfurl.pdf</pdf-url>
15
+ <deleted-at nil="true"></deleted-at>
16
+ <created-at>2009-11-04T10:15:14-08:00</created-at>
17
+ <is-public>false</is-public>
18
+ <signed-pdf-url>http://signedpdfurl.pdf</signed-pdf-url>
19
+ <original-filename>Application.pdf</original-filename>
20
+ <size>47351</size>
21
+ <recipients>
22
+ <recipient>
23
+ <state>pending</state>
24
+ <must-sign>true</must-sign>
25
+ <document-role-id>signer_A</document-role-id>
26
+ <is-sender>true</is-sender>
27
+ <email>support@rightsignature.com</email>
28
+ <name>John Bellingham</name>
29
+ </recipient>
30
+ <recipient>
31
+ <state>signed</state>
32
+ <must-sign>true</must-sign>
33
+ <document-role-id>signer_B</document-role-id>
34
+ <is-sender>false</is-sender>
35
+ <email>maria@rightsignature.com</email>
36
+ <name>Maria Montes</name>
37
+ </recipient>
38
+ </recipients>
39
+ <subject><%= document.nil? ? "Employment Application" : document[:subject] %></subject>
40
+ <guid><%= document.nil? ? 'ABCXYZ' : document[:guid] %></guid>
41
+ <callback-location>http://callbacklocation.com/gateway</callback-location>
42
+ <processing-state>done-processing</processing-state>
43
+ <original-url>http://pdfurl.pdf</original-url>
44
+ <content-type>pdf</content-type>
45
+ <expires-on>2009-12-04T16:00:00-08:00</expires-on>
46
+ </document>
47
+ <% end %>
48
+ </documents>
49
+ </page>
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <thumbnail-url>https://thumbnail.png</thumbnail-url>
3
+ <merge-fields>
4
+ <merge-field>
5
+ <page>1</page>
6
+ <name>Employee Name</name>
7
+ <id><%= options[:guid] || "a_951_5c0634d166d44916b9e0b3" %></id>
8
+ </merge-field>
9
+ </merge-fields>
10
+ <message>Please sign this document.</message>
11
+ <created-at>2009-10-28T19:03:26-07:00</created-at>
12
+ <roles>
13
+ <role>
14
+ <must-sign>false</must-sign>
15
+ <document-role-id>cc_A</document-role-id>
16
+ <role>Document Sender</role>
17
+ <is-sender>true</is-sender>
18
+ </role>
19
+ <role>
20
+ <must-sign>true</must-sign>
21
+ <document-role-id>cc_B</document-role-id>
22
+ <role>Employer</role>
23
+ <is-sender>false</is-sender>
24
+ </role>
25
+ </roles>
26
+ <size>3524</size>
27
+ <subject><%= options[:subject] || "Employment Application Template" %></subject>
28
+ <guid><%= options[:guid] || "a_951_5c0634d166d44916b9e0b3" %></guid>
29
+ <processing-state>done-processing</processing-state>
30
+ <content-type>pdf</content-type>
31
+ <filename>Application.pdf</filename>
32
+ </template>
@@ -0,0 +1,28 @@
1
+ <template>
2
+ <type>DocumentPackage</type>
3
+ <merge-fields>
4
+ <merge-field>
5
+ <page>1</page>
6
+ <name>Company Name</name>
7
+ <id>a_953_8fadb0169d1849b58d1fdd09688e73_5359</id>
8
+ </merge-field>
9
+ </merge-fields>
10
+ <page-breakdown>
11
+ <page>
12
+ <original-template-filename>Application.pdf</original-template-filename>
13
+ <page-number>2</page-number>
14
+ <original-template-guid>a_311_yDhSZmJDtNExtgJNuSPQFadPoZjfeF</original-template-guid>
15
+ </page>
16
+ </page-breakdown>
17
+ <created-at>2009-11-04T19:49:39-08:00</created-at>
18
+ <roles>
19
+ <role>
20
+ <must-sign>false</must-sign>
21
+ <document-role-id>cc_A</document-role-id>
22
+ <role>Employer</role>
23
+ <is-sender>true</is-sender>
24
+ </role>
25
+ </roles>
26
+ <redirect-token>b14235360ad946daa765c95c67f248a2-2-8fadb0169d1849b58dcb1fdd09688e73</redirect-token>
27
+ <guid><%= options[:guid] %></guid>
28
+ </template>
@@ -0,0 +1,4 @@
1
+ <document>
2
+ <status>sent</status>
3
+ <guid><%= options[:guid] %></guid>
4
+ </document>
@@ -0,0 +1,13 @@
1
+ <templates>
2
+ <% options[:templates].each do |template| %>
3
+ <template>
4
+ <thumbnail-url>https://thumbnail.png</thumbnail-url>
5
+ <message>Please sign this document.</message>
6
+ <created-at>2009-11-04T14:01:30-08:00</created-at>
7
+ <subject><%= template[:subject] || "Employment Application Template" %></subject>
8
+ <guid><%= template[:guid] || "a_951_5c0634d166d44916b9e0b3" %></guid>
9
+ <processing-state>done-processing</processing-state>
10
+ <filename>application.pdf</filename>
11
+ </template>
12
+ <% end %>
13
+ </templates>
@@ -0,0 +1,81 @@
1
+ require 'erb'
2
+
3
+ module RightSignatureStub
4
+ def stub_documents(options={})
5
+ options = {
6
+ :total_documents => 2,
7
+ :documents => []
8
+ }.merge(options)
9
+
10
+ stub_request(:get, 'https://rightsignature.com/api/documents.xml').to_return(
11
+ :body => ERB.new(fixture('documents.xml.erb')).result(binding)
12
+ )
13
+ end
14
+
15
+ def stub_document(id, options={})
16
+ options = {
17
+ :guid => id
18
+ }.merge(options)
19
+
20
+ stub_request(:get, "https://rightsignature.com/api/documents/#{id}.xml").to_return(
21
+ :body => ERB.new(fixture('document.xml.erb')).result(binding)
22
+ )
23
+ end
24
+
25
+ def stub_templates(templates=[])
26
+ options = {
27
+ :templates => templates
28
+ }
29
+
30
+ stub_request(:get, "https://rightsignature.com/api/templates.xml").to_return(
31
+ :body => ERB.new(fixture('templates.xml.erb')).result(binding)
32
+ )
33
+ end
34
+
35
+ def stub_template(id, options={})
36
+ options = {
37
+ :guid => id
38
+ }.merge(options)
39
+
40
+ stub_request(:get, "https://rightsignature.com/api/templates/#{id}.xml").to_return(
41
+ :body => ERB.new(fixture('template.xml.erb')).result(binding)
42
+ )
43
+ end
44
+
45
+ def stub_template_send(id, doc_id, options = {})
46
+ options = {
47
+ :guid => doc_id
48
+ }.merge(options)
49
+
50
+ stub_request(:post, "https://rightsignature.com/api/templates.xml").with do |req|
51
+ sent = Hash.from_xml(req.body)['template']
52
+
53
+ sent['guid'] == id &&
54
+ sent['action'] == 'send' &&
55
+ options[:roles].all? { |role|
56
+ sent['roles']['role'].map{|r|
57
+ "#{r['name']}:#{r['email']}"
58
+ }.include?("#{role.name}:#{role.email}")
59
+ } &&
60
+ options[:merge_fields].all? {|field|
61
+ [sent['merge_fields']['merge_field']].flatten.map{|mf|
62
+ mf['value']
63
+ }.include?(field.value)
64
+ }
65
+ end.to_return(:body => ERB.new(fixture('template_sent.xml.erb')).result(binding))
66
+ end
67
+
68
+ def stub_prepackage(tid, id, options = {})
69
+ options = {
70
+ :guid => id
71
+ }.merge(options)
72
+
73
+ stub_request(:post, "https://rightsignature.com/api/templates/#{tid}/prepackage.xml").to_return(
74
+ :body => ERB.new(fixture('template_prepackage.xml.erb')).result(binding)
75
+ )
76
+ end
77
+
78
+ def fixture(name)
79
+ File.read(File.join(File.dirname(__FILE__), '..', 'fixtures', name))
80
+ end
81
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Signatory::MergeField do
4
+ describe ".to_xml" do
5
+ it "converts name specified merge field to xml" do
6
+ mf = Signatory::MergeField.new(:name=>"Company Name", :value=>"Double Rainbow, Inc.")
7
+ xml = mf.to_xml
8
+
9
+ xml.should =~ /<merge_field merge_field_name="Company Name">/
10
+ hash = Hash.from_xml(xml)
11
+ hash['merge_field']['value'].should == "Double Rainbow, Inc."
12
+ hash['merge_field']['locked'].should == "true"
13
+ end
14
+
15
+ it "converts id specified merge field to xml" do
16
+ mf = Signatory::MergeField.new(:id=>"a_233_f309f82jklnm_232", :value=>"Double Rainbow, Inc.")
17
+ xml = mf.to_xml
18
+
19
+ xml.should =~ /<merge_field merge_field_id="a_233_f309f82jklnm_232">/
20
+ hash = Hash.from_xml(xml)
21
+ hash['merge_field']['value'].should == "Double Rainbow, Inc."
22
+ hash['merge_field']['locked'].should == "true"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,47 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Signatory::Recipient do
4
+ before(:each) do
5
+ @document = Signatory::Document.new(:guid => 'XXXXX')
6
+ @recipient = Signatory::Recipient.new(
7
+ :name => "Bartholomew Davis McDugalheimer",
8
+ :is_sender => "false",
9
+ :must_sign => "true",
10
+ :role_id => "signer_A",
11
+ :state => "pending",
12
+ :email => "noemail@rightsignature.com"
13
+ )
14
+ @recipient.document = @document
15
+ stub_request(:get, "https://rightsignature.com/api/documents/XXXXX/signer_links.xml?redirect_location=http%3A%2F%2Fexample.com").
16
+ to_return(:body => "
17
+ <document>
18
+ <signer_links>
19
+ <signer_link>
20
+ <role>signer_A</role>
21
+ <signer_token>YYYY</signer_token>
22
+ </signer_link>
23
+ </signer_links>
24
+ </document>
25
+ ")
26
+ end
27
+
28
+ describe ".embed_url" do
29
+ it "generates the right url" do
30
+ @recipient.embed_url('http://example.com').should == "https://rightsignature.com/signatures/embedded?rt=YYYY"
31
+ end
32
+
33
+ it "generates the right url with dimensions" do
34
+ @recipient.embed_url('http://example.com', :height => 500, :width => 600).should == "https://rightsignature.com/signatures/embedded?height=500&rt=YYYY&width=600"
35
+ end
36
+ end
37
+
38
+ describe ".embed_code" do
39
+ it "generates the right iframe code" do
40
+ @recipient.embed_code('http://example.com').should == '<iframe src ="https://rightsignature.com/signatures/embedded?rt=YYYY" frameborder="0" scrolling="no"><p>Your browser does not support iframes.</p></iframe>'
41
+ end
42
+
43
+ it "generates the right iframe code with dimensions" do
44
+ @recipient.embed_code('http://example.com', :height => 500, :width => 600).should == '<iframe src ="https://rightsignature.com/signatures/embedded?height=500&rt=YYYY&width=600" frameborder="0" scrolling="no" width="600px" height="500px"><p>Your browser does not support iframes.</p></iframe>'
45
+ end
46
+ end
47
+ end
data/spec/role_spec.rb ADDED
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Signatory::Role do
4
+ describe ".to_xml" do
5
+ it "converts name specified roles to xml" do
6
+ role = Signatory::Role.new(:name=>"RyGar", :role_name=>"Issuer", :email=>"noemail@rightsignature.com")
7
+ xml = role.to_xml
8
+
9
+ xml.should =~ /<role role_name="Issuer">/
10
+ hash = Hash.from_xml(xml)
11
+ hash['role']['name'].should == "RyGar"
12
+ hash['role']['email'].should == "noemail@rightsignature.com"
13
+ end
14
+
15
+ it "converts id specified roles to xml" do
16
+ role = Signatory::Role.new(:name=>"RyGar", :role_id=>"signer_A", :email=>"noemail@rightsignature.com")
17
+ xml = role.to_xml
18
+
19
+ xml.should =~ /<role role_id="signer_A">/
20
+ hash = Hash.from_xml(xml)
21
+ hash['role']['name'].should == "RyGar"
22
+ hash['role']['email'].should == "noemail@rightsignature.com"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe Signatory do
4
+ describe ".credentials" do
5
+ it "takes a Signatory::Credentials" do
6
+ cred = Signatory::Credentials.new('XXX', 'YYY', 'AAA', 'BBB')
7
+ Signatory.credentials = cred
8
+ Signatory.credentials.key.should == 'XXX'
9
+ Signatory.credentials.secret.should == 'YYY'
10
+ end
11
+
12
+ it "takes a read-able object" do
13
+ file = StringIO.new("---\nkey: thekey\nsecret: thesecret\naccess_token: accesstoken\naccess_secret: accesssecret")
14
+ Signatory.credentials = file
15
+ Signatory.credentials.key.should == 'thekey'
16
+ Signatory.credentials.secret.should == 'thesecret'
17
+ end
18
+
19
+ it "takes a hash" do
20
+ Signatory.credentials = {:key => 'key1', :secret => 'secret1', :access_token => 'accesstoken', :access_secret => 'accesssecret'}
21
+ Signatory.credentials.key.should == 'key1'
22
+ Signatory.credentials.secret.should == 'secret1'
23
+ end
24
+ end
25
+
26
+ it "uses oauth" do
27
+ token = Signatory.credentials.token
28
+ token.should_receive(:get).with('/api/documents/123.xml', {"Accept"=>"application/xml"}).and_return(mock('result', :code => 200, :body => '<document><name>Test</name></document>'))
29
+
30
+ Signatory::Document.find('123')
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'stringio'
3
+ require 'rspec'
4
+ begin
5
+ require 'webmock/rspec'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'webmock/rspec'
9
+ end
10
+
11
+ Dir[File.join(File.dirname(__FILE__), 'helpers', '*.rb')].each do |f|
12
+ require f
13
+ end
14
+
15
+ require File.dirname(__FILE__) + '/../lib/signatory'
16
+
17
+ Rspec.configure do |c|
18
+ c.mock_with :rspec
19
+ c.include WebMock
20
+ c.include RightSignatureStub
21
+
22
+ c.before(:each) do
23
+ Signatory.credentials = {:key => 'key1', :secret => 'secret1', :access_token => 'accesstoken', :access_secret => 'accesssecret'}
24
+ end
25
+ end
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe Signatory::Template do
4
+ describe ".all" do
5
+ it "returns a list of templates" do
6
+ stub_templates([{:subject => "Template Subject"}, {:subject => "Template Subject 2"}])
7
+ templates = Signatory::Template.all
8
+ templates.count.should == 2
9
+ templates.each do |temp|
10
+ temp.should be_a(Signatory::Template)
11
+ end
12
+ subjects = templates.map{|t| t.subject}
13
+ subjects.should include("Template Subject")
14
+ subjects.should include("Template Subject 2")
15
+ end
16
+ end
17
+
18
+ describe ".find by id" do
19
+ it "returns the template with the specified id" do
20
+ stub_template('xxxyyy', :subject => 'Blah blah')
21
+ temp = Signatory::Template.find('xxxyyy')
22
+ temp.subject.should == 'Blah blah'
23
+ end
24
+ end
25
+
26
+ describe ".prepackage" do
27
+ it "should have roles and merge fields" do
28
+ temp = Signatory::Template.new(:guid => 'xxxyyy', :subject => 'Blah blah')
29
+ stub_prepackage('xxxyyy', 'yyyxxx')
30
+ packaged_temp = temp.prepackage
31
+
32
+ packaged_temp.roles.map(&:role).should include('Employer')
33
+ packaged_temp.merge_fields.map(&:name).should include('Company Name')
34
+ packaged_temp.id.should == 'yyyxxx'
35
+ end
36
+ end
37
+
38
+ describe ".build_document" do
39
+ it "returns a new document" do
40
+ temp = Signatory::Template.new(:guid => 'xxxyyy', :subject => 'Blah blah')
41
+ doc_pkg = Signatory::Template.new(:guid => 'abcabc', :type => 'DocumentPackage')
42
+ doc = Signatory::Document.new
43
+
44
+ roles = [{:name => "Ryan Garver"}, {:name => "Cary Dunn"}]
45
+ merge_fields = {'Company Name' => 'ABC Corp'}
46
+
47
+ temp.should_receive(:prepackage).and_return(doc_pkg)
48
+ doc_pkg.should_receive(:prefill_and_send).with(merge_fields, roles).and_return(doc)
49
+
50
+ result = temp.build_document(merge_fields, roles)
51
+ result.should == doc
52
+ end
53
+ end
54
+
55
+ context "type = DocumentPackage" do
56
+ describe ".signing_parties" do
57
+ it "returns all of the roles that must sign"
58
+ end
59
+
60
+ describe ".sender" do
61
+ it "returns the role who sent the document"
62
+ end
63
+
64
+ describe ".prefill_and_send" do
65
+ it "returns the sent document" do
66
+ doc_pkg = Signatory::Template.new(:guid => 'templid')
67
+ roles = [Signatory::Role.new(:name => "Ryan Garver", :role_name => 'Issuer'), Signatory::Role.new(:name => "Cary Dunn", :role_name => 'Investor')]
68
+ merge_fields = [Signatory::MergeField.new(:name => 'Company Name', :value => 'ABC Corp')]
69
+
70
+ id, subject = rand.to_s, "Subject #{rand}"
71
+ stub_template_send('templid', id, :roles => roles, :merge_fields => merge_fields)
72
+ stub_document(id, :subject => subject)
73
+ doc = doc_pkg.prefill_and_send(merge_fields, roles)
74
+ doc.guid.should == id
75
+ doc.subject.should == subject
76
+ end
77
+ end
78
+ end
79
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: signatory
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Ryan Garver
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-02 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bundler
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
34
+ version: 1.0.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - "="
44
+ - !ruby/object:Gem::Version
45
+ hash: 62196431
46
+ segments:
47
+ - 2
48
+ - 0
49
+ - 0
50
+ - beta
51
+ - 22
52
+ version: 2.0.0.beta.22
53
+ type: :development
54
+ version_requirements: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ prerelease: false
58
+ requirement: &id003 !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - "="
62
+ - !ruby/object:Gem::Version
63
+ hash: 17
64
+ segments:
65
+ - 1
66
+ - 3
67
+ - 5
68
+ version: 1.3.5
69
+ type: :development
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: bundler
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - "="
78
+ - !ruby/object:Gem::Version
79
+ hash: 23
80
+ segments:
81
+ - 1
82
+ - 0
83
+ - 0
84
+ version: 1.0.0
85
+ type: :runtime
86
+ version_requirements: *id004
87
+ - !ruby/object:Gem::Dependency
88
+ name: oauth
89
+ prerelease: false
90
+ requirement: &id005 !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - "="
94
+ - !ruby/object:Gem::Version
95
+ hash: 9
96
+ segments:
97
+ - 0
98
+ - 4
99
+ - 3
100
+ version: 0.4.3
101
+ type: :runtime
102
+ version_requirements: *id005
103
+ - !ruby/object:Gem::Dependency
104
+ name: activeresource
105
+ prerelease: false
106
+ requirement: &id006 !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ hash: 17
112
+ segments:
113
+ - 2
114
+ - 3
115
+ - 9
116
+ version: 2.3.9
117
+ type: :runtime
118
+ version_requirements: *id006
119
+ description: Signatory provides a simple wrapper around the RightSignature API.
120
+ email:
121
+ - ryan@profounder.com
122
+ executables: []
123
+
124
+ extensions: []
125
+
126
+ extra_rdoc_files: []
127
+
128
+ files:
129
+ - .gitignore
130
+ - .rvmrc
131
+ - Gemfile
132
+ - Gemfile.lock
133
+ - History.txt
134
+ - README.rdoc
135
+ - Rakefile
136
+ - lib/signatory.rb
137
+ - lib/signatory/api/base.rb
138
+ - lib/signatory/api/connection.rb
139
+ - lib/signatory/credentials.rb
140
+ - lib/signatory/document.rb
141
+ - lib/signatory/legacy_active_resource_hacks.rb
142
+ - lib/signatory/merge_field.rb
143
+ - lib/signatory/recipient.rb
144
+ - lib/signatory/role.rb
145
+ - lib/signatory/ruby_hacks.rb
146
+ - lib/signatory/template.rb
147
+ - lib/signatory/version.rb
148
+ - signatory.gemspec
149
+ - spec/credentials_spec.rb
150
+ - spec/document_spec.rb
151
+ - spec/fixtures/document.xml.erb
152
+ - spec/fixtures/documents.xml.erb
153
+ - spec/fixtures/template.xml.erb
154
+ - spec/fixtures/template_prepackage.xml.erb
155
+ - spec/fixtures/template_sent.xml.erb
156
+ - spec/fixtures/templates.xml.erb
157
+ - spec/helpers/right_signature_stub.rb
158
+ - spec/merge_field_spec.rb
159
+ - spec/recipient_spec.rb
160
+ - spec/role_spec.rb
161
+ - spec/signatory_spec.rb
162
+ - spec/spec_helper.rb
163
+ - spec/template_spec.rb
164
+ has_rdoc: true
165
+ homepage: http://rubygems.org/gems/signatory
166
+ licenses: []
167
+
168
+ post_install_message:
169
+ rdoc_options: []
170
+
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ hash: 3
179
+ segments:
180
+ - 0
181
+ version: "0"
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ hash: 23
188
+ segments:
189
+ - 1
190
+ - 3
191
+ - 6
192
+ version: 1.3.6
193
+ requirements: []
194
+
195
+ rubyforge_project: signatory
196
+ rubygems_version: 1.3.7
197
+ signing_key:
198
+ specification_version: 3
199
+ summary: API wrapper for RightSignature
200
+ test_files: []
201
+