groupdocs 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +41 -0
- data/examples/README.md +2 -3
- data/examples/api-samples/Gemfile +5 -0
- data/examples/api-samples/Gemfile.lock +27 -0
- data/examples/api-samples/README.md +12 -0
- data/examples/api-samples/app.rb +17 -0
- data/examples/api-samples/public/css/style.css +166 -0
- data/examples/api-samples/samples/sample1.rb +17 -0
- data/examples/api-samples/samples/sample10.rb +36 -0
- data/examples/api-samples/samples/sample2.rb +19 -0
- data/examples/api-samples/samples/sample3.rb +23 -0
- data/examples/api-samples/samples/sample4.rb +31 -0
- data/examples/api-samples/samples/sample5.rb +44 -0
- data/examples/api-samples/samples/sample6.rb +3 -0
- data/examples/api-samples/samples/sample7.rb +33 -0
- data/examples/api-samples/samples/sample8.rb +40 -0
- data/examples/api-samples/samples/sample9.rb +22 -0
- data/examples/api-samples/views/index.haml +23 -0
- data/examples/api-samples/views/layout.haml +7 -0
- data/examples/api-samples/views/sample1.haml +71 -0
- data/examples/api-samples/views/sample10.haml +69 -0
- data/examples/api-samples/views/sample2.haml +59 -0
- data/examples/api-samples/views/sample3.haml +62 -0
- data/examples/api-samples/views/sample4.haml +58 -0
- data/examples/api-samples/views/sample5.haml +62 -0
- data/examples/api-samples/views/sample6.haml +145 -0
- data/examples/api-samples/views/sample7.haml +59 -0
- data/examples/api-samples/views/sample8.haml +75 -0
- data/examples/api-samples/views/sample9.haml +61 -0
- data/examples/{annotations → viewer}/Gemfile +0 -0
- data/examples/viewer/app.rb +52 -0
- data/groupdocs.gemspec +5 -4
- data/lib/groupdocs/api.rb +1 -0
- data/lib/groupdocs/api/entity.rb +2 -0
- data/lib/groupdocs/api/helpers.rb +2 -0
- data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -0
- data/lib/groupdocs/api/helpers/mime_helper.rb +21 -0
- data/lib/groupdocs/api/helpers/rest_helper.rb +3 -2
- data/lib/groupdocs/api/request.rb +1 -3
- data/lib/groupdocs/datasource.rb +1 -2
- data/lib/groupdocs/document.rb +133 -3
- data/lib/groupdocs/document/annotation.rb +14 -13
- data/lib/groupdocs/document/annotation/reply.rb +4 -8
- data/lib/groupdocs/document/annotation/reviewer.rb +2 -4
- data/lib/groupdocs/document/field.rb +10 -8
- data/lib/groupdocs/document/rectangle.rb +10 -18
- data/lib/groupdocs/job.rb +1 -1
- data/lib/groupdocs/questionnaire.rb +138 -44
- data/lib/groupdocs/questionnaire/collector.rb +262 -0
- data/lib/groupdocs/questionnaire/execution.rb +93 -10
- data/lib/groupdocs/questionnaire/question.rb +1 -2
- data/lib/groupdocs/signature.rb +16 -24
- data/lib/groupdocs/signature/contact.rb +2 -4
- data/lib/groupdocs/signature/envelope.rb +3 -6
- data/lib/groupdocs/signature/envelope/log.rb +2 -4
- data/lib/groupdocs/signature/field.rb +21 -42
- data/lib/groupdocs/signature/field/location.rb +18 -36
- data/lib/groupdocs/signature/form.rb +9 -18
- data/lib/groupdocs/signature/list.rb +1 -2
- data/lib/groupdocs/signature/recipient.rb +3 -6
- data/lib/groupdocs/signature/role.rb +4 -8
- data/lib/groupdocs/signature/shared/entity_fields.rb +12 -20
- data/lib/groupdocs/signature/template.rb +1 -2
- data/lib/groupdocs/storage/file.rb +3 -1
- data/lib/groupdocs/storage/folder.rb +7 -1
- data/lib/groupdocs/subscription.rb +6 -12
- data/lib/groupdocs/subscription/limit.rb +4 -8
- data/lib/groupdocs/user.rb +3 -6
- data/lib/groupdocs/version.rb +1 -1
- data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -0
- data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -0
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +4 -0
- data/spec/groupdocs/api/request_spec.rb +3 -5
- data/spec/groupdocs/datasource/field_spec.rb +3 -6
- data/spec/groupdocs/datasource_spec.rb +8 -15
- data/spec/groupdocs/document/annotation/reply_spec.rb +13 -24
- data/spec/groupdocs/document/annotation/reviewer_spec.rb +5 -9
- data/spec/groupdocs/document/annotation_spec.rb +35 -40
- data/spec/groupdocs/document/change_spec.rb +6 -11
- data/spec/groupdocs/document/field_spec.rb +13 -13
- data/spec/groupdocs/document/metadata_spec.rb +5 -10
- data/spec/groupdocs/document/rectangle_spec.rb +6 -18
- data/spec/groupdocs/document/view_spec.rb +3 -6
- data/spec/groupdocs/document_spec.rb +123 -10
- data/spec/groupdocs/job_spec.rb +9 -18
- data/spec/groupdocs/questionnaire/collector_spec.rb +201 -0
- data/spec/groupdocs/questionnaire/execution_spec.rb +91 -23
- data/spec/groupdocs/questionnaire/page_spec.rb +3 -6
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +2 -4
- data/spec/groupdocs/questionnaire/question_spec.rb +7 -14
- data/spec/groupdocs/questionnaire_spec.rb +117 -41
- data/spec/groupdocs/signature/contact_spec.rb +9 -17
- data/spec/groupdocs/signature/envelope/log_spec.rb +8 -16
- data/spec/groupdocs/signature/envelope_spec.rb +9 -17
- data/spec/groupdocs/signature/field/location_spec.rb +32 -65
- data/spec/groupdocs/signature/field_spec.rb +48 -95
- data/spec/groupdocs/signature/form_spec.rb +22 -43
- data/spec/groupdocs/signature/list_spec.rb +6 -11
- data/spec/groupdocs/signature/recipient_spec.rb +11 -22
- data/spec/groupdocs/signature/role_spec.rb +11 -21
- data/spec/groupdocs/signature/template_spec.rb +2 -4
- data/spec/groupdocs/signature_spec.rb +28 -54
- data/spec/groupdocs/storage/file_spec.rb +14 -26
- data/spec/groupdocs/storage/folder_spec.rb +16 -22
- data/spec/groupdocs/storage/package_spec.rb +2 -4
- data/spec/groupdocs/subscription/limit_spec.rb +8 -16
- data/spec/groupdocs/subscription_spec.rb +11 -22
- data/spec/groupdocs/user_spec.rb +21 -41
- data/spec/groupdocs_spec.rb +4 -8
- data/spec/spec_helper.rb +12 -0
- data/spec/support/files/signature.png +0 -0
- data/spec/support/json/annotation_list.json +6 -6
- data/spec/support/json/comparison_changes.json +8 -8
- data/spec/support/json/document_fields.json +8 -8
- data/spec/support/json/document_page_images_get.json +20 -0
- data/spec/support/json/questionnaire_collector.json +17 -0
- data/spec/support/json/questionnaire_collectors.json +38 -0
- data/spec/support/json/questionnaire_collectors_add.json +10 -0
- data/spec/support/json/questionnaire_create.json +3 -1
- data/spec/support/json/{questionnaire_execution_create.json → questionnaire_execution_add.json} +1 -1
- data/spec/support/json/questionnaire_get.json +3 -0
- data/spec/support/json/questionnaires_get.json +36 -18
- data/spec/support/json/sign_documents.json +16 -0
- data/spec/support/json/templates_get.json +21 -0
- data/spec/support/shared_examples/api/entity.rb +2 -0
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +1 -2
- data/spec/support/shared_examples/api/helpers/status_helper.rb +1 -2
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +22 -43
- metadata +82 -16
- data/examples/annotations/app.rb +0 -67
data/lib/groupdocs/job.rb
CHANGED
@@ -244,7 +244,7 @@ module GroupDocs
|
|
244
244
|
Api::Request.new do |request|
|
245
245
|
request[:access] = access
|
246
246
|
request[:method] = :PUT
|
247
|
-
request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.
|
247
|
+
request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.id}/datasources/#{datasource.id}"
|
248
248
|
end.execute!
|
249
249
|
end
|
250
250
|
|
@@ -1,27 +1,41 @@
|
|
1
1
|
module GroupDocs
|
2
2
|
class Questionnaire < Api::Entity
|
3
3
|
|
4
|
+
require 'groupdocs/questionnaire/collector'
|
4
5
|
require 'groupdocs/questionnaire/execution'
|
5
6
|
require 'groupdocs/questionnaire/page'
|
6
7
|
require 'groupdocs/questionnaire/question'
|
7
8
|
|
9
|
+
include Api::Helpers::Status
|
10
|
+
|
8
11
|
#
|
9
12
|
# Returns an array of all questionnaires.
|
10
13
|
#
|
14
|
+
# @param [Hash] options Hash of options
|
15
|
+
# @option options [Symbol] :status Filter questionnaires by status
|
16
|
+
# @option options [Integer] :page_number Page to start with
|
17
|
+
# @option options [Integer] :page_size How many items to list
|
11
18
|
# @param [Hash] access Access credentials
|
12
19
|
# @option access [String] :client_id
|
13
20
|
# @option access [String] :private_key
|
14
21
|
# @return [Array<GroupDocs::Questionnaire>]
|
15
22
|
#
|
16
|
-
def self.all!(access = {})
|
17
|
-
|
23
|
+
def self.all!(options = {}, access = {})
|
24
|
+
if options[:status]
|
25
|
+
# TODO find better way to parse status
|
26
|
+
options[:status] = new.send(:parse_status, options[:status])
|
27
|
+
end
|
28
|
+
|
29
|
+
api = Api::Request.new do |request|
|
18
30
|
request[:access] = access
|
19
31
|
request[:method] = :GET
|
20
32
|
request[:path] = '/merge/{{client_id}}/questionnaires'
|
21
|
-
end
|
33
|
+
end
|
34
|
+
api.add_params(options)
|
35
|
+
json = api.execute!
|
22
36
|
|
23
37
|
json[:questionnaires].map do |questionnaire|
|
24
|
-
|
38
|
+
new(questionnaire)
|
25
39
|
end
|
26
40
|
end
|
27
41
|
|
@@ -41,43 +55,38 @@ module GroupDocs
|
|
41
55
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
|
42
56
|
end.execute!
|
43
57
|
|
44
|
-
|
58
|
+
new(json[:questionnaire])
|
45
59
|
rescue RestClient::ResourceNotFound
|
46
60
|
nil
|
47
61
|
end
|
48
62
|
|
49
|
-
#
|
50
|
-
# Returns an array of all executions.
|
51
|
-
#
|
52
|
-
# @param [Hash] access Access credentials
|
53
|
-
# @option access [String] :client_id
|
54
|
-
# @option access [String] :private_key
|
55
|
-
# @return [Array<GroupDocs::Questionnaire::Execution>]
|
56
|
-
#
|
57
|
-
def self.executions!(access = {})
|
58
|
-
json = Api::Request.new do |request|
|
59
|
-
request[:access] = access
|
60
|
-
request[:method] = :GET
|
61
|
-
request[:path] = '/merge/{{client_id}}/questionnaires/executions'
|
62
|
-
end.execute!
|
63
|
-
|
64
|
-
json[:executions].map do |execution|
|
65
|
-
Questionnaire::Execution.new(execution)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
63
|
# @attr [Integer] id
|
70
64
|
attr_accessor :id
|
65
|
+
# @attr [String] guid
|
66
|
+
attr_accessor :guid
|
71
67
|
# @attr [String] name
|
72
68
|
attr_accessor :name
|
69
|
+
# @attr [Symbol] status
|
70
|
+
attr_accessor :status
|
73
71
|
# @attr [String] descr
|
74
72
|
attr_accessor :descr
|
75
73
|
# @attr [Array<GroupDocs::Questionnaire::Page>] pages
|
76
74
|
attr_accessor :pages
|
75
|
+
# @attr [Integer] resolved_executions
|
76
|
+
attr_accessor :resolved_executions
|
77
|
+
# @attr [Integer] assigned_questions
|
78
|
+
attr_accessor :assigned_questions
|
79
|
+
# @attr [Integer] total_questions
|
80
|
+
attr_accessor :total_questions
|
81
|
+
# @attr [Integer] modified
|
82
|
+
attr_accessor :modified
|
83
|
+
# @attr [Integer] expires
|
84
|
+
attr_accessor :expires
|
85
|
+
# @attr [Array<String>] document_ids
|
86
|
+
attr_accessor :document_ids
|
77
87
|
|
78
88
|
# Human-readable accessors
|
79
|
-
|
80
|
-
alias_method :description=, :descr=
|
89
|
+
alias_accessor :description, :descr
|
81
90
|
|
82
91
|
#
|
83
92
|
# Converts each page to GroupDocs::Questionnaire::Page object.
|
@@ -96,6 +105,15 @@ module GroupDocs
|
|
96
105
|
end
|
97
106
|
end
|
98
107
|
|
108
|
+
#
|
109
|
+
# Converts status to human-readable format.
|
110
|
+
#
|
111
|
+
# @return [Symbol]
|
112
|
+
#
|
113
|
+
def status
|
114
|
+
parse_status(@status)
|
115
|
+
end
|
116
|
+
|
99
117
|
#
|
100
118
|
# Adds page to questionnaire.
|
101
119
|
#
|
@@ -126,6 +144,8 @@ module GroupDocs
|
|
126
144
|
end.execute!
|
127
145
|
|
128
146
|
self.id = json[:questionnaire_id]
|
147
|
+
self.guid = json[:questionnaire_guid]
|
148
|
+
self.name = json[:adjusted_name]
|
129
149
|
end
|
130
150
|
|
131
151
|
#
|
@@ -183,36 +203,110 @@ module GroupDocs
|
|
183
203
|
end
|
184
204
|
|
185
205
|
#
|
186
|
-
#
|
206
|
+
# Returns an array of questionnaire executions.
|
207
|
+
#
|
208
|
+
# @param [Hash] access Access credentials
|
209
|
+
# @option access [String] :client_id
|
210
|
+
# @option access [String] :private_key
|
211
|
+
# @return [Array<GroupDocs::Questionnaire::Execution>]
|
212
|
+
#
|
213
|
+
def executions!(access = {})
|
214
|
+
json = Api::Request.new do |request|
|
215
|
+
request[:access] = access
|
216
|
+
request[:method] = :GET
|
217
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/executions"
|
218
|
+
end.execute!
|
219
|
+
|
220
|
+
json[:executions].map do |execution|
|
221
|
+
Execution.new(execution)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
#
|
226
|
+
# Returns an array of questionnaire collectors.
|
227
|
+
#
|
228
|
+
# @param [Hash] access Access credentials
|
229
|
+
# @option access [String] :client_id
|
230
|
+
# @option access [String] :private_key
|
231
|
+
# @return [Array<GroupDocs::Questionnaire::Collector>]
|
232
|
+
#
|
233
|
+
def collectors!(access = {})
|
234
|
+
json = Api::Request.new do |request|
|
235
|
+
request[:access] = access
|
236
|
+
request[:method] = :GET
|
237
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/collectors"
|
238
|
+
end.execute!
|
239
|
+
|
240
|
+
json[:collectors].map do |collector|
|
241
|
+
collector.merge!(questionnaire: self)
|
242
|
+
Collector.new(collector)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
#
|
247
|
+
# Returns questionnaire metadata.
|
248
|
+
#
|
249
|
+
# @param [Hash] access Access credentials
|
250
|
+
# @option access [String] :client_id
|
251
|
+
# @option access [String] :private_key
|
252
|
+
# @return [GroupDocs::Questionnaire]
|
253
|
+
#
|
254
|
+
def metadata!(access = {})
|
255
|
+
json = Api::Request.new do |request|
|
256
|
+
request[:access] = access
|
257
|
+
request[:method] = :GET
|
258
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
|
259
|
+
end.execute!
|
260
|
+
|
261
|
+
Questionnaire.new(json[:questionnaire])
|
262
|
+
end
|
263
|
+
|
264
|
+
#
|
265
|
+
# Updates questionnaire metadata.
|
187
266
|
#
|
188
267
|
# @example
|
189
|
-
# execution = GroupDocs::Questionnaire::Execution.new
|
190
268
|
# questionnaire = GroupDocs::Questionnaire.get!(1)
|
191
|
-
#
|
192
|
-
#
|
269
|
+
# metadata = questionnaire.metadata!
|
270
|
+
# metadata.name = 'New questionnaire name'
|
271
|
+
# questionnaire.update_metadata! metadata
|
193
272
|
#
|
194
|
-
# @param [GroupDocs::Questionnaire::Execution] execution
|
195
|
-
# @param [String] email
|
196
273
|
# @param [Hash] access Access credentials
|
197
274
|
# @option access [String] :client_id
|
198
275
|
# @option access [String] :private_key
|
199
|
-
# @
|
276
|
+
# @raise [ArgumentError] if metadata is not GroupDocs::Questionnaire
|
200
277
|
#
|
201
|
-
def
|
202
|
-
|
203
|
-
"
|
278
|
+
def update_metadata!(metadata, access = {})
|
279
|
+
metadata.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
|
280
|
+
"Metadata should be GroupDocs::Questionnaire object, received: #{metadata.inspect}"
|
204
281
|
|
205
|
-
|
282
|
+
Api::Request.new do |request|
|
206
283
|
request[:access] = access
|
207
|
-
request[:method] = :
|
208
|
-
request[:path] = "/merge/{{client_id}}/questionnaires/#{
|
209
|
-
request[:request_body] =
|
284
|
+
request[:method] = :PUT
|
285
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
|
286
|
+
request[:request_body] = metadata.to_hash
|
210
287
|
end.execute!
|
288
|
+
end
|
211
289
|
|
212
|
-
|
213
|
-
|
290
|
+
#
|
291
|
+
# Returns an array of document fields for questionnaire.
|
292
|
+
#
|
293
|
+
# @param [Hash] access Access credentials
|
294
|
+
# @option access [String] :client_id
|
295
|
+
# @option access [String] :private_key
|
296
|
+
# @return [Array<GroupDocs::Document::Field>]
|
297
|
+
#
|
298
|
+
def fields!(access = {})
|
299
|
+
api = Api::Request.new do |request|
|
300
|
+
request[:access] = access
|
301
|
+
request[:method] = :GET
|
302
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/fields"
|
303
|
+
end
|
304
|
+
api.add_params(include_geometry: true)
|
305
|
+
json = api.execute!
|
214
306
|
|
215
|
-
|
307
|
+
json[:fields].map do |field|
|
308
|
+
Document::Field.new(field)
|
309
|
+
end
|
216
310
|
end
|
217
311
|
|
218
312
|
end # Questionnaire
|
@@ -0,0 +1,262 @@
|
|
1
|
+
module GroupDocs
|
2
|
+
class Questionnaire::Collector < Api::Entity
|
3
|
+
|
4
|
+
include Api::Helpers::Status
|
5
|
+
|
6
|
+
#
|
7
|
+
# Returns collector by its guid.
|
8
|
+
#
|
9
|
+
# @param [String] guid
|
10
|
+
# @param [Hash] access Access credentials
|
11
|
+
# @option access [String] :client_id
|
12
|
+
# @option access [String] :private_key
|
13
|
+
# @return [GroupDocs::Questionnaire::Collector]
|
14
|
+
#
|
15
|
+
def self.get!(guid, access = {})
|
16
|
+
json = Api::Request.new do |request|
|
17
|
+
request[:access] = access
|
18
|
+
request[:method] = :GET
|
19
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
|
20
|
+
end.execute!
|
21
|
+
|
22
|
+
collector = json[:collector]
|
23
|
+
collector.merge!(questionnaire: Questionnaire.new(id: collector[:questionnaire_id]))
|
24
|
+
|
25
|
+
new(collector)
|
26
|
+
end
|
27
|
+
|
28
|
+
# @attr [Integer] id
|
29
|
+
attr_accessor :id
|
30
|
+
# @attr [String] guid
|
31
|
+
attr_accessor :guid
|
32
|
+
# @attr [GroupDocs::Questionnaire] questionnaire
|
33
|
+
attr_accessor :questionnaire
|
34
|
+
# @attr [Integer] questionnaire_id
|
35
|
+
attr_accessor :questionnaire_id
|
36
|
+
# @attr [Symbol] status
|
37
|
+
attr_accessor :status
|
38
|
+
# @attr [Symbol] type
|
39
|
+
attr_accessor :type
|
40
|
+
# @attr [Integer] resolved_executions
|
41
|
+
attr_accessor :resolved_executions
|
42
|
+
# @attr [Array<String>] emails
|
43
|
+
attr_accessor :emails
|
44
|
+
# @attr [Time] modified
|
45
|
+
attr_accessor :modified
|
46
|
+
|
47
|
+
#
|
48
|
+
# Creates new GroupDocs::Questionnaire::Collector.
|
49
|
+
#
|
50
|
+
# @raise [ArgumentError] If questionnaire is not passed or is not an instance of GroupDocs::Questionnaire
|
51
|
+
#
|
52
|
+
def initialize(options = {}, &blk)
|
53
|
+
super(options, &blk)
|
54
|
+
questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
|
55
|
+
"You have to pass GroupDocs::Questionnaire object: #{questionnaire.inspect}."
|
56
|
+
end
|
57
|
+
|
58
|
+
#
|
59
|
+
# Converts status to human-readable format.
|
60
|
+
# @return [Symbol]
|
61
|
+
#
|
62
|
+
def status
|
63
|
+
parse_status(@status)
|
64
|
+
end
|
65
|
+
|
66
|
+
#
|
67
|
+
# Updates type with machine-readable format.
|
68
|
+
#
|
69
|
+
# @param [Symbol] type
|
70
|
+
#
|
71
|
+
def type=(type)
|
72
|
+
@type = type.is_a?(Symbol) ? type.to_s.capitalize : type
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
# Converts type to human-readable format.
|
77
|
+
# @return [Symbol]
|
78
|
+
#
|
79
|
+
def type
|
80
|
+
parse_status(@type)
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# Converts timestamp which is return by API server to Time object.
|
85
|
+
# @return [Time]
|
86
|
+
#
|
87
|
+
def modified
|
88
|
+
Time.at(@modified / 1000)
|
89
|
+
end
|
90
|
+
|
91
|
+
#
|
92
|
+
# Adds collector.
|
93
|
+
#
|
94
|
+
# @example
|
95
|
+
# questionnaire = GroupDocs::Questionnaire.get!(1)
|
96
|
+
# collector = GroupDocs::Questionnaire::Collector.new(questionnaire: questionnaire)
|
97
|
+
# collector.type = :link
|
98
|
+
# collector.add!
|
99
|
+
#
|
100
|
+
# @param [Hash] access Access credentials
|
101
|
+
# @option access [String] :client_id
|
102
|
+
# @option access [String] :private_key
|
103
|
+
#
|
104
|
+
def add!(access = {})
|
105
|
+
json = Api::Request.new do |request|
|
106
|
+
request[:access] = access
|
107
|
+
request[:method] = :POST
|
108
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/#{questionnaire.guid}/collectors"
|
109
|
+
request[:request_body] = to_hash
|
110
|
+
end.execute!
|
111
|
+
|
112
|
+
self.id = json[:collector_id]
|
113
|
+
self.guid = json[:collector_guid]
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# Updates collector.
|
118
|
+
#
|
119
|
+
# @example
|
120
|
+
# questionnaire = GroupDocs::Questionnaire.get!(1)
|
121
|
+
# collector = questionnaire.collectors!.first
|
122
|
+
# collector.type = :embedded
|
123
|
+
# collector.update!
|
124
|
+
#
|
125
|
+
# @param [Hash] access Access credentials
|
126
|
+
# @option access [String] :client_id
|
127
|
+
# @option access [String] :private_key
|
128
|
+
#
|
129
|
+
def update!(access = {})
|
130
|
+
Api::Request.new do |request|
|
131
|
+
request[:access] = access
|
132
|
+
request[:method] = :PUT
|
133
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
|
134
|
+
request[:request_body] = to_hash
|
135
|
+
end.execute!
|
136
|
+
end
|
137
|
+
|
138
|
+
#
|
139
|
+
# Removes collector.
|
140
|
+
#
|
141
|
+
# @param [Hash] access Access credentials
|
142
|
+
# @option access [String] :client_id
|
143
|
+
# @option access [String] :private_key
|
144
|
+
#
|
145
|
+
def remove!(access = {})
|
146
|
+
Api::Request.new do |request|
|
147
|
+
request[:access] = access
|
148
|
+
request[:method] = :DELETE
|
149
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}"
|
150
|
+
end.execute!
|
151
|
+
end
|
152
|
+
|
153
|
+
#
|
154
|
+
# Returns an array of questionnaire collector executions.
|
155
|
+
#
|
156
|
+
# @param [Hash] access Access credentials
|
157
|
+
# @option access [String] :client_id
|
158
|
+
# @option access [String] :private_key
|
159
|
+
# @return [Array<GroupDocs::Questionnaire::Execution>]
|
160
|
+
#
|
161
|
+
def executions!(access = {})
|
162
|
+
json = Api::Request.new do |request|
|
163
|
+
request[:access] = access
|
164
|
+
request[:method] = :GET
|
165
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/executions"
|
166
|
+
end.execute!
|
167
|
+
|
168
|
+
json[:executions].map do |execution|
|
169
|
+
Questionnaire::Execution.new(execution)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
#
|
174
|
+
# Adds new questionnaire execution.
|
175
|
+
#
|
176
|
+
# @example
|
177
|
+
# questionnaire = GroupDocs::Questionnaire.get!(1)
|
178
|
+
# collector = questionnaire.collectors!.first
|
179
|
+
# execution = GroupDocs::Questionnaire::Execution.new
|
180
|
+
# execution.executive = GroupDocs::User.new(primary_email: 'john@smith.com')
|
181
|
+
# # make sure to save execution as it has updated attributes
|
182
|
+
# execution = collector.add_execution!(execution)
|
183
|
+
# #=> #<GroupDocs::Questionnaire::Execution @id=1, @questionnaire_id=1>
|
184
|
+
#
|
185
|
+
# @param [GroupDocs::Questionnaire::Execution] execution
|
186
|
+
# @param [Hash] access Access credentials
|
187
|
+
# @option access [String] :client_id
|
188
|
+
# @option access [String] :private_key
|
189
|
+
# @return [GroupDocs::Questionnaire::Execution] updated execution
|
190
|
+
#
|
191
|
+
def add_execution!(execution, access = {})
|
192
|
+
execution.is_a?(GroupDocs::Questionnaire::Execution) or raise ArgumentError,
|
193
|
+
"Execution should be GroupDocs::Questionnaire::Execution object, received: #{execution.inspect}"
|
194
|
+
|
195
|
+
json = Api::Request.new do |request|
|
196
|
+
request[:access] = access
|
197
|
+
request[:method] = :POST
|
198
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/executions"
|
199
|
+
request[:request_body] = execution.to_hash
|
200
|
+
end.execute!
|
201
|
+
|
202
|
+
execution.id = json[:execution_id]
|
203
|
+
execution.guid = json[:execution_guid]
|
204
|
+
execution.collector_id = json[:collector_id]
|
205
|
+
|
206
|
+
execution
|
207
|
+
end
|
208
|
+
|
209
|
+
#
|
210
|
+
# Creates new job to merge datasource into questionnaire collector.
|
211
|
+
#
|
212
|
+
# @example
|
213
|
+
# # get template and its first field
|
214
|
+
# document = GroupDocs::Document.templates!.first
|
215
|
+
# field = document.fields!.first
|
216
|
+
# # create questionnaire
|
217
|
+
# answer = GroupDocs::Questionnaire::Question::Answer.new(text: 'Text', value: 'Value1')
|
218
|
+
# question = GroupDocs::Questionnaire::Question.new(field: field.name, text: 'Question', answers: [answer])
|
219
|
+
# page = GroupDocs::Questionnaire::Page.new(number: field.page, questions: [question])
|
220
|
+
# questionnaire = GroupDocs::Questionnaire.new(name: 'Questionnaire', description: 'Description', pages: [page])
|
221
|
+
# questionnaire.create!
|
222
|
+
# # add questionnaire to document
|
223
|
+
# document.add_questionnaire! questionnaire
|
224
|
+
# # create collector
|
225
|
+
# collector = GroupDocs::Questionnaire::Collector.new(questionnaire: questionnaire)
|
226
|
+
# collector.type = :link
|
227
|
+
# collector.add!
|
228
|
+
# # create datasource and its field
|
229
|
+
# field = GroupDocs::DataSource::Field.new(field: field.name, values: %w(test1 test2))
|
230
|
+
# datasource = GroupDocs::DataSource.new(fields: [field])
|
231
|
+
# datasource.add!
|
232
|
+
# # fill collector with datasrouce and send results to email
|
233
|
+
# collector.fill!(datasource, email_results: true)
|
234
|
+
#
|
235
|
+
# @param [GroupDocs::DataSource] datasource
|
236
|
+
# @param [Hash] options
|
237
|
+
# @option options [Boolean] :new_type New file format type
|
238
|
+
# @option options [Boolean] :email_results Set to true if converted document should be emailed
|
239
|
+
# @param [Hash] access Access credentials
|
240
|
+
# @option access [String] :client_id
|
241
|
+
# @option access [String] :private_key
|
242
|
+
# @return [GroupDocs::Job]
|
243
|
+
#
|
244
|
+
# @raise [ArgumentError] if datasource is not GroupDocs::DataSource object
|
245
|
+
#
|
246
|
+
def fill!(datasource, options = {}, access = {})
|
247
|
+
datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
|
248
|
+
"Datasource should be GroupDocs::DataSource object, received: #{datasource.inspect}"
|
249
|
+
|
250
|
+
api = Api::Request.new do |request|
|
251
|
+
request[:access] = access
|
252
|
+
request[:method] = :POST
|
253
|
+
request[:path] = "/merge/{{client_id}}/questionnaires/collectors/#{guid}/datasources/#{datasource.id}"
|
254
|
+
end
|
255
|
+
api.add_params(options)
|
256
|
+
json = api.execute!
|
257
|
+
|
258
|
+
Job.new(id: json[:job_id])
|
259
|
+
end
|
260
|
+
|
261
|
+
end # Questionnaire::Collector
|
262
|
+
end # GroupDocs
|