groupdocs 1.1.0 → 1.2.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/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
|