eversign 0.2.1

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 35b1e22aeecfbfeff6c2987ad3429410f4df6637
4
+ data.tar.gz: e2d0636f76b292e859c84cb3d4baf6fc84229dd4
5
+ SHA512:
6
+ metadata.gz: cf29236266e2f5a2fb67199db7d1e5574c1673252cef65c36ea3e359d17e25e786e5d8b10130a295d77428afab78a4a0b189694fd36b072d9925ab986f4af04f
7
+ data.tar.gz: fcc97c08aec1fd59459fb82775c433aa245e5b5a708a1d6883b70de130eccb2b80fa9272b9506ee34c7bca36393fc827e312bb03f70470e832bc790745a76374
@@ -0,0 +1,25 @@
1
+ require 'eversign/version'
2
+ require 'configurations'
3
+ require 'addressable/uri'
4
+ require 'eversign/client'
5
+ require 'eversign/models/business'
6
+ require 'eversign/models/file'
7
+ require 'eversign/models/field'
8
+ require 'eversign/models/signer'
9
+ require 'eversign/models/recipient'
10
+ require 'eversign/models/document'
11
+ require 'eversign/models/template'
12
+ require 'eversign/models/error'
13
+ require 'eversign/models/exception'
14
+ require 'eversign/mappings/business'
15
+ require 'eversign/mappings/file'
16
+ require 'eversign/mappings/document'
17
+ require 'eversign/mappings/exception'
18
+
19
+ module Eversign
20
+ include Configurations
21
+ configurable String, :access_key
22
+ configurable Integer, :business_id
23
+ configurable String, :oauth_base
24
+ configurable String, :api_base
25
+ end
@@ -0,0 +1,207 @@
1
+ require 'addressable/template'
2
+ require 'faraday'
3
+ require 'json'
4
+ require 'logger'
5
+
6
+ module Eversign
7
+
8
+ class FileNotFoundException < Exception
9
+ end
10
+
11
+ class Client
12
+ attr_accessor :access_key, :base_uri, :business_id, :token
13
+
14
+ def initialize()
15
+ self.base_uri = (Eversign.configuration && Eversign.configuration.api_base) ? Eversign.configuration.api_base : 'https://api.eversign.com'
16
+ access_key = Eversign.configuration.access_key
17
+ if access_key.start_with?('Bearer ')
18
+ self.set_oauth_access_token(access_key)
19
+ else
20
+ self.access_key = access_key
21
+ end
22
+ self.business_id = Eversign.configuration.business_id
23
+ end
24
+
25
+ def set_oauth_access_token(oauthtoken)
26
+ if oauthtoken.startswith('Bearer ')
27
+ self.token = oauthtoken
28
+ else
29
+ self.token = 'Bearer ' + oauthtoken
30
+ end
31
+ self.get_businesses()
32
+ end
33
+
34
+ def generate_oauth_authorization_url(options)
35
+ check_arguments(['client_id', 'state'], options)
36
+ template = Addressable::Template.new(Eversign.configuration.oauth_base + '/authorize{?clinet_id,state}')
37
+ return template.partial_expand(clinet_id: options['client_id'], state: options['state']).pattern
38
+ end
39
+
40
+ def request_oauth_token(options)
41
+ check_arguments(['client_id', 'client_secret', 'code', 'state'], options)
42
+
43
+ req = execute_request(:post, '/token', options)
44
+ if req.status == 200
45
+ response_obj = JSON.parse(req.body)
46
+
47
+ if response_obj.key?('success')
48
+ raise response_obj['message']
49
+ else
50
+ return response_obj['access_token']
51
+ end
52
+ end
53
+ raise 'no success'
54
+ end
55
+
56
+ def get_buisnesses
57
+ response = execute_request(:get, "/api/business?access_key=#{access_key}")
58
+ extract_response(response.body, Eversign::Mappings::Business)
59
+ end
60
+
61
+ def get_all_documents
62
+ get_documents('all')
63
+ end
64
+
65
+ def get_completed_documents
66
+ get_documents('completed')
67
+ end
68
+
69
+ def get_draft_documents
70
+ get_documents('draft')
71
+ end
72
+
73
+ def get_cancelled_documents
74
+ get_documents('cancelled')
75
+ end
76
+
77
+ def get_action_required_documents
78
+ get_documents('my_action_required')
79
+ end
80
+
81
+ def get_waiting_for_others_documents
82
+ get_documents('waiting_for_others')
83
+ end
84
+
85
+ def get_templates
86
+ get_documents('templates')
87
+ end
88
+
89
+ def get_archived_templates
90
+ get_documents('templates_archived')
91
+ end
92
+
93
+ def get_draft_templates
94
+ get_documents('template_draft')
95
+ end
96
+
97
+ def get_document(document_hash)
98
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
99
+ response = execute_request(:get, path)
100
+ extract_response(response.body, Eversign::Mappings::Document)
101
+ end
102
+
103
+ def create_document(document)
104
+ if document.files
105
+ for file in document.files
106
+ if file.file_url
107
+ file_response = self.upload_file(file.file_url)
108
+ file.file_url = nil
109
+ file.file_id = file_response.file_id
110
+ end
111
+ end
112
+ end
113
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}"
114
+ data = Eversign::Mappings::Document.representation_for(document)
115
+ response = execute_request(:post, path, data)
116
+ extract_response(response.body, Eversign::Mappings::Document)
117
+ end
118
+
119
+ def create_document_from_template(template)
120
+ create_document(template)
121
+ end
122
+
123
+ def delete_document(document_hash)
124
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
125
+ delete(path, document_hash)
126
+ end
127
+
128
+ def cancel_document(document_hash)
129
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}&cancel=1"
130
+ delete(path, document_hash)
131
+ end
132
+
133
+ def download_raw_document_to_path(document_hash, path)
134
+ sub_uri = "/api/download_raw_document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}"
135
+ download(sub_uri, path)
136
+ end
137
+
138
+ def download_final_document_to_path(document_hash, path, audit_trail=1)
139
+ sub_uri = "/api/download_raw_document?access_key=#{access_key}&business_id=#{business_id}&document_hash=#{document_hash}&audit_trail=#{audit_trail}"
140
+ download(sub_uri, path)
141
+ end
142
+
143
+ def upload_file(file_path)
144
+ payload = { upload: Faraday::UploadIO.new(file_path, 'text/plain') }
145
+ path = "/api/file?access_key=#{access_key}&business_id=#{business_id}"
146
+ response = execute_request(:post, path, payload, true)
147
+ extract_response(response.body, Eversign::Mappings::File)
148
+ end
149
+
150
+ def send_reminder_for_document(document_hash, signer_id)
151
+ path = "/api/send_reminder?access_key=#{access_key}&business_id=#{business_id}"
152
+ response = execute_request(:post, path, {document_hash: document_hash, signer_id: signer_id}.to_json)
153
+ eval(response.body)[:success] ? true : extract_response(response.body)
154
+ end
155
+
156
+ private
157
+ def execute_request(method, path, body=nil, multipart=false)
158
+ @faraday ||= Faraday.new(base_uri) do |conn|
159
+ conn.headers = { }
160
+ conn.headers['User-Agent'] = 'Eversign_Ruby_SDK'
161
+ conn.headers['Authorization'] = token if token
162
+ conn.request :multipart if multipart
163
+ conn.adapter :net_http
164
+ end
165
+
166
+ @faraday.send(method) do |request|
167
+ request.url path
168
+ request.body = body if body
169
+ end
170
+ end
171
+
172
+ def check_arguments(arguments=[], options={})
173
+ arguments.each do |argument|
174
+ raise ('Please specify ' + argument) unless options.has_key?(argument.to_sym)
175
+ end
176
+ end
177
+
178
+ def delete(path, document_hash)
179
+ response = execute_request(:delete, path)
180
+ eval(response.body)[:success] ? true : extract_response(response.body)
181
+ end
182
+
183
+ def download(sub_uri, path)
184
+ response = execute_request(:get, sub_uri)
185
+ File.open(path, 'wb') { |fp| fp.write(response.body) }
186
+ end
187
+
188
+ def get_documents(doc_type)
189
+ path = "/api/document?access_key=#{access_key}&business_id=#{business_id}&type=#{doc_type}"
190
+ response = execute_request(:get, path)
191
+ extract_response(response.body, Eversign::Mappings::Document)
192
+ end
193
+
194
+ def extract_response(body, mapping=nil)
195
+ data = JSON.parse(body)
196
+ if data.kind_of?(Array)
197
+ mapping.extract_collection(body, nil)
198
+ else
199
+ if data.key?('success')
200
+ Eversign::Mappings::Exception.extract_single(body, nil)
201
+ else
202
+ mapping.extract_single(body, nil)
203
+ end
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,16 @@
1
+ require 'kartograph'
2
+ require_relative '../models/business'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class Business
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::Business
11
+
12
+ property :business_id, :business_status, :business_identifier, :business_name, :creation_time_stamp, :is_primary
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,105 @@
1
+ require 'kartograph'
2
+ require_relative '../models/document'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class File
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::File
11
+
12
+ property :name, :file_id, :file_url, :file_base64
13
+ end
14
+ end
15
+
16
+ class Signer
17
+ include Kartograph::DSL
18
+
19
+ kartograph do
20
+ mapping Eversign::Models::Signer
21
+
22
+ property :id, :name, :email, :order, :pin, :message, :deliver_email, :role
23
+ end
24
+ end
25
+
26
+ class Field
27
+ include Kartograph::DSL
28
+
29
+ kartograph do
30
+ mapping Eversign::Models::Field
31
+
32
+ property :name, :type, :x, :y, :width, :height, :page, :signer, :identifier, :required, :readonly, :merge, :type,
33
+ :validation_type, :text_style, :text_font, :text_size, :text_color, :value, :options, :group
34
+
35
+ end
36
+ end
37
+
38
+ class Recipient
39
+ include Kartograph::DSL
40
+
41
+ kartograph do
42
+ mapping Eversign::Models::Recipient
43
+
44
+ property :name, :email, :role
45
+ end
46
+ end
47
+
48
+ class Document
49
+ include Kartograph::DSL
50
+
51
+ kartograph do
52
+ mapping Eversign::Models::Document
53
+
54
+ property :document_hash, :template_id, :sandbox, :is_draft, :title, :message, :use_signer_order, :reminders, :require_all_signers,
55
+ :redirect, :redirect_decline, :client, :expires, :embedded_signing_enabled, :requester_email, :is_template,
56
+ :is_completed, :is_archived, :is_deleted, :is_trashed, :is_cancelled, :embedded, :in_person, :permission
57
+ property :files, plural: true, include: File
58
+ property :signers, plural: true, include: Signer
59
+ property :recipients, plural: true, include: Recipient
60
+ end
61
+
62
+ def self.extract_collection(content, scope)
63
+ data = JSON.parse(content)
64
+ result = []
65
+ data.each do |item|
66
+ result << extract_single(item.to_json, nil)
67
+ end
68
+ result
69
+ end
70
+
71
+ def self.extract_single(content, scope)
72
+ obj = super(content, scope)
73
+ data = JSON.parse(content)
74
+ if data['fields']
75
+ data['fields'].each do |field_list|
76
+ field_data = []
77
+ field_list.each do |field|
78
+ extracted_field = Field.extract_single(field.to_json, nil)
79
+ field_data << extracted_field if extracted_field
80
+ end
81
+ obj.add_field_list(field_data)
82
+ end
83
+ end
84
+ obj
85
+ end
86
+
87
+ def self.representation_for(document)
88
+ data = super(nil, document)
89
+ list = []
90
+ if document.fields
91
+ document.fields.each do |field_list|
92
+ field_data = []
93
+ field_list.each do |field|
94
+ field_data << JSON.parse(Field.representation_for(nil, field))
95
+ end
96
+ list << field_data
97
+ end
98
+ end
99
+ data = JSON.parse(data)
100
+ data['fields'] = list
101
+ JSON.dump(data)
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,27 @@
1
+ require 'kartograph'
2
+ #require_relative '../models/document'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class Error
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::Error
11
+
12
+ property :code, :type, :info
13
+ end
14
+ end
15
+
16
+ class Exception
17
+ include Kartograph::DSL
18
+
19
+ kartograph do
20
+ mapping Eversign::Models::Exception
21
+
22
+ property :success
23
+ property :error, include: Error
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ require 'kartograph'
2
+ require_relative '../models/file'
3
+
4
+ module Eversign
5
+ module Mappings
6
+ class File
7
+ include Kartograph::DSL
8
+
9
+ kartograph do
10
+ mapping Eversign::Models::File
11
+
12
+ property :name, :file_id, :file_url, :file_base64, :pages, :total_pages
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Business
4
+ attr_accessor :business_id, :business_status, :business_identifier, :business_name, :creation_time_stamp, :is_primary
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ module Eversign
2
+ module Models
3
+ class Document
4
+ attr_accessor :document_hash, :template_id, :sandbox, :is_draft, :title, :message, :use_signer_order, :reminders, :require_all_signers,
5
+ :redirect, :redirect_decline, :client, :expires, :embedded_signing_enabled, :requester_email, :is_template,
6
+ :is_completed, :is_archived, :is_deleted, :is_trashed, :is_cancelled, :embedded, :in_person, :permission,
7
+ :files, :signers, :recipients, :meta, :fields
8
+
9
+ def add_file(file)
10
+ self.files ||= []
11
+ self.files << file
12
+ end
13
+
14
+ def add_field(field)
15
+ add_field_list([field])
16
+ end
17
+
18
+ def add_field_list(feild_list)
19
+ self.fields ||= []
20
+ self.fields << feild_list
21
+ end
22
+
23
+ def add_recipient(recipient)
24
+ self.recipients ||= []
25
+ self.recipients << recipient
26
+ end
27
+
28
+ def add_signer(signer)
29
+ self.signers ||= []
30
+ self.signers << signer
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Error
4
+ attr_accessor :code, :type, :info
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Eversign
2
+ module Models
3
+ class Exception
4
+ attr_accessor :success, :error
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module Eversign
2
+ module Models
3
+ class Field
4
+ attr_accessor :name, :type, :x, :y, :width, :height, :page, :signer, :identifier, :required, :readonly, :merge, :type,
5
+ :validation_type, :text_style, :text_font, :text_size, :text_color, :value, :options, :group
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ require 'active_model'
2
+ module Eversign
3
+ module Models
4
+ class File
5
+ include ActiveModel::Validations
6
+
7
+ attr_accessor :name, :file_id, :file_url, :file_base64, :pages, :total_pages
8
+
9
+ validate :only_one_option
10
+
11
+ def initialize(name=nil)
12
+ self.name = name
13
+ end
14
+
15
+ def only_one_option()
16
+ error = false
17
+ if file_id && !file_id.empty?
18
+ error = file_url || file_base64
19
+ elsif file_url && !file_url.empty?
20
+ error = file_id || file_base64
21
+ elsif file_base64 && !file_base64.empty?
22
+ error = file_id || file_url
23
+ else
24
+ error = true
25
+ end
26
+ errors.add('Please provide only one file option') if error
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,13 @@
1
+ module Eversign
2
+ module Models
3
+ class Recipient
4
+ attr_accessor :name, :email, :role
5
+
6
+ def initialize(name=nil, email=nil, role=nil)
7
+ self.name = name
8
+ self.email = email
9
+ self.role = role
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Eversign
2
+ module Models
3
+ class Signer
4
+ attr_accessor :id, :name, :email, :order, :pin, :message, :deliver_email, :role
5
+
6
+ def initialize(name=nil, email=nil, role=nil)
7
+ self.name = name
8
+ self.email = email
9
+ self.role = role
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ module Eversign
2
+ module Models
3
+ class Template < Document
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module Eversign
2
+ VERSION = '0.2.1'
3
+ end
metadata ADDED
@@ -0,0 +1,186 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eversign
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Sachin Raka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.13'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.13'
41
+ - !ruby/object:Gem::Dependency
42
+ name: addressable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: kartograph
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.2.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.2.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: configurations
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.12'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: Gem for Eversign API SDK.
140
+ email:
141
+ - Sachin.Raka@outlook.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - lib/eversign.rb
147
+ - lib/eversign/client.rb
148
+ - lib/eversign/mappings/business.rb
149
+ - lib/eversign/mappings/document.rb
150
+ - lib/eversign/mappings/exception.rb
151
+ - lib/eversign/mappings/file.rb
152
+ - lib/eversign/models/business.rb
153
+ - lib/eversign/models/document.rb
154
+ - lib/eversign/models/error.rb
155
+ - lib/eversign/models/exception.rb
156
+ - lib/eversign/models/field.rb
157
+ - lib/eversign/models/file.rb
158
+ - lib/eversign/models/recipient.rb
159
+ - lib/eversign/models/signer.rb
160
+ - lib/eversign/models/template.rb
161
+ - lib/eversign/version.rb
162
+ homepage: https://github.com/workatbest/eversign-ruby-sdk
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.5.1
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: Gem for Eversign API Client.
186
+ test_files: []