groupdocs 2.2.0 → 2.3.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.
Files changed (324) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -9
  3. data/CHANGELOG.md +482 -477
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +21 -21
  6. data/README.md +94 -94
  7. data/Rakefile +9 -9
  8. data/examples/README.md +12 -12
  9. data/examples/api-samples/Gemfile +5 -5
  10. data/examples/api-samples/Gemfile.lock +49 -49
  11. data/examples/api-samples/README.md +23 -23
  12. data/examples/api-samples/public/css/style.css +229 -229
  13. data/examples/api-samples/public/docs/annotation-sample.html +167 -167
  14. data/examples/api-samples/public/docs/docco.css +500 -500
  15. data/examples/api-samples/public/docs/envelope-sample.html +374 -374
  16. data/examples/api-samples/public/docs/sample01.html +181 -181
  17. data/examples/api-samples/public/docs/sample02.html +199 -199
  18. data/examples/api-samples/public/docs/sample03.html +318 -318
  19. data/examples/api-samples/public/docs/sample04.html +217 -217
  20. data/examples/api-samples/public/docs/sample05.html +296 -296
  21. data/examples/api-samples/public/docs/sample06.html +347 -347
  22. data/examples/api-samples/public/docs/sample07.html +209 -209
  23. data/examples/api-samples/public/docs/sample08.html +277 -277
  24. data/examples/api-samples/public/docs/sample09.html +314 -314
  25. data/examples/api-samples/public/docs/sample10.html +270 -270
  26. data/examples/api-samples/public/docs/sample11.html +462 -462
  27. data/examples/api-samples/public/docs/sample12.html +199 -199
  28. data/examples/api-samples/public/docs/sample13.html +201 -201
  29. data/examples/api-samples/public/docs/sample14.html +204 -204
  30. data/examples/api-samples/public/docs/sample15.html +182 -182
  31. data/examples/api-samples/public/docs/sample16.html +234 -234
  32. data/examples/api-samples/public/docs/sample17.html +309 -309
  33. data/examples/api-samples/public/docs/sample18.html +721 -721
  34. data/examples/api-samples/public/docs/sample19.html +631 -631
  35. data/examples/api-samples/public/docs/sample20.html +230 -230
  36. data/examples/api-samples/public/docs/sample21.html +790 -790
  37. data/examples/api-samples/public/docs/sample22.html +408 -408
  38. data/examples/api-samples/public/docs/sample25.html +550 -550
  39. data/examples/api-samples/public/templates/base-simple_source.html +191 -191
  40. data/examples/api-samples/public/templates/testdocument.html +100 -100
  41. data/examples/api-samples/public/templates/welcome.htm +137 -137
  42. data/examples/api-samples/samples/annotation-sample.rb +56 -56
  43. data/examples/api-samples/samples/envelope-sample.rb +133 -133
  44. data/examples/api-samples/samples/sample01.rb +44 -44
  45. data/examples/api-samples/samples/sample02.rb +50 -50
  46. data/examples/api-samples/samples/sample03.rb +79 -79
  47. data/examples/api-samples/samples/sample04.rb +54 -54
  48. data/examples/api-samples/samples/sample05.rb +83 -83
  49. data/examples/api-samples/samples/sample06.rb +86 -86
  50. data/examples/api-samples/samples/sample07.rb +59 -59
  51. data/examples/api-samples/samples/sample08.rb +76 -76
  52. data/examples/api-samples/samples/sample09.rb +85 -85
  53. data/examples/api-samples/samples/sample10.rb +70 -70
  54. data/examples/api-samples/samples/sample11.rb +132 -132
  55. data/examples/api-samples/samples/sample12.rb +48 -48
  56. data/examples/api-samples/samples/sample13.rb +49 -49
  57. data/examples/api-samples/samples/sample14.rb +54 -54
  58. data/examples/api-samples/samples/sample15.rb +43 -43
  59. data/examples/api-samples/samples/sample16.rb +57 -57
  60. data/examples/api-samples/samples/sample17.rb +70 -70
  61. data/examples/api-samples/samples/sample18.rb +190 -190
  62. data/examples/api-samples/samples/sample19.rb +188 -188
  63. data/examples/api-samples/samples/sample20.rb +68 -68
  64. data/examples/api-samples/samples/sample21.rb +212 -212
  65. data/examples/api-samples/samples/sample22.rb +109 -109
  66. data/examples/api-samples/samples/sample25.rb +127 -127
  67. data/examples/api-samples/views/_others_samples.haml +233 -233
  68. data/examples/api-samples/views/annotation_sample.haml +63 -63
  69. data/examples/api-samples/views/envelope_sample.haml +72 -72
  70. data/examples/api-samples/views/index.haml +235 -235
  71. data/examples/api-samples/views/layout.haml +3 -3
  72. data/examples/api-samples/views/sample01.haml +63 -63
  73. data/examples/api-samples/views/sample02.haml +52 -52
  74. data/examples/api-samples/views/sample03.haml +87 -87
  75. data/examples/api-samples/views/sample04.haml +55 -55
  76. data/examples/api-samples/views/sample05.haml +86 -86
  77. data/examples/api-samples/views/sample06.haml +58 -58
  78. data/examples/api-samples/views/sample07.haml +52 -52
  79. data/examples/api-samples/views/sample08.haml +100 -100
  80. data/examples/api-samples/views/sample09.haml +95 -95
  81. data/examples/api-samples/views/sample10.haml +93 -93
  82. data/examples/api-samples/views/sample11.haml +140 -140
  83. data/examples/api-samples/views/sample12.haml +68 -68
  84. data/examples/api-samples/views/sample13.haml +64 -64
  85. data/examples/api-samples/views/sample14.haml +60 -60
  86. data/examples/api-samples/views/sample15.haml +51 -51
  87. data/examples/api-samples/views/sample16.haml +50 -50
  88. data/examples/api-samples/views/sample17.haml +54 -54
  89. data/examples/api-samples/views/sample18.haml +143 -143
  90. data/examples/api-samples/views/sample19.haml +92 -92
  91. data/examples/api-samples/views/sample20.haml +54 -54
  92. data/examples/api-samples/views/sample21.haml +123 -123
  93. data/examples/api-samples/views/sample22.haml +106 -106
  94. data/examples/api-samples/views/sample25.haml +101 -101
  95. data/examples/api-samples/views/sample31.haml +2 -2
  96. data/examples/api-samples/web.rb +20 -20
  97. data/examples/viewer/Gemfile +5 -5
  98. data/examples/viewer/app.rb +52 -52
  99. data/groupdocs.gemspec +31 -31
  100. data/lib/groupdocs.rb +62 -62
  101. data/lib/groupdocs/api.rb +6 -6
  102. data/lib/groupdocs/api/entity.rb +112 -112
  103. data/lib/groupdocs/api/helpers.rb +11 -11
  104. data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
  105. data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
  106. data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
  107. data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
  108. data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
  109. data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
  110. data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
  111. data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
  112. data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
  113. data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
  114. data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
  115. data/lib/groupdocs/api/request.rb +91 -91
  116. data/lib/groupdocs/datasource.rb +249 -249
  117. data/lib/groupdocs/datasource/field.rb +39 -39
  118. data/lib/groupdocs/document.rb +1550 -1550
  119. data/lib/groupdocs/document/annotation.rb +421 -421
  120. data/lib/groupdocs/document/annotation/reply.rb +173 -173
  121. data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
  122. data/lib/groupdocs/document/change.rb +56 -56
  123. data/lib/groupdocs/document/field.rb +53 -53
  124. data/lib/groupdocs/document/metadata.rb +32 -32
  125. data/lib/groupdocs/document/rectangle.rb +18 -18
  126. data/lib/groupdocs/document/view.rb +36 -36
  127. data/lib/groupdocs/errors.rb +8 -8
  128. data/lib/groupdocs/job.rb +468 -468
  129. data/lib/groupdocs/questionnaire.rb +530 -530
  130. data/lib/groupdocs/questionnaire/collector.rb +335 -335
  131. data/lib/groupdocs/questionnaire/execution.rb +181 -181
  132. data/lib/groupdocs/questionnaire/page.rb +43 -43
  133. data/lib/groupdocs/questionnaire/question.rb +108 -108
  134. data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
  135. data/lib/groupdocs/signature.rb +380 -380
  136. data/lib/groupdocs/signature/contact.rb +181 -181
  137. data/lib/groupdocs/signature/envelope.rb +747 -747
  138. data/lib/groupdocs/signature/envelope/log.rb +20 -20
  139. data/lib/groupdocs/signature/field.rb +286 -286
  140. data/lib/groupdocs/signature/field/location.rb +71 -71
  141. data/lib/groupdocs/signature/form.rb +804 -804
  142. data/lib/groupdocs/signature/list.rb +92 -92
  143. data/lib/groupdocs/signature/recipient.rb +79 -79
  144. data/lib/groupdocs/signature/role.rb +54 -54
  145. data/lib/groupdocs/signature/shared.rb +6 -6
  146. data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
  147. data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
  148. data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
  149. data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
  150. data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
  151. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
  152. data/lib/groupdocs/signature/template.rb +124 -124
  153. data/lib/groupdocs/storage.rb +44 -44
  154. data/lib/groupdocs/storage/file.rb +432 -432
  155. data/lib/groupdocs/storage/folder.rb +288 -288
  156. data/lib/groupdocs/storage/package.rb +48 -48
  157. data/lib/groupdocs/storage/provider.rb +32 -32
  158. data/lib/groupdocs/subscription.rb +323 -323
  159. data/lib/groupdocs/subscription/limit.rb +20 -20
  160. data/lib/groupdocs/user.rb +955 -930
  161. data/lib/groupdocs/version.rb +3 -3
  162. data/spec/groupdocs/api/entity_spec.rb +55 -55
  163. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
  164. data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
  165. data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
  166. data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
  167. data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
  168. data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
  169. data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
  170. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
  171. data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
  172. data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
  173. data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
  174. data/spec/groupdocs/api/request_spec.rb +112 -112
  175. data/spec/groupdocs/datasource/field_spec.rb +29 -29
  176. data/spec/groupdocs/datasource_spec.rb +145 -145
  177. data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
  178. data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
  179. data/spec/groupdocs/document/annotation_spec.rb +234 -234
  180. data/spec/groupdocs/document/change_spec.rb +39 -39
  181. data/spec/groupdocs/document/field_spec.rb +28 -28
  182. data/spec/groupdocs/document/metadata_spec.rb +21 -21
  183. data/spec/groupdocs/document/rectangle_spec.rb +14 -14
  184. data/spec/groupdocs/document/view_spec.rb +33 -33
  185. data/spec/groupdocs/document_spec.rb +859 -859
  186. data/spec/groupdocs/errors_spec.rb +7 -7
  187. data/spec/groupdocs/job_spec.rb +323 -323
  188. data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
  189. data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
  190. data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
  191. data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
  192. data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
  193. data/spec/groupdocs/questionnaire_spec.rb +295 -295
  194. data/spec/groupdocs/signature/contact_spec.rb +142 -142
  195. data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
  196. data/spec/groupdocs/signature/envelope_spec.rb +384 -384
  197. data/spec/groupdocs/signature/field/location_spec.rb +40 -40
  198. data/spec/groupdocs/signature/field_spec.rb +235 -235
  199. data/spec/groupdocs/signature/form_spec.rb +205 -205
  200. data/spec/groupdocs/signature/list_spec.rb +87 -87
  201. data/spec/groupdocs/signature/recipient_spec.rb +26 -26
  202. data/spec/groupdocs/signature/role_spec.rb +47 -47
  203. data/spec/groupdocs/signature/template_spec.rb +80 -80
  204. data/spec/groupdocs/signature_spec.rb +194 -194
  205. data/spec/groupdocs/storage/file_spec.rb +303 -303
  206. data/spec/groupdocs/storage/folder_spec.rb +270 -270
  207. data/spec/groupdocs/storage/package_spec.rb +38 -38
  208. data/spec/groupdocs/storage/provider_spec.rb +21 -21
  209. data/spec/groupdocs/storage_spec.rb +27 -27
  210. data/spec/groupdocs/subscription/limit_spec.rb +16 -16
  211. data/spec/groupdocs/subscription_spec.rb +74 -74
  212. data/spec/groupdocs/user_spec.rb +257 -257
  213. data/spec/groupdocs_spec.rb +63 -63
  214. data/spec/spec_helper.rb +73 -73
  215. data/spec/support/json/annotation_access_set.json +11 -11
  216. data/spec/support/json/annotation_collaborators_get.json +16 -16
  217. data/spec/support/json/annotation_collaborators_set.json +16 -16
  218. data/spec/support/json/annotation_create.json +12 -12
  219. data/spec/support/json/annotation_list.json +32 -32
  220. data/spec/support/json/annotation_marker_move.json +10 -10
  221. data/spec/support/json/annotation_move.json +8 -8
  222. data/spec/support/json/annotation_remove.json +9 -9
  223. data/spec/support/json/annotation_replies_create.json +9 -9
  224. data/spec/support/json/annotation_replies_get.json +25 -25
  225. data/spec/support/json/annotation_reviewers_get.json +18 -18
  226. data/spec/support/json/comparison_changes.json +46 -46
  227. data/spec/support/json/comparison_compare.json +8 -8
  228. data/spec/support/json/comparison_document.json +10 -10
  229. data/spec/support/json/contact_add.json +12 -12
  230. data/spec/support/json/contacts_get.json +19 -19
  231. data/spec/support/json/contacts_import.json +8 -8
  232. data/spec/support/json/datasource_add.json +8 -8
  233. data/spec/support/json/datasource_get.json +22 -22
  234. data/spec/support/json/datasource_remove.json +8 -8
  235. data/spec/support/json/datasource_update.json +8 -8
  236. data/spec/support/json/delete_account.json +9 -9
  237. data/spec/support/json/document_access_info_get.json +14 -14
  238. data/spec/support/json/document_convert.json +8 -8
  239. data/spec/support/json/document_datasource.json +10 -10
  240. data/spec/support/json/document_fields.json +34 -34
  241. data/spec/support/json/document_formats.json +8 -8
  242. data/spec/support/json/document_metadata.json +15 -15
  243. data/spec/support/json/document_page_images_get.json +20 -20
  244. data/spec/support/json/document_questionnaire_create.json +9 -9
  245. data/spec/support/json/document_questionnaires.json +23 -23
  246. data/spec/support/json/document_sharers_remove.json +8 -8
  247. data/spec/support/json/document_sharers_set.json +16 -16
  248. data/spec/support/json/document_thumbnails.json +24 -24
  249. data/spec/support/json/document_views.json +32 -32
  250. data/spec/support/json/envelope_get.json +46 -46
  251. data/spec/support/json/envelope_logs.json +16 -16
  252. data/spec/support/json/envelope_recipient_add.json +26 -26
  253. data/spec/support/json/envelopes_all.json +48 -48
  254. data/spec/support/json/envelopes_resources.json +31 -31
  255. data/spec/support/json/file_compress.json +8 -8
  256. data/spec/support/json/file_copy.json +14 -14
  257. data/spec/support/json/file_delete.json +5 -5
  258. data/spec/support/json/file_move.json +14 -14
  259. data/spec/support/json/file_upload.json +8 -8
  260. data/spec/support/json/folder_create.json +8 -8
  261. data/spec/support/json/folder_delete.json +5 -5
  262. data/spec/support/json/folder_list.json +22 -22
  263. data/spec/support/json/folder_move.json +8 -8
  264. data/spec/support/json/folder_sharers_get.json +16 -16
  265. data/spec/support/json/folder_sharers_remove.json +8 -8
  266. data/spec/support/json/folder_sharers_set.json +16 -16
  267. data/spec/support/json/form_get.json +21 -21
  268. data/spec/support/json/forms_all.json +23 -23
  269. data/spec/support/json/job_add_url.json +8 -8
  270. data/spec/support/json/job_create.json +8 -8
  271. data/spec/support/json/job_documents.json +40 -40
  272. data/spec/support/json/job_file_add.json +8 -8
  273. data/spec/support/json/job_get.json +30 -30
  274. data/spec/support/json/job_update.json +7 -7
  275. data/spec/support/json/jobs_get.json +58 -58
  276. data/spec/support/json/list_add.json +12 -12
  277. data/spec/support/json/lists_get.json +19 -19
  278. data/spec/support/json/package_create.json +7 -7
  279. data/spec/support/json/questionnaire_collector.json +17 -17
  280. data/spec/support/json/questionnaire_collectors.json +38 -38
  281. data/spec/support/json/questionnaire_collectors_add.json +10 -10
  282. data/spec/support/json/questionnaire_create.json +10 -10
  283. data/spec/support/json/questionnaire_datasources.json +26 -26
  284. data/spec/support/json/questionnaire_execution_add.json +9 -9
  285. data/spec/support/json/questionnaire_execution_status_set.json +8 -8
  286. data/spec/support/json/questionnaire_execution_update.json +8 -8
  287. data/spec/support/json/questionnaire_executions.json +28 -28
  288. data/spec/support/json/questionnaire_get.json +17 -17
  289. data/spec/support/json/questionnaire_remove.json +8 -8
  290. data/spec/support/json/questionnaire_update.json +8 -8
  291. data/spec/support/json/questionnaires_get.json +40 -40
  292. data/spec/support/json/sign_documents.json +16 -16
  293. data/spec/support/json/signature_create.json +12 -12
  294. data/spec/support/json/signature_field_add.json +25 -25
  295. data/spec/support/json/signature_fields_get.json +27 -27
  296. data/spec/support/json/signature_roles_get.json +17 -17
  297. data/spec/support/json/signatures_get.json +19 -19
  298. data/spec/support/json/storage_info.json +10 -10
  299. data/spec/support/json/subscription_plan_get.json +9 -9
  300. data/spec/support/json/subscription_plans_get.json +17 -17
  301. data/spec/support/json/template_get.json +35 -35
  302. data/spec/support/json/template_get_documents.json +15 -15
  303. data/spec/support/json/template_get_recipients.json +20 -20
  304. data/spec/support/json/templates_all.json +37 -37
  305. data/spec/support/json/templates_get.json +21 -21
  306. data/spec/support/json/update_account.json +10 -10
  307. data/spec/support/json/user_area.json +67 -67
  308. data/spec/support/json/user_embed_key.json +38 -38
  309. data/spec/support/json/user_get_embed_key.json +67 -67
  310. data/spec/support/json/user_login.json +67 -67
  311. data/spec/support/json/user_profile_get.json +24 -24
  312. data/spec/support/json/user_providers.json +31 -31
  313. data/spec/support/json/user_roles.json +25 -25
  314. data/spec/support/json/user_users_get.json +27 -27
  315. data/spec/support/shared_examples/api/entity.rb +39 -39
  316. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
  317. data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
  318. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
  319. data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
  320. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
  321. data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
  322. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
  323. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
  324. metadata +35 -55
@@ -1,530 +1,530 @@
1
- module GroupDocs
2
- class Questionnaire < Api::Entity
3
-
4
- require 'groupdocs/questionnaire/collector'
5
- require 'groupdocs/questionnaire/execution'
6
- require 'groupdocs/questionnaire/page'
7
- require 'groupdocs/questionnaire/question'
8
- require 'groupdocs/questionnaire/collector_style'
9
-
10
-
11
- include Api::Helpers::Status
12
-
13
- #
14
- # Returns an array of all questionnaires.
15
- #
16
- # @param [Hash] options Hash of options
17
- # @option options [Symbol] :status Filter questionnaires by status
18
- # @option options [Integer] :page_number Page to start with
19
- # @option options [Integer] :page_size How many items to list
20
- # @option options [String] :orderBy Order by column (optional)
21
- # @option options [Bool] :isAscending Order by ascending or descending (optional)
22
- # @param [Hash] access Access credentials
23
- # @option access [String] :client_id
24
- # @option access [String] :private_key
25
- # @return [Array<GroupDocs::Questionnaire>]
26
- #
27
- def self.all!(options = {}, access = {})
28
- if options[:status]
29
- # TODO find better way to parse status
30
- options[:status] = new.send(:parse_status, options[:status])
31
- end
32
-
33
- api = Api::Request.new do |request|
34
- request[:access] = access
35
- request[:method] = :GET
36
- request[:path] = '/merge/{{client_id}}/questionnaires'
37
- end
38
- api.add_params(options)
39
- json = api.execute!
40
-
41
- json[:questionnaires].map do |questionnaire|
42
- new(questionnaire)
43
- end
44
- end
45
-
46
- #
47
- # Returns questionnaire by identifier.
48
- #
49
- # @param [Integer] id
50
- # @param [Hash] access Access credentials
51
- # @option access [String] :client_id
52
- # @option access [String] :private_key
53
- # @return [GroupDocs::Questionnaire, nil]
54
- #
55
- def self.get!(id, access = {})
56
- json = Api::Request.new do |request|
57
- request[:access] = access
58
- request[:method] = :GET
59
- request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
60
- end.execute!
61
-
62
- new(json[:questionnaire])
63
- rescue RestClient::ResourceNotFound
64
- nil
65
- end
66
-
67
- # @attr [Integer] id
68
- attr_accessor :id
69
- # @attr [String] guid
70
- attr_accessor :guid
71
- # @attr [String] name
72
- attr_accessor :name
73
- # @attr [Symbol] status
74
- attr_accessor :status
75
- # @attr [String] descr
76
- attr_accessor :descr
77
- # @attr [Array<GroupDocs::Questionnaire::Page>] pages
78
- attr_accessor :pages
79
- # @attr [Integer] resolved_executions
80
- attr_accessor :resolved_executions
81
- # @attr [Integer] assigned_questions
82
- attr_accessor :assigned_questions
83
- # @attr [Integer] total_questions
84
- attr_accessor :total_questions
85
- # @attr [Integer] modified
86
- attr_accessor :modified
87
- # @attr [Integer] expires
88
- attr_accessor :expires
89
- # @attr [Array<String>] document_ids
90
- attr_accessor :document_ids
91
-
92
- # added in release 1.5.8
93
- #
94
- # @attr [Array<String>] formats
95
- attr_accessor :formats
96
- # @attr [String] folder
97
- attr_accessor :folder
98
- # @attr [String] emails
99
- attr_accessor :emails
100
- # @attr [String] output_format
101
- attr_accessor :output_format
102
- # @attr [Boolean] open_on_completion
103
- attr_accessor :open_on_completion
104
- # @attr [Integer] allowed_operations
105
- attr_accessor :allowed_operations
106
-
107
- # added in release 1.6.0
108
- # @attr [Integer] totalCount
109
- attr_accessor :totalCount
110
-
111
-
112
- # Human-readable accessors
113
- alias_accessor :description, :descr
114
-
115
- # added in release 1.6.0
116
- alias_accessor :total_count, :totalCount
117
-
118
- #
119
- # Converts each page to GroupDocs::Questionnaire::Page object.
120
- #
121
- # @param [Array<GroupDocs::Questionnaire::Page, Hash>] pages
122
- #
123
- def pages=(pages)
124
- if pages
125
- @pages = pages.map do |page|
126
- if page.is_a?(GroupDocs::Questionnaire::Page)
127
- page
128
- else
129
- Questionnaire::Page.new(page)
130
- end
131
- end
132
- end
133
- end
134
-
135
-
136
-
137
- #
138
- # Converts status to human-readable format.
139
- #
140
- # @return [Symbol]
141
- #
142
- def status
143
- parse_status(@status)
144
- end
145
-
146
- #
147
- # Adds page to questionnaire.
148
- #
149
- # @param [GroupDocs::Questionnaire::Page] page
150
- # @raise [ArgumentError] if page is not GroupDocs::Questionnaire::Page object
151
- #
152
- def add_page(page)
153
- page.is_a?(GroupDocs::Questionnaire::Page) or raise ArgumentError,
154
- "Page should be GroupDocs::Questionnaire::Page object, received: #{page.inspect}"
155
-
156
- @pages ||= Array.new
157
- @pages << page
158
- end
159
-
160
-
161
- #
162
- # Creates questionnaire.
163
- #
164
- # @example
165
- #
166
- # questionnaire = GroupDocs::Questionnaire.new()
167
- # pages = GroupDocs::Questionnaire::Page.new()
168
- # questions = GroupDocs::Questionnaire::Question.new()
169
- # answer = GroupDocs::Questionnaire::Question::Answer.new()
170
- # questions.answers = [answer]
171
- # conditions = GroupDocs::Questionnaire::Question::Conditions.new()
172
- # questions.conditions = [conditions]
173
- # pages.questions = [questions]
174
- # questionnaire.pages = [pages]
175
- # questionnaire.create!
176
- #
177
- # @param [Hash] access Access credentials
178
- # @option access [String] :client_id
179
- # @option access [String] :private_key
180
- #
181
- def create!(access = {})
182
- json = Api::Request.new do |request|
183
- request[:access] = access
184
- request[:method] = :POST
185
- request[:path] = '/merge/{{client_id}}/questionnaires'
186
- request[:request_body] = to_hash
187
- end.execute!
188
-
189
- self.id = json[:questionnaire_id]
190
- self.guid = json[:questionnaire_guid]
191
- self.name = json[:adjusted_name]
192
- end
193
-
194
- #
195
- # Updates questionnaire.
196
- #
197
- # @param [Hash] access Access credentials
198
- # @option access [String] :client_id
199
- # @option access [String] :private_key
200
- #
201
- def update!(access = {})
202
- Api::Request.new do |request|
203
- request[:access] = access
204
- request[:method] = :PUT
205
- request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
206
- request[:request_body] = to_hash
207
- end.execute!
208
- end
209
-
210
- #
211
- # Removes questionnaire.
212
- #
213
- # @param [Hash] access Access credentials
214
- # @option access [String] :client_id
215
- # @option access [String] :private_key
216
- #
217
- def remove!(access = {})
218
- Api::Request.new do |request|
219
- request[:access] = access
220
- request[:method] = :DELETE
221
- request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
222
- end.execute!
223
- # TODO: fix this in API - http://scotland.groupdocs.com/jira/browse/CORE-391
224
- rescue RestClient::BadRequest
225
- nil
226
- end
227
-
228
- #
229
- # Returns array of datasources for questionnaire.
230
- #
231
- # @param [Hash] access Access credentials
232
- # @option access [String] :client_id
233
- # @option access [String] :private_key
234
- # @return [Array<GroupDocs::DataSource>]
235
- #
236
- def datasources!(access = {})
237
- json = Api::Request.new do |request|
238
- request[:access] = access
239
- request[:method] = :GET
240
- request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/datasources"
241
- end.execute!
242
-
243
- json[:datasources].map do |datasource|
244
- DataSource.new(datasource)
245
- end
246
- end
247
-
248
- #
249
- # Returns an array of questionnaire executions.
250
- #
251
- # @param [Hash] access Access credentials
252
- # @option access [String] :client_id
253
- # @option access [String] :private_key
254
- # @return [Array<GroupDocs::Questionnaire::Execution>]
255
- #
256
- def executions!(access = {})
257
- json = Api::Request.new do |request|
258
- request[:access] = access
259
- request[:method] = :GET
260
- request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/executions"
261
- end.execute!
262
-
263
- json[:executions].map do |execution|
264
- Execution.new(execution)
265
- end
266
- end
267
-
268
- #
269
- # Changed in release 1.5.8
270
- #
271
- #
272
- # Returns an array of questionnaire collectors.
273
- #
274
- #
275
- # @param [Hash] options Options
276
- # @option options [String] :orderBy Order by column (required)
277
- # @option options [Boolean] :isAsc Order by ascending or descending (required)
278
- # @param [Hash] access Access credentials
279
- # @option access [String] :client_id
280
- # @option access [String] :private_key
281
- # @return [Array<GroupDocs::Questionnaire::Collector>]
282
- #
283
- def collectors!(options = {}, access = {})
284
- api = Api::Request.new do |request|
285
- request[:access] = access
286
- request[:method] = :GET
287
- request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/collectors"
288
- end
289
- api.add_params(options)
290
- json = api.execute!
291
-
292
- json[:collectors].map do |collector|
293
- collector.merge!(:questionnaire => self)
294
- Collector.new(collector)
295
- end
296
- end
297
-
298
- #
299
- # Returns questionnaire metadata.
300
- #
301
- # @param [Hash] access Access credentials
302
- # @option access [String] :client_id
303
- # @option access [String] :private_key
304
- # @return [GroupDocs::Questionnaire]
305
- #
306
- def metadata!(access = {})
307
- json = Api::Request.new do |request|
308
- request[:access] = access
309
- request[:method] = :GET
310
- request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
311
- end.execute!
312
-
313
- Questionnaire.new(json[:questionnaire])
314
- end
315
-
316
- #
317
- # Updates questionnaire metadata.
318
- #
319
- # @example
320
- # questionnaire = GroupDocs::Questionnaire.get!(1)
321
- # metadata = questionnaire.metadata!
322
- # metadata.name = 'New questionnaire name'
323
- # questionnaire.update_metadata! metadata
324
- #
325
- # @param [Hash] access Access credentials
326
- # @option access [String] :client_id
327
- # @option access [String] :private_key
328
- # @raise [ArgumentError] if metadata is not GroupDocs::Questionnaire
329
- #
330
- def update_metadata!(metadata, access = {})
331
- metadata.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
332
- "Metadata should be GroupDocs::Questionnaire object, received: #{metadata.inspect}"
333
-
334
- Api::Request.new do |request|
335
- request[:access] = access
336
- request[:method] = :PUT
337
- request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
338
- request[:request_body] = metadata.to_hash
339
- end.execute!
340
- end
341
-
342
- #
343
- # Returns an array of document fields for questionnaire.
344
- #
345
- # @param [Hash] access Access credentials
346
- # @option access [String] :client_id
347
- # @option access [String] :private_key
348
- # @return [Array<GroupDocs::Document::Field>]
349
- #
350
- def fields!(access = {})
351
- api = Api::Request.new do |request|
352
- request[:access] = access
353
- request[:method] = :GET
354
- request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/fields"
355
- end
356
- api.add_params(:include_geometry => true)
357
- json = api.execute!
358
-
359
- json[:fields].map do |field|
360
- Document::Field.new(field)
361
- end
362
- end
363
-
364
- #
365
- # Changed in release 1.5.8
366
- #
367
- # Copy file to given path.
368
- #
369
- # @param [String] path (required)
370
- # @param [String] mode Mode (optional)
371
- # @param [Hash] options
372
- # @option options [String] name
373
- # @param [Hash] access Access credentials
374
- # @option access [String] :client_id
375
- # @option access [String] :private_key
376
- # @return [Array] Templates
377
- #
378
- def copy_to_templates!(path, mode, options = {}, access = {})
379
- options[:name] ||= name
380
- path = prepare_path("#{path}/#{options[:name]}")
381
-
382
- api = Api::Request.new do |request|
383
- request[:access] = access
384
- request[:method] = :PUT
385
- request[:headers] = { :'Groupdocs-Copy' => id }
386
- request[:path] = "/merge/{{client_id}}/files/#{path}"
387
- end
388
- api.add_params(:mode => mode)
389
- json = api.execute!
390
-
391
- json[:templates]
392
- end
393
-
394
-
395
- #
396
- # Added in release 1.5.8
397
- #
398
- # Get associated document by questionnaire
399
- #
400
- # @param [Hash] access Access credentials
401
- # @option access [String] :client_id
402
- # @option access [String] :private_key
403
- #
404
- def get_document!(access = {})
405
- Api::Request.new do |request|
406
- request[:access] = access
407
- request[:method] = :GET
408
- request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/document"
409
- end.execute!
410
- end
411
-
412
- #
413
- # Added in release 1.5.8
414
- #
415
- # Returns an array of questionnaires by name.
416
- #
417
- # @param [Hash] options Hash of options
418
- # @option options [String] :name Questionnaire name
419
- # @option options [Symbol] :status Filter questionnaires by status
420
- # @option options [Integer] :page_number Page to start with
421
- # @option options [Integer] :page_size How many items to list
422
- # @option options [String] :orderBy Order by column (optional)
423
- # @option options [Bool] :isAscending Order by ascending or descending (optional)
424
- # @param [Hash] access Access credentials
425
- # @option access [String] :client_id
426
- # @option access [String] :private_key
427
- # @return [Array<GroupDocs::Questionnaire>]
428
- #
429
- def self.get_by_name!(options = {}, access = {})
430
- if options[:status]
431
- # TODO find better way to parse status
432
- options[:status] = new.send(:parse_status, options[:status])
433
- end
434
-
435
- api = Api::Request.new do |request|
436
- request[:access] = access
437
- request[:method] = :GET
438
- request[:path] = '/merge/{{client_id}}/questionnaires/filter'
439
- end
440
-
441
- api.add_params(options)
442
- json = api.execute!
443
-
444
- json[:questionnaires].map do |questionnaire|
445
- new(questionnaire)
446
- end
447
- end
448
-
449
- #
450
- # Added in release 1.5.8
451
- #
452
- # Delete list of questionnaires by GUIDs.
453
- #
454
- # @param [Hash] access Access credentials
455
- # @option guids [Array<String>] List of Questionnaires Guid
456
- # @option access [String] :client_id
457
- # @option access [String] :private_key
458
- #
459
- def delete_list!(guids, access = {})
460
- api = Api::Request.new do |request|
461
- request[:access] = access
462
- request[:method] = :DELETE
463
- request[:path] = "/merge/{{client_id}}/questionnaires/list"
464
- request[:request_body] = guids
465
- end
466
-
467
- api.execute!
468
- end
469
-
470
- #
471
- # Added in release 1.5.8
472
- #
473
- # Removes questionnaire collector.
474
- #
475
- # @param [Hash] access Access credentials
476
- # @option collectors [Array<String>] List of Collectors Guid
477
- # @option access [String] :client_id
478
- # @option access [String] :private_key
479
- #
480
- def delete_collectors_list!(collectors, access = {})
481
- Api::Request.new do |request|
482
- request[:access] = access
483
- request[:method] = :DELETE
484
- request[:path] = "/merge/{{client_id}}/questionnaires/collectors/list"
485
- request[:request_body] = collectors
486
- end.execute!
487
- end
488
-
489
- #
490
- # Added in release 1.5.8
491
- #
492
- # Removes questionnaire execution.
493
- #
494
- # @param [Hash] access Access credentials
495
- # @option executions [Array<String>] List of Executions Guid
496
- # @option access [String] :client_id
497
- # @option access [String] :private_key
498
- #
499
- def delete_executions_list!(executions, access = {})
500
- Api::Request.new do |request|
501
- request[:access] = access
502
- request[:method] = :DELETE
503
- request[:path] = "/merge/{{client_id}}/questionnaires/executions/list"
504
- request[:request_body] = executions
505
- end.execute!
506
- end
507
-
508
- #
509
- # Added in release 1.5.8
510
- #
511
- # Delete list of datasource fields.
512
- #
513
- # @param [Hash] access Access credentials
514
- # @option datasource [Array<String>] List of Datasources Guid
515
- # @option access [String] :client_id
516
- # @option access [String] :private_key
517
- #
518
- def delete_datasources_list!(datasources, access = {})
519
- Api::Request.new do |request|
520
- request[:access] = access
521
- request[:method] = :DELETE
522
- request[:path] = "/merge/{{client_id}}datasources/list"
523
- request[:request_body] = datasources
524
- end.execute!
525
- end
526
-
527
-
528
-
529
- end # Questionnaire
530
- end # GroupDocs
1
+ module GroupDocs
2
+ class Questionnaire < Api::Entity
3
+
4
+ require 'groupdocs/questionnaire/collector'
5
+ require 'groupdocs/questionnaire/execution'
6
+ require 'groupdocs/questionnaire/page'
7
+ require 'groupdocs/questionnaire/question'
8
+ require 'groupdocs/questionnaire/collector_style'
9
+
10
+
11
+ include Api::Helpers::Status
12
+
13
+ #
14
+ # Returns an array of all questionnaires.
15
+ #
16
+ # @param [Hash] options Hash of options
17
+ # @option options [Symbol] :status Filter questionnaires by status
18
+ # @option options [Integer] :page_number Page to start with
19
+ # @option options [Integer] :page_size How many items to list
20
+ # @option options [String] :orderBy Order by column (optional)
21
+ # @option options [Bool] :isAscending Order by ascending or descending (optional)
22
+ # @param [Hash] access Access credentials
23
+ # @option access [String] :client_id
24
+ # @option access [String] :private_key
25
+ # @return [Array<GroupDocs::Questionnaire>]
26
+ #
27
+ def self.all!(options = {}, access = {})
28
+ if options[:status]
29
+ # TODO find better way to parse status
30
+ options[:status] = new.send(:parse_status, options[:status])
31
+ end
32
+
33
+ api = Api::Request.new do |request|
34
+ request[:access] = access
35
+ request[:method] = :GET
36
+ request[:path] = '/merge/{{client_id}}/questionnaires'
37
+ end
38
+ api.add_params(options)
39
+ json = api.execute!
40
+
41
+ json[:questionnaires].map do |questionnaire|
42
+ new(questionnaire)
43
+ end
44
+ end
45
+
46
+ #
47
+ # Returns questionnaire by identifier.
48
+ #
49
+ # @param [Integer] id
50
+ # @param [Hash] access Access credentials
51
+ # @option access [String] :client_id
52
+ # @option access [String] :private_key
53
+ # @return [GroupDocs::Questionnaire, nil]
54
+ #
55
+ def self.get!(id, access = {})
56
+ json = Api::Request.new do |request|
57
+ request[:access] = access
58
+ request[:method] = :GET
59
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
60
+ end.execute!
61
+
62
+ new(json[:questionnaire])
63
+ rescue RestClient::ResourceNotFound
64
+ nil
65
+ end
66
+
67
+ # @attr [Integer] id
68
+ attr_accessor :id
69
+ # @attr [String] guid
70
+ attr_accessor :guid
71
+ # @attr [String] name
72
+ attr_accessor :name
73
+ # @attr [Symbol] status
74
+ attr_accessor :status
75
+ # @attr [String] descr
76
+ attr_accessor :descr
77
+ # @attr [Array<GroupDocs::Questionnaire::Page>] pages
78
+ attr_accessor :pages
79
+ # @attr [Integer] resolved_executions
80
+ attr_accessor :resolved_executions
81
+ # @attr [Integer] assigned_questions
82
+ attr_accessor :assigned_questions
83
+ # @attr [Integer] total_questions
84
+ attr_accessor :total_questions
85
+ # @attr [Integer] modified
86
+ attr_accessor :modified
87
+ # @attr [Integer] expires
88
+ attr_accessor :expires
89
+ # @attr [Array<String>] document_ids
90
+ attr_accessor :document_ids
91
+
92
+ # added in release 1.5.8
93
+ #
94
+ # @attr [Array<String>] formats
95
+ attr_accessor :formats
96
+ # @attr [String] folder
97
+ attr_accessor :folder
98
+ # @attr [String] emails
99
+ attr_accessor :emails
100
+ # @attr [String] output_format
101
+ attr_accessor :output_format
102
+ # @attr [Boolean] open_on_completion
103
+ attr_accessor :open_on_completion
104
+ # @attr [Integer] allowed_operations
105
+ attr_accessor :allowed_operations
106
+
107
+ # added in release 1.6.0
108
+ # @attr [Integer] totalCount
109
+ attr_accessor :totalCount
110
+
111
+
112
+ # Human-readable accessors
113
+ alias_accessor :description, :descr
114
+
115
+ # added in release 1.6.0
116
+ alias_accessor :total_count, :totalCount
117
+
118
+ #
119
+ # Converts each page to GroupDocs::Questionnaire::Page object.
120
+ #
121
+ # @param [Array<GroupDocs::Questionnaire::Page, Hash>] pages
122
+ #
123
+ def pages=(pages)
124
+ if pages
125
+ @pages = pages.map do |page|
126
+ if page.is_a?(GroupDocs::Questionnaire::Page)
127
+ page
128
+ else
129
+ Questionnaire::Page.new(page)
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+
136
+
137
+ #
138
+ # Converts status to human-readable format.
139
+ #
140
+ # @return [Symbol]
141
+ #
142
+ def status
143
+ parse_status(@status)
144
+ end
145
+
146
+ #
147
+ # Adds page to questionnaire.
148
+ #
149
+ # @param [GroupDocs::Questionnaire::Page] page
150
+ # @raise [ArgumentError] if page is not GroupDocs::Questionnaire::Page object
151
+ #
152
+ def add_page(page)
153
+ page.is_a?(GroupDocs::Questionnaire::Page) or raise ArgumentError,
154
+ "Page should be GroupDocs::Questionnaire::Page object, received: #{page.inspect}"
155
+
156
+ @pages ||= Array.new
157
+ @pages << page
158
+ end
159
+
160
+
161
+ #
162
+ # Creates questionnaire.
163
+ #
164
+ # @example
165
+ #
166
+ # questionnaire = GroupDocs::Questionnaire.new()
167
+ # pages = GroupDocs::Questionnaire::Page.new()
168
+ # questions = GroupDocs::Questionnaire::Question.new()
169
+ # answer = GroupDocs::Questionnaire::Question::Answer.new()
170
+ # questions.answers = [answer]
171
+ # conditions = GroupDocs::Questionnaire::Question::Conditions.new()
172
+ # questions.conditions = [conditions]
173
+ # pages.questions = [questions]
174
+ # questionnaire.pages = [pages]
175
+ # questionnaire.create!
176
+ #
177
+ # @param [Hash] access Access credentials
178
+ # @option access [String] :client_id
179
+ # @option access [String] :private_key
180
+ #
181
+ def create!(access = {})
182
+ json = Api::Request.new do |request|
183
+ request[:access] = access
184
+ request[:method] = :POST
185
+ request[:path] = '/merge/{{client_id}}/questionnaires'
186
+ request[:request_body] = to_hash
187
+ end.execute!
188
+
189
+ self.id = json[:questionnaire_id]
190
+ self.guid = json[:questionnaire_guid]
191
+ self.name = json[:adjusted_name]
192
+ end
193
+
194
+ #
195
+ # Updates questionnaire.
196
+ #
197
+ # @param [Hash] access Access credentials
198
+ # @option access [String] :client_id
199
+ # @option access [String] :private_key
200
+ #
201
+ def update!(access = {})
202
+ Api::Request.new do |request|
203
+ request[:access] = access
204
+ request[:method] = :PUT
205
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
206
+ request[:request_body] = to_hash
207
+ end.execute!
208
+ end
209
+
210
+ #
211
+ # Removes questionnaire.
212
+ #
213
+ # @param [Hash] access Access credentials
214
+ # @option access [String] :client_id
215
+ # @option access [String] :private_key
216
+ #
217
+ def remove!(access = {})
218
+ Api::Request.new do |request|
219
+ request[:access] = access
220
+ request[:method] = :DELETE
221
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
222
+ end.execute!
223
+ # TODO: fix this in API - http://scotland.groupdocs.com/jira/browse/CORE-391
224
+ rescue RestClient::BadRequest
225
+ nil
226
+ end
227
+
228
+ #
229
+ # Returns array of datasources for questionnaire.
230
+ #
231
+ # @param [Hash] access Access credentials
232
+ # @option access [String] :client_id
233
+ # @option access [String] :private_key
234
+ # @return [Array<GroupDocs::DataSource>]
235
+ #
236
+ def datasources!(access = {})
237
+ json = Api::Request.new do |request|
238
+ request[:access] = access
239
+ request[:method] = :GET
240
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/datasources"
241
+ end.execute!
242
+
243
+ json[:datasources].map do |datasource|
244
+ DataSource.new(datasource)
245
+ end
246
+ end
247
+
248
+ #
249
+ # Returns an array of questionnaire executions.
250
+ #
251
+ # @param [Hash] access Access credentials
252
+ # @option access [String] :client_id
253
+ # @option access [String] :private_key
254
+ # @return [Array<GroupDocs::Questionnaire::Execution>]
255
+ #
256
+ def executions!(access = {})
257
+ json = Api::Request.new do |request|
258
+ request[:access] = access
259
+ request[:method] = :GET
260
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/executions"
261
+ end.execute!
262
+
263
+ json[:executions].map do |execution|
264
+ Execution.new(execution)
265
+ end
266
+ end
267
+
268
+ #
269
+ # Changed in release 1.5.8
270
+ #
271
+ #
272
+ # Returns an array of questionnaire collectors.
273
+ #
274
+ #
275
+ # @param [Hash] options Options
276
+ # @option options [String] :orderBy Order by column (required)
277
+ # @option options [Boolean] :isAsc Order by ascending or descending (required)
278
+ # @param [Hash] access Access credentials
279
+ # @option access [String] :client_id
280
+ # @option access [String] :private_key
281
+ # @return [Array<GroupDocs::Questionnaire::Collector>]
282
+ #
283
+ def collectors!(options = {}, access = {})
284
+ api = Api::Request.new do |request|
285
+ request[:access] = access
286
+ request[:method] = :GET
287
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/collectors"
288
+ end
289
+ api.add_params(options)
290
+ json = api.execute!
291
+
292
+ json[:collectors].map do |collector|
293
+ collector.merge!(:questionnaire => self)
294
+ Collector.new(collector)
295
+ end
296
+ end
297
+
298
+ #
299
+ # Returns questionnaire metadata.
300
+ #
301
+ # @param [Hash] access Access credentials
302
+ # @option access [String] :client_id
303
+ # @option access [String] :private_key
304
+ # @return [GroupDocs::Questionnaire]
305
+ #
306
+ def metadata!(access = {})
307
+ json = Api::Request.new do |request|
308
+ request[:access] = access
309
+ request[:method] = :GET
310
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
311
+ end.execute!
312
+
313
+ Questionnaire.new(json[:questionnaire])
314
+ end
315
+
316
+ #
317
+ # Updates questionnaire metadata.
318
+ #
319
+ # @example
320
+ # questionnaire = GroupDocs::Questionnaire.get!(1)
321
+ # metadata = questionnaire.metadata!
322
+ # metadata.name = 'New questionnaire name'
323
+ # questionnaire.update_metadata! metadata
324
+ #
325
+ # @param [Hash] access Access credentials
326
+ # @option access [String] :client_id
327
+ # @option access [String] :private_key
328
+ # @raise [ArgumentError] if metadata is not GroupDocs::Questionnaire
329
+ #
330
+ def update_metadata!(metadata, access = {})
331
+ metadata.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
332
+ "Metadata should be GroupDocs::Questionnaire object, received: #{metadata.inspect}"
333
+
334
+ Api::Request.new do |request|
335
+ request[:access] = access
336
+ request[:method] = :PUT
337
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/metadata"
338
+ request[:request_body] = metadata.to_hash
339
+ end.execute!
340
+ end
341
+
342
+ #
343
+ # Returns an array of document fields for questionnaire.
344
+ #
345
+ # @param [Hash] access Access credentials
346
+ # @option access [String] :client_id
347
+ # @option access [String] :private_key
348
+ # @return [Array<GroupDocs::Document::Field>]
349
+ #
350
+ def fields!(access = {})
351
+ api = Api::Request.new do |request|
352
+ request[:access] = access
353
+ request[:method] = :GET
354
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{guid}/fields"
355
+ end
356
+ api.add_params(:include_geometry => true)
357
+ json = api.execute!
358
+
359
+ json[:fields].map do |field|
360
+ Document::Field.new(field)
361
+ end
362
+ end
363
+
364
+ #
365
+ # Changed in release 1.5.8
366
+ #
367
+ # Copy file to given path.
368
+ #
369
+ # @param [String] path (required)
370
+ # @param [String] mode Mode (optional)
371
+ # @param [Hash] options
372
+ # @option options [String] name
373
+ # @param [Hash] access Access credentials
374
+ # @option access [String] :client_id
375
+ # @option access [String] :private_key
376
+ # @return [Array] Templates
377
+ #
378
+ def copy_to_templates!(path, mode, options = {}, access = {})
379
+ options[:name] ||= name
380
+ path = prepare_path("#{path}/#{options[:name]}")
381
+
382
+ api = Api::Request.new do |request|
383
+ request[:access] = access
384
+ request[:method] = :PUT
385
+ request[:headers] = { :'Groupdocs-Copy' => id }
386
+ request[:path] = "/merge/{{client_id}}/files/#{path}"
387
+ end
388
+ api.add_params(:mode => mode)
389
+ json = api.execute!
390
+
391
+ json[:templates]
392
+ end
393
+
394
+
395
+ #
396
+ # Added in release 1.5.8
397
+ #
398
+ # Get associated document by questionnaire
399
+ #
400
+ # @param [Hash] access Access credentials
401
+ # @option access [String] :client_id
402
+ # @option access [String] :private_key
403
+ #
404
+ def get_document!(access = {})
405
+ Api::Request.new do |request|
406
+ request[:access] = access
407
+ request[:method] = :GET
408
+ request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/document"
409
+ end.execute!
410
+ end
411
+
412
+ #
413
+ # Added in release 1.5.8
414
+ #
415
+ # Returns an array of questionnaires by name.
416
+ #
417
+ # @param [Hash] options Hash of options
418
+ # @option options [String] :name Questionnaire name
419
+ # @option options [Symbol] :status Filter questionnaires by status
420
+ # @option options [Integer] :page_number Page to start with
421
+ # @option options [Integer] :page_size How many items to list
422
+ # @option options [String] :orderBy Order by column (optional)
423
+ # @option options [Bool] :isAscending Order by ascending or descending (optional)
424
+ # @param [Hash] access Access credentials
425
+ # @option access [String] :client_id
426
+ # @option access [String] :private_key
427
+ # @return [Array<GroupDocs::Questionnaire>]
428
+ #
429
+ def self.get_by_name!(options = {}, access = {})
430
+ if options[:status]
431
+ # TODO find better way to parse status
432
+ options[:status] = new.send(:parse_status, options[:status])
433
+ end
434
+
435
+ api = Api::Request.new do |request|
436
+ request[:access] = access
437
+ request[:method] = :GET
438
+ request[:path] = '/merge/{{client_id}}/questionnaires/filter'
439
+ end
440
+
441
+ api.add_params(options)
442
+ json = api.execute!
443
+
444
+ json[:questionnaires].map do |questionnaire|
445
+ new(questionnaire)
446
+ end
447
+ end
448
+
449
+ #
450
+ # Added in release 1.5.8
451
+ #
452
+ # Delete list of questionnaires by GUIDs.
453
+ #
454
+ # @param [Hash] access Access credentials
455
+ # @option guids [Array<String>] List of Questionnaires Guid
456
+ # @option access [String] :client_id
457
+ # @option access [String] :private_key
458
+ #
459
+ def delete_list!(guids, access = {})
460
+ api = Api::Request.new do |request|
461
+ request[:access] = access
462
+ request[:method] = :DELETE
463
+ request[:path] = "/merge/{{client_id}}/questionnaires/list"
464
+ request[:request_body] = guids
465
+ end
466
+
467
+ api.execute!
468
+ end
469
+
470
+ #
471
+ # Added in release 1.5.8
472
+ #
473
+ # Removes questionnaire collector.
474
+ #
475
+ # @param [Hash] access Access credentials
476
+ # @option collectors [Array<String>] List of Collectors Guid
477
+ # @option access [String] :client_id
478
+ # @option access [String] :private_key
479
+ #
480
+ def delete_collectors_list!(collectors, access = {})
481
+ Api::Request.new do |request|
482
+ request[:access] = access
483
+ request[:method] = :DELETE
484
+ request[:path] = "/merge/{{client_id}}/questionnaires/collectors/list"
485
+ request[:request_body] = collectors
486
+ end.execute!
487
+ end
488
+
489
+ #
490
+ # Added in release 1.5.8
491
+ #
492
+ # Removes questionnaire execution.
493
+ #
494
+ # @param [Hash] access Access credentials
495
+ # @option executions [Array<String>] List of Executions Guid
496
+ # @option access [String] :client_id
497
+ # @option access [String] :private_key
498
+ #
499
+ def delete_executions_list!(executions, access = {})
500
+ Api::Request.new do |request|
501
+ request[:access] = access
502
+ request[:method] = :DELETE
503
+ request[:path] = "/merge/{{client_id}}/questionnaires/executions/list"
504
+ request[:request_body] = executions
505
+ end.execute!
506
+ end
507
+
508
+ #
509
+ # Added in release 1.5.8
510
+ #
511
+ # Delete list of datasource fields.
512
+ #
513
+ # @param [Hash] access Access credentials
514
+ # @option datasource [Array<String>] List of Datasources Guid
515
+ # @option access [String] :client_id
516
+ # @option access [String] :private_key
517
+ #
518
+ def delete_datasources_list!(datasources, access = {})
519
+ Api::Request.new do |request|
520
+ request[:access] = access
521
+ request[:method] = :DELETE
522
+ request[:path] = "/merge/{{client_id}}datasources/list"
523
+ request[:request_body] = datasources
524
+ end.execute!
525
+ end
526
+
527
+
528
+
529
+ end # Questionnaire
530
+ end # GroupDocs