groupdocs 1.3.0 → 1.4.0
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/.travis.yml +4 -0
- data/CHANGELOG.md +32 -0
- data/examples/api-samples/public/css/style.css +123 -67
- data/examples/api-samples/public/images/help.png +0 -0
- data/examples/api-samples/public/images/info.png +0 -0
- data/examples/api-samples/public/templates/base-simple_source.html +192 -0
- data/examples/api-samples/public/templates/testdocument.html +101 -0
- data/examples/api-samples/public/templates/welcome.htm +137 -0
- data/examples/api-samples/samples/sample18.rb +134 -31
- data/examples/api-samples/views/sample18.haml +127 -9
- data/lib/groupdocs/api/request.rb +1 -1
- data/lib/groupdocs/document.rb +6 -3
- data/lib/groupdocs/signature.rb +6 -0
- data/lib/groupdocs/signature/contact.rb +42 -0
- data/lib/groupdocs/signature/envelope.rb +71 -0
- data/lib/groupdocs/signature/field.rb +21 -2
- data/lib/groupdocs/signature/form.rb +162 -9
- data/lib/groupdocs/signature/role.rb +5 -31
- data/lib/groupdocs/signature/shared/document_methods.rb +2 -1
- data/lib/groupdocs/signature/shared/entity_fields.rb +6 -16
- data/lib/groupdocs/signature/shared/entity_methods.rb +2 -2
- data/lib/groupdocs/signature/shared/field_methods.rb +56 -2
- data/lib/groupdocs/storage.rb +1 -0
- data/lib/groupdocs/storage/provider.rb +32 -0
- data/lib/groupdocs/user.rb +66 -0
- data/lib/groupdocs/version.rb +1 -1
- data/spec/groupdocs/signature/contact_spec.rb +21 -0
- data/spec/groupdocs/signature/envelope_spec.rb +53 -1
- data/spec/groupdocs/signature/field_spec.rb +19 -1
- data/spec/groupdocs/signature/form_spec.rb +47 -11
- data/spec/groupdocs/signature/role_spec.rb +4 -47
- data/spec/groupdocs/signature_spec.rb +4 -0
- data/spec/groupdocs/storage/provider_spec.rb +22 -0
- data/spec/groupdocs/user_spec.rb +54 -0
- data/spec/support/json/user_embed_key.json +39 -0
- data/spec/support/json/user_providers.json +31 -0
- data/spec/support/json/user_roles.json +25 -0
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +14 -26
- data/spec/support/shared_examples/signature/shared/field_methods.rb +58 -34
- metadata +18 -4
@@ -21,7 +21,7 @@ module GroupDocs
|
|
21
21
|
# @example
|
22
22
|
# api = GroupDocs::Api::Request.new do |request|
|
23
23
|
# request[:method] = :POST
|
24
|
-
# request[:path] = "/storage
|
24
|
+
# request[:path] = "/storage/{{client_id}}/info"
|
25
25
|
# end
|
26
26
|
#
|
27
27
|
# @param [Hash] options
|
data/lib/groupdocs/document.rb
CHANGED
@@ -485,13 +485,16 @@ module GroupDocs
|
|
485
485
|
# document = GroupDocs::Storage::Folder.list!.first.to_document
|
486
486
|
# job = document.convert!(:docx)
|
487
487
|
# sleep(5) # wait for server to finish converting
|
488
|
-
# original_document = job.documents
|
488
|
+
# original_document = job.documents![:inputs].first
|
489
489
|
# converted_file = original_file.outputs.first
|
490
490
|
# converted_file.download!(File.dirname(__FILE__))
|
491
491
|
#
|
492
492
|
# @param [Symbol] format
|
493
493
|
# @param [Hash] options
|
494
|
-
# @option options [Boolean] :email_results
|
494
|
+
# @option options [Boolean] :email_results
|
495
|
+
# @option options [String] :new_description
|
496
|
+
# @option options [String] :print_script
|
497
|
+
# @option options [String] :callback
|
495
498
|
# @param [Hash] access Access credentials
|
496
499
|
# @option access [String] :client_id
|
497
500
|
# @option access [String] :private_key
|
@@ -716,7 +719,7 @@ module GroupDocs
|
|
716
719
|
api = Api::Request.new do |request|
|
717
720
|
request[:access] = access
|
718
721
|
request[:method] = :GET
|
719
|
-
request[:path] =
|
722
|
+
request[:path] = '/comparison/{{client_id}}/comparison/changes'
|
720
723
|
end
|
721
724
|
api.add_params(:resultFileId => file.guid)
|
722
725
|
json = api.execute!
|
data/lib/groupdocs/signature.rb
CHANGED
@@ -61,6 +61,10 @@ module GroupDocs
|
|
61
61
|
attr_accessor :signatureImageUrl
|
62
62
|
# @attr [String] initialsImageUrl
|
63
63
|
attr_accessor :initialsImageUrl
|
64
|
+
# @attr [String] signatureData
|
65
|
+
attr_accessor :signatureData
|
66
|
+
# @attr [String] initialsData
|
67
|
+
attr_accessor :initialsData
|
64
68
|
# @attr [String] createdTimeStamp
|
65
69
|
attr_accessor :createdTimeStamp
|
66
70
|
# @attr [String] image_path
|
@@ -78,6 +82,8 @@ module GroupDocs
|
|
78
82
|
alias_accessor :initials_image_file_id, :initialsImageFileId
|
79
83
|
alias_accessor :signature_image_url, :signatureImageUrl
|
80
84
|
alias_accessor :initials_image_url, :initialsImageUrl
|
85
|
+
alias_accessor :signature_data, :signatureData
|
86
|
+
alias_accessor :initials_data, :initialsData
|
81
87
|
alias_accessor :created_time_stamp, :createdTimeStamp
|
82
88
|
|
83
89
|
#
|
@@ -1,6 +1,12 @@
|
|
1
1
|
module GroupDocs
|
2
2
|
class Signature::Contact < Api::Entity
|
3
3
|
|
4
|
+
INTEGRATION_PROVIDERS = {
|
5
|
+
:local => 0,
|
6
|
+
:groupdocs => 1,
|
7
|
+
:google => 2,
|
8
|
+
}
|
9
|
+
|
4
10
|
#
|
5
11
|
# Returns a list of all contacts.
|
6
12
|
#
|
@@ -62,6 +68,42 @@ module GroupDocs
|
|
62
68
|
end.execute!
|
63
69
|
end
|
64
70
|
|
71
|
+
#
|
72
|
+
# Adds contact integration.
|
73
|
+
#
|
74
|
+
# @example Add Google contacts integration
|
75
|
+
# integration = {
|
76
|
+
# provider: :google,
|
77
|
+
# refresh_token: 'token',
|
78
|
+
# access_token: 'token',
|
79
|
+
# access_token_expiration: '2014-12-12'
|
80
|
+
# }
|
81
|
+
#
|
82
|
+
# @param [Hash] integration
|
83
|
+
# @option integration [Symbol] provider One of :local, :groupdocs or :google
|
84
|
+
# @option integration [String] refresh_token
|
85
|
+
# @option integration [String] access_token
|
86
|
+
# @option integration [String] access_token_exipration
|
87
|
+
# @param [Hash] access Access credentials
|
88
|
+
# @option access [String] :client_id
|
89
|
+
# @option access [String] :private_key
|
90
|
+
#
|
91
|
+
def self.add_integration!(integration, access = {})
|
92
|
+
payload = {
|
93
|
+
:provider => INTEGRATION_PROVIDERS[integration[:provider]],
|
94
|
+
:refreshToken => integration[:refresh_token],
|
95
|
+
:accessToken => integration[:access_token],
|
96
|
+
:accessTokenExpiration => integration[:access_token_expiration],
|
97
|
+
}
|
98
|
+
|
99
|
+
Api::Request.new do |request|
|
100
|
+
request[:access] = access
|
101
|
+
request[:method] = :POST
|
102
|
+
request[:path] = '/signature/{{client_id}}/integration'
|
103
|
+
request[:request_body] = payload
|
104
|
+
end.execute!
|
105
|
+
end
|
106
|
+
|
65
107
|
# @attr [String] id
|
66
108
|
attr_accessor :id
|
67
109
|
# @attr [String] firstName
|
@@ -12,6 +12,7 @@ module GroupDocs
|
|
12
12
|
:failed => 4,
|
13
13
|
:completed => 5,
|
14
14
|
:archived => 6,
|
15
|
+
:scheduled => 99,
|
15
16
|
}
|
16
17
|
|
17
18
|
include Signature::DocumentMethods
|
@@ -88,6 +89,8 @@ module GroupDocs
|
|
88
89
|
attr_accessor :statusDateTime
|
89
90
|
# @attr [Integer] envelopeExpireTime
|
90
91
|
attr_accessor :envelopeExpireTime
|
92
|
+
# @attr [Boolean] isDemo
|
93
|
+
attr_accessor :isDemo
|
91
94
|
# @attr [Symbol] status
|
92
95
|
attr_accessor :status
|
93
96
|
|
@@ -95,6 +98,7 @@ module GroupDocs
|
|
95
98
|
alias_accessor :creation_date_time, :creationDateTime
|
96
99
|
alias_accessor :status_date_time, :statusDateTime
|
97
100
|
alias_accessor :envelope_expire_time, :envelopeExpireTime
|
101
|
+
alias_accessor :is_demo, :isDemo
|
98
102
|
|
99
103
|
#
|
100
104
|
# Converts status to human-readable format.
|
@@ -172,6 +176,44 @@ module GroupDocs
|
|
172
176
|
api.execute!
|
173
177
|
end
|
174
178
|
|
179
|
+
#
|
180
|
+
# Delegates recipient to another one.
|
181
|
+
#
|
182
|
+
# @example
|
183
|
+
# envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
|
184
|
+
# old = envelope.recipients!.first
|
185
|
+
# old.first_name = 'Johnny'
|
186
|
+
# new = GroupDocs::Signature::Recipient.new
|
187
|
+
# new.email = 'john@smith.com'
|
188
|
+
# new.first_name = 'John'
|
189
|
+
# new.last_name = 'Smith'
|
190
|
+
# envelope.delegate_recipient! old, new
|
191
|
+
#
|
192
|
+
# @param [GroupDocs::Signature::Recipient] old
|
193
|
+
# @param [GroupDocs::Signature::Recipient] new
|
194
|
+
# @param [Hash] access Access credentials
|
195
|
+
# @option access [String] :client_id
|
196
|
+
# @option access [String] :private_key
|
197
|
+
# @raise [ArgumentError] if old recipient is not GroupDocs::Signature::Recipient
|
198
|
+
# @raise [ArgumentError] if new recipient is not GroupDocs::Signature::Recipient
|
199
|
+
#
|
200
|
+
def delegate_recipient!(old, new, access = {})
|
201
|
+
old.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
|
202
|
+
"Old recipient should be GroupDocs::Signature::Recipient object, received: #{old.inspect}"
|
203
|
+
new.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
|
204
|
+
"New recipient should be GroupDocs::Signature::Recipient object, received: #{new.inspect}"
|
205
|
+
|
206
|
+
api = Api::Request.new do |request|
|
207
|
+
request[:access] = access
|
208
|
+
request[:method] = :POST
|
209
|
+
request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{old.id}/delegate"
|
210
|
+
end
|
211
|
+
api.add_params(:email => new.email,
|
212
|
+
:firstname => new.first_name,
|
213
|
+
:lastname => new.last_name)
|
214
|
+
api.execute!
|
215
|
+
end
|
216
|
+
|
175
217
|
#
|
176
218
|
# Fills field with value.
|
177
219
|
#
|
@@ -312,6 +354,35 @@ module GroupDocs
|
|
312
354
|
filepath
|
313
355
|
end
|
314
356
|
|
357
|
+
#
|
358
|
+
# Downloads signed document to given path.
|
359
|
+
#
|
360
|
+
# @param [GroupDocs::Document] document Signed document
|
361
|
+
# @param [String] path Directory to download file to
|
362
|
+
# @param [Hash] access Access credentials
|
363
|
+
# @option access [String] :client_id
|
364
|
+
# @option access [String] :private_key
|
365
|
+
# @return [String] path to file
|
366
|
+
#
|
367
|
+
def signed_document!(document, path, access = {})
|
368
|
+
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
369
|
+
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
370
|
+
|
371
|
+
response = Api::Request.new do |request|
|
372
|
+
request[:access] = access
|
373
|
+
request[:method] = :DOWNLOAD
|
374
|
+
request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
|
375
|
+
end.execute!
|
376
|
+
|
377
|
+
filepath = "#{path}/#{name}.pdf"
|
378
|
+
|
379
|
+
Object::File.open(filepath, 'wb') do |file|
|
380
|
+
file.write(response)
|
381
|
+
end
|
382
|
+
|
383
|
+
filepath
|
384
|
+
end
|
385
|
+
|
315
386
|
#
|
316
387
|
# Returns a list of audit logs.
|
317
388
|
#
|
@@ -72,7 +72,7 @@ module GroupDocs
|
|
72
72
|
attr_accessor :mandatory
|
73
73
|
# @attr [Symbol] fieldType
|
74
74
|
attr_accessor :fieldType
|
75
|
-
# @attr [
|
75
|
+
# @attr [Array<String>] acceptableValues
|
76
76
|
attr_accessor :acceptableValues
|
77
77
|
# @attr [String] defaultValue
|
78
78
|
attr_accessor :defaultValue
|
@@ -109,7 +109,6 @@ module GroupDocs
|
|
109
109
|
alias_accessor :font_italic, :fontItalic
|
110
110
|
alias_accessor :font_underline, :fontUnderline
|
111
111
|
alias_accessor :is_system, :isSystem
|
112
|
-
alias_accessor :acceptable_values, :acceptableValues
|
113
112
|
alias_accessor :default_value, :defaultValue
|
114
113
|
alias_accessor :text_rows, :textRows
|
115
114
|
alias_accessor :text_columns, :textColumns
|
@@ -165,6 +164,26 @@ module GroupDocs
|
|
165
164
|
end
|
166
165
|
alias_method :type, :field_type
|
167
166
|
|
167
|
+
#
|
168
|
+
# Converts array of acceptable values to machine-readable format.
|
169
|
+
# @param [Array<String>] values
|
170
|
+
#
|
171
|
+
def acceptable_values=(values)
|
172
|
+
if values.is_a?(Array)
|
173
|
+
values = values.join(';')
|
174
|
+
end
|
175
|
+
|
176
|
+
@acceptableValues = values
|
177
|
+
end
|
178
|
+
|
179
|
+
#
|
180
|
+
# Converts acceptable values to human-readable format.
|
181
|
+
# @return [Array<String>]
|
182
|
+
#
|
183
|
+
def acceptable_values
|
184
|
+
@acceptableValues.split(';') if @acceptableValues
|
185
|
+
end
|
186
|
+
|
168
187
|
#
|
169
188
|
# Creates signature field.
|
170
189
|
#
|
@@ -2,8 +2,13 @@ module GroupDocs
|
|
2
2
|
class Signature::Form < Api::Entity
|
3
3
|
|
4
4
|
include Signature::EntityMethods
|
5
|
+
include Signature::DocumentMethods
|
6
|
+
include Signature::FieldMethods
|
5
7
|
extend Signature::ResourceMethods
|
6
8
|
|
9
|
+
# form doesn't have recipients
|
10
|
+
undef_method :assign_field!
|
11
|
+
|
7
12
|
STATUSES = {
|
8
13
|
:draft => -1,
|
9
14
|
:in_progress => 1,
|
@@ -67,6 +72,10 @@ module GroupDocs
|
|
67
72
|
attr_accessor :canParticipantDownloadForm
|
68
73
|
# @attr [Symbol] status
|
69
74
|
attr_accessor :status
|
75
|
+
# @attr [String] watermarkText
|
76
|
+
attr_accessor :watermarkText
|
77
|
+
# @attr [String] watermarkImage
|
78
|
+
attr_accessor :watermarkImage
|
70
79
|
|
71
80
|
# Human-readable accessors
|
72
81
|
alias_accessor :owner_guid, :ownerGuid
|
@@ -76,8 +85,9 @@ module GroupDocs
|
|
76
85
|
alias_accessor :documents_count, :documentsCount
|
77
86
|
alias_accessor :documents_pages, :documentsPages
|
78
87
|
alias_accessor :participants_count, :participantsCount
|
79
|
-
alias_accessor :fields_in_final_file_name, :fieldsInFinalFileName
|
80
88
|
alias_accessor :can_participant_download_form, :canParticipantDownloadForm
|
89
|
+
alias_accessor :watermark_text, :watermarkText
|
90
|
+
alias_accessor :watermark_image, :watermarkImage
|
81
91
|
|
82
92
|
#
|
83
93
|
# Converts status to human-readable format.
|
@@ -87,28 +97,46 @@ module GroupDocs
|
|
87
97
|
STATUSES.invert[@status]
|
88
98
|
end
|
89
99
|
|
100
|
+
#
|
101
|
+
# Converts array of field names to machine-readable format.
|
102
|
+
# @param [Array<String>] fields
|
103
|
+
#
|
104
|
+
def fields_in_final_file_name=(fields)
|
105
|
+
if fields.is_a?(Array)
|
106
|
+
fields = fields.join(',')
|
107
|
+
end
|
108
|
+
|
109
|
+
@fieldsInFinalFileName = fields
|
110
|
+
end
|
111
|
+
|
112
|
+
#
|
113
|
+
# Converts field names to human-readable format.
|
114
|
+
# @return [Array<String>]
|
115
|
+
#
|
116
|
+
def fields_in_final_file_name
|
117
|
+
@fieldsInFinalFileName.split(',') if @fieldsInFinalFileName
|
118
|
+
end
|
119
|
+
|
90
120
|
#
|
91
121
|
# Creates form.
|
92
122
|
#
|
93
123
|
# @example
|
94
|
-
# template = GroupDocs::Singature::Template!.get!('09662aab7187f31444476288ebaf7da4')
|
95
124
|
# form = GroupDocs::Signature::Form.new
|
96
125
|
# form.name = "Form"
|
97
126
|
# form.create! template
|
98
127
|
#
|
99
|
-
# @param [GroupDocs::Signature::Template] template
|
100
128
|
# @param [Hash] options Hash of options
|
101
|
-
# @option options [
|
129
|
+
# @option options [String] :template_id Template GUID to create form from
|
130
|
+
# @option options [Integer] :assembly_id Questionnaire identifier to create form from
|
102
131
|
# @param [Hash] access Access credentials
|
103
132
|
# @option access [String] :client_id
|
104
133
|
# @option access [String] :private_key
|
105
134
|
# @raise [ArgumentError] if template is not GroupDocs::Signature::Template
|
106
135
|
#
|
107
|
-
def create!(
|
108
|
-
|
109
|
-
"Template should be GroupDocs::Signature::Template object, received: #{template.inspect}"
|
110
|
-
|
136
|
+
def create!(options = {}, access = {})
|
137
|
+
template_id = options.delete(:template_id)
|
111
138
|
assembly_id = options.delete(:assembly_id)
|
139
|
+
options[:templateId] = template_id if template_id
|
112
140
|
options[:assemblyId] = assembly_id if assembly_id
|
113
141
|
|
114
142
|
api = Api::Request.new do |request|
|
@@ -117,7 +145,7 @@ module GroupDocs
|
|
117
145
|
request[:path] = '/signature/{{client_id}}/form'
|
118
146
|
request[:request_body] = to_hash
|
119
147
|
end
|
120
|
-
api.add_params(options.merge(:name => name
|
148
|
+
api.add_params(options.merge(:name => name))
|
121
149
|
json = api.execute!
|
122
150
|
|
123
151
|
self.id = json[:form][:id]
|
@@ -189,5 +217,130 @@ module GroupDocs
|
|
189
217
|
end.execute!
|
190
218
|
end
|
191
219
|
|
220
|
+
#
|
221
|
+
# Returns an array of fields for document per participant.
|
222
|
+
#
|
223
|
+
# @param [GroupDocs::Document] document
|
224
|
+
# @param [Hash] access Access credentials
|
225
|
+
# @option access [String] :client_id
|
226
|
+
# @option access [String] :private_key
|
227
|
+
# @raise [ArgumentError] if document is not GroupDocs::Document
|
228
|
+
#
|
229
|
+
def fields!(document, access = {})
|
230
|
+
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
231
|
+
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
232
|
+
|
233
|
+
json = Api::Request.new do |request|
|
234
|
+
request[:access] = access
|
235
|
+
request[:method] = :GET
|
236
|
+
request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields"
|
237
|
+
end.execute!
|
238
|
+
|
239
|
+
json[:fields].map do |field|
|
240
|
+
Signature::Field.new(field)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
#
|
245
|
+
# Adds field for document.
|
246
|
+
#
|
247
|
+
# @example
|
248
|
+
# form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
|
249
|
+
# field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
250
|
+
# field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
|
251
|
+
# document = form.documents!.first
|
252
|
+
# form.add_field! field, document
|
253
|
+
#
|
254
|
+
# @param [GroupDocs::Signature::Field] field
|
255
|
+
# @param [GroupDocs::Document] document
|
256
|
+
# @param [Hash] options
|
257
|
+
# @option options [Boolean] :force_new_field Set to true to force new field create
|
258
|
+
# @param [Hash] access Access credentials
|
259
|
+
# @option access [String] :client_id
|
260
|
+
# @option access [String] :private_key
|
261
|
+
# @raise [ArgumentError] if field is not GroupDocs::Signature::Field
|
262
|
+
# @raise [ArgumentError] if document is not GroupDocs::Document
|
263
|
+
# @raise [ArgumentError] if field does not specify location
|
264
|
+
#
|
265
|
+
def add_field!(field, document, opts = {}, access = {})
|
266
|
+
field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
|
267
|
+
"Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
|
268
|
+
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
269
|
+
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
270
|
+
field.location or raise ArgumentError,
|
271
|
+
"You have to specify field location, received: #{field.location.inspect}"
|
272
|
+
|
273
|
+
opts[:force_new_field] = true if opts[:force_new_field].nil?
|
274
|
+
payload = field.to_hash # field itself
|
275
|
+
payload.merge!(field.location.to_hash) # location should added in plain view (i.e. not "location": {...})
|
276
|
+
payload.merge!(:forceNewField => opts[:force_new_field]) # create new field flag
|
277
|
+
|
278
|
+
Api::Request.new do |request|
|
279
|
+
request[:access] = access
|
280
|
+
request[:method] = :POST
|
281
|
+
request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/field/#{field.id}"
|
282
|
+
request[:request_body] = payload
|
283
|
+
end.execute!
|
284
|
+
end
|
285
|
+
|
286
|
+
#
|
287
|
+
# Modifies field location.
|
288
|
+
#
|
289
|
+
# @example Modify field location in template
|
290
|
+
# form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
|
291
|
+
# document = form.documents!.first
|
292
|
+
# field = form.fields!(document).first
|
293
|
+
# location = field.locations.first
|
294
|
+
# location.x = 0.123
|
295
|
+
# location.y = 0.123
|
296
|
+
# location.page = 2
|
297
|
+
# form.modify_field_location! location, field, document
|
298
|
+
#
|
299
|
+
# @param [GroupDocs::Signature::Field::Location] location
|
300
|
+
# @param [GroupDocs::Signature::Field] field
|
301
|
+
# @param [GroupDocs::Document] document
|
302
|
+
# @param [Hash] access Access credentials
|
303
|
+
# @option access [String] :client_id
|
304
|
+
# @option access [String] :private_key
|
305
|
+
# @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
|
306
|
+
# @raise [ArgumentError] if field is not GroupDocs::Signature::Field
|
307
|
+
# @raise [ArgumentError] if document is not GroupDocs::Document
|
308
|
+
#
|
309
|
+
def modify_field_location!(location, field, document, recipient, access = {})
|
310
|
+
location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
|
311
|
+
"Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
|
312
|
+
field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
|
313
|
+
"Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
|
314
|
+
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
315
|
+
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
316
|
+
|
317
|
+
Api::Request.new do |request|
|
318
|
+
request[:access] = access
|
319
|
+
request[:method] = :PUT
|
320
|
+
request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields/#{field.id}/locations/#{location.id}"
|
321
|
+
request[:request_body] = location.to_hash
|
322
|
+
end.execute!
|
323
|
+
end
|
324
|
+
|
325
|
+
#
|
326
|
+
# Updates form adding fields from template.
|
327
|
+
#
|
328
|
+
# @param [GroupDocs::Signature::Template] template
|
329
|
+
# @param [Hash] access Access credentials
|
330
|
+
# @option access [String] :client_id
|
331
|
+
# @option access [String] :private_key
|
332
|
+
# @raise [ArgumentError] if template is not GroupDocs::Signature::Template
|
333
|
+
#
|
334
|
+
def update_from_template!(template, access = {})
|
335
|
+
template.is_a?(GroupDocs::Signature::Template) or raise ArgumentError,
|
336
|
+
"Template should be GroupDocs::Signature::Template object, received: #{template.inspect}"
|
337
|
+
|
338
|
+
Api::Request.new do |request|
|
339
|
+
request[:access] = access
|
340
|
+
request[:method] = :POST
|
341
|
+
request[:path] = "/signature/{{client_id}}/forms/#{form.id}/templates/#{template.id}"
|
342
|
+
end.execute!
|
343
|
+
end
|
344
|
+
|
192
345
|
end # Signature::Form
|
193
346
|
end # GroupDocs
|