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,71 +1,71 @@
1
- module GroupDocs
2
- class Signature::Field::Location < Api::Entity
3
-
4
- # @attr [String] id
5
- attr_accessor :id
6
- # @attr [String] documentId
7
- attr_accessor :documentId
8
- # @attr [String] fieldId
9
- attr_accessor :fieldId
10
- # @attr [Integer] page (required)
11
- attr_accessor :page
12
- # @attr [Float] locationX (required)
13
- attr_accessor :locationX
14
- # @attr [Float] locationY (required)
15
- attr_accessor :locationY
16
- # @attr [Float] locationWidth (required)
17
- attr_accessor :locationWidth
18
- # @attr [Float] locationHeight (required)
19
- attr_accessor :locationHeight
20
- # @attr [String] fontName
21
- attr_accessor :fontName
22
- # @attr [String] fontColor
23
- attr_accessor :fontColor
24
- # @attr [Integer] fontSize
25
- attr_accessor :fontSize
26
- # @attr [Boolean] fontBold
27
- attr_accessor :fontBold
28
- # @attr [Boolean] fontItalic
29
- attr_accessor :fontItalic
30
- # @attr [Boolean] fontUnderline
31
- attr_accessor :fontUnderline
32
- # @attr [Boolean] forceNewField
33
- attr_accessor :forceNewField
34
- # @attr [String] page
35
- attr_accessor :page
36
-
37
- # added in realise 1.5.8
38
- # @attr [Integer] pageWidth
39
- attr_accessor :pageWidth
40
- # @attr [Integer] pageHeight
41
- attr_accessor :pageHeight
42
- # @attr [Integer] align
43
- attr_accessor :align
44
-
45
-
46
- # Human-readable accessors
47
- alias_accessor :document_id, :documentId
48
- alias_accessor :field_id, :fieldId
49
- alias_accessor :location_x, :locationX
50
- alias_accessor :x, :locationX
51
- alias_accessor :location_y, :locationY
52
- alias_accessor :y, :locationY
53
- alias_accessor :location_w, :locationWidth
54
- alias_accessor :location_width, :locationWidth
55
- alias_accessor :w, :locationWidth
56
- alias_accessor :location_h, :locationHeight
57
- alias_accessor :location_height, :locationHeight
58
- alias_accessor :h, :locationHeight
59
- alias_accessor :font_name, :fontName
60
- alias_accessor :font_color, :fontColor
61
- alias_accessor :font_size, :fontSize
62
- alias_accessor :font_bold, :fontBold
63
- alias_accessor :font_italic, :fontItalic
64
- alias_accessor :font_underline, :fontUnderline
65
- alias_accessor :force_new_field, :forceNewField
66
- # added in release 1.5.8
67
- alias_accessor :page_width, :pageWidth
68
- alias_accessor :page_height, :pageHeight
69
-
70
- end # Signature::Field::Location
71
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature::Field::Location < Api::Entity
3
+
4
+ # @attr [String] id
5
+ attr_accessor :id
6
+ # @attr [String] documentId
7
+ attr_accessor :documentId
8
+ # @attr [String] fieldId
9
+ attr_accessor :fieldId
10
+ # @attr [Integer] page (required)
11
+ attr_accessor :page
12
+ # @attr [Float] locationX (required)
13
+ attr_accessor :locationX
14
+ # @attr [Float] locationY (required)
15
+ attr_accessor :locationY
16
+ # @attr [Float] locationWidth (required)
17
+ attr_accessor :locationWidth
18
+ # @attr [Float] locationHeight (required)
19
+ attr_accessor :locationHeight
20
+ # @attr [String] fontName
21
+ attr_accessor :fontName
22
+ # @attr [String] fontColor
23
+ attr_accessor :fontColor
24
+ # @attr [Integer] fontSize
25
+ attr_accessor :fontSize
26
+ # @attr [Boolean] fontBold
27
+ attr_accessor :fontBold
28
+ # @attr [Boolean] fontItalic
29
+ attr_accessor :fontItalic
30
+ # @attr [Boolean] fontUnderline
31
+ attr_accessor :fontUnderline
32
+ # @attr [Boolean] forceNewField
33
+ attr_accessor :forceNewField
34
+ # @attr [String] page
35
+ attr_accessor :page
36
+
37
+ # added in realise 1.5.8
38
+ # @attr [Integer] pageWidth
39
+ attr_accessor :pageWidth
40
+ # @attr [Integer] pageHeight
41
+ attr_accessor :pageHeight
42
+ # @attr [Integer] align
43
+ attr_accessor :align
44
+
45
+
46
+ # Human-readable accessors
47
+ alias_accessor :document_id, :documentId
48
+ alias_accessor :field_id, :fieldId
49
+ alias_accessor :location_x, :locationX
50
+ alias_accessor :x, :locationX
51
+ alias_accessor :location_y, :locationY
52
+ alias_accessor :y, :locationY
53
+ alias_accessor :location_w, :locationWidth
54
+ alias_accessor :location_width, :locationWidth
55
+ alias_accessor :w, :locationWidth
56
+ alias_accessor :location_h, :locationHeight
57
+ alias_accessor :location_height, :locationHeight
58
+ alias_accessor :h, :locationHeight
59
+ alias_accessor :font_name, :fontName
60
+ alias_accessor :font_color, :fontColor
61
+ alias_accessor :font_size, :fontSize
62
+ alias_accessor :font_bold, :fontBold
63
+ alias_accessor :font_italic, :fontItalic
64
+ alias_accessor :font_underline, :fontUnderline
65
+ alias_accessor :force_new_field, :forceNewField
66
+ # added in release 1.5.8
67
+ alias_accessor :page_width, :pageWidth
68
+ alias_accessor :page_height, :pageHeight
69
+
70
+ end # Signature::Field::Location
71
+ end # GroupDocs
@@ -1,804 +1,804 @@
1
- module GroupDocs
2
- class Signature::Form < Api::Entity
3
-
4
- include Api::Helpers::SignaturePublic
5
- include Signature::EntityMethods
6
- include Signature::DocumentMethods
7
- include Signature::FieldMethods
8
- extend Signature::ResourceMethods
9
-
10
- # form doesn't have recipients
11
- undef_method :assign_field!
12
-
13
- STATUSES = {
14
- :draft => -1,
15
- :in_progress => 1,
16
- :completed => 2,
17
- :archived => 3,
18
- }
19
-
20
- #
21
- # Returns a list of all forms.
22
- #
23
- # @param [Hash] options Hash of options
24
- # @option options [Integer] :page Page to start with
25
- # @option options [Integer] :records How many items to list
26
- # @option options [Integer] :status_id Filter forms by status identifier
27
- # @option options [String] :document Filter forms by document GUID
28
- # @option options [String] :date Filter forms by date
29
- # @option options [String] :name Filter forms by name
30
- # @option options [String] :tag Filter forms by tag
31
- # @param [Hash] access Access credentials
32
- # @option access [String] :client_id
33
- # @option access [String] :private_key
34
- # @return [Array<GroupDocs::Signature::Form>]
35
- #
36
- def self.all!(options = {}, access = {})
37
- status_id = options.delete(:status_id)
38
- options[:statusId] = status_id if status_id
39
-
40
- api = Api::Request.new do |request|
41
- request[:access] = access
42
- request[:method] = :GET
43
- request[:path] = '/signature/{{client_id}}/forms'
44
- end
45
- api.add_params(options)
46
- json = api.execute!
47
-
48
- json[:forms].map do |form|
49
- new(form)
50
- end
51
- end
52
-
53
- #
54
- # Returns form by its identifier.
55
- #
56
- # @param [String] id
57
- # @param [Hash] options
58
- # @option options [Boolean] :public Defaults to false
59
- # @param [Hash] access Access credentials
60
- # @option access [String] :client_id
61
- # @option access [String] :private_key
62
- # @return [GroupDocs::Signature::Form]
63
- #
64
- def self.get!(id, options = {}, access = {})
65
- if options[:public]
66
- json = Api::Request.new do |request|
67
- request[:access] = access
68
- request[:method] = :GET
69
- request[:path] = "/signature/public/forms/#{id}"
70
- end.execute!
71
-
72
- new(json[:form])
73
- else
74
- super(id, access)
75
- end
76
- end
77
-
78
- # @attr [String] id
79
- attr_accessor :id
80
- # @attr [String] name
81
- attr_accessor :name
82
- # @attr [String] ownerGuid
83
- attr_accessor :ownerGuid
84
- # @attr [String] templateGuid
85
- attr_accessor :templateGuid
86
- # @attr [String] createdTimeStamp
87
- attr_accessor :createdTimeStamp
88
- # @attr [String] statusDateTime
89
- attr_accessor :statusDateTime
90
- # @attr [Integer] documentsCount
91
- attr_accessor :documentsCount
92
- # @attr [Integer] documentsPages
93
- attr_accessor :documentsPages
94
- # @attr [Integer] participantsCount
95
- attr_accessor :participantsCount
96
- # @attr [Array] fieldsInFinalFileName
97
- attr_accessor :fieldsInFinalFileName
98
- # @attr [Boolean] canParticipantDownloadForm
99
- attr_accessor :canParticipantDownloadForm
100
- # @attr [Symbol] status
101
- attr_accessor :status
102
- # @attr [String] waterMarkText
103
- attr_accessor :waterMarkText
104
- # @attr [String] waterMarkImage
105
- attr_accessor :waterMarkImage
106
- # @attr [Boolean] notifyOwnerOnSign
107
- attr_accessor :notifyOwnerOnSign
108
-
109
- #added in release 1.6.0
110
- # @attr [Boolean] canParticipantPrintForm
111
- attr_accessor :canParticipantPrintForm
112
-
113
-
114
- # Human-readable accessors
115
- alias_accessor :owner_guid, :ownerGuid
116
- alias_accessor :template_guid, :templateGuid
117
- alias_accessor :created_time_stamp, :createdTimeStamp
118
- alias_accessor :status_date_time, :statusDateTime
119
- alias_accessor :documents_count, :documentsCount
120
- alias_accessor :documents_pages, :documentsPages
121
- alias_accessor :participants_count, :participantsCount
122
- alias_accessor :can_participant_download_form, :canParticipantDownloadForm
123
- alias_accessor :water_mark_text, :waterMarkText
124
- alias_accessor :water_mark_image, :waterMarkImage
125
- alias_accessor :notify_owner_on_sign, :notifyOwnerOnSign
126
-
127
- #added in release 1.6.0
128
- alias_accessor :can_participant_print_form, :canParticipantPrintForm
129
-
130
- #
131
- # Converts status to human-readable format.
132
- # @return [Symbol]
133
- #
134
- def status
135
- STATUSES.invert[@status]
136
- end
137
-
138
- #
139
- # Converts array of field names to machine-readable format.
140
- # @param [Array<String>] fields
141
- #
142
- def fields_in_final_file_name=(fields)
143
- if fields.is_a?(Array)
144
- fields = fields.join(',')
145
- end
146
-
147
- @fieldsInFinalFileName = fields
148
- end
149
-
150
- #
151
- # Converts field names to human-readable format.
152
- # @return [Array<String>]
153
- #
154
- def fields_in_final_file_name
155
- @fieldsInFinalFileName.split(',') if @fieldsInFinalFileName
156
- end
157
-
158
- #
159
- # Creates form.
160
- #
161
- # @example
162
- # form = GroupDocs::Signature::Form.new
163
- # form.name = "Form"
164
- # form.create!
165
- #
166
- # @param [Hash] options Hash of options
167
- # @option options [String] :template_id Template GUID to create form from
168
- # @option options [Integer] :assembly_id Questionnaire identifier to create form from
169
- # @param [Hash] access Access credentials
170
- # @option access [String] :client_id
171
- # @option access [String] :private_key
172
- # @raise [ArgumentError] if template is not GroupDocs::Signature::Template
173
- #
174
- def create!(options = {}, access = {})
175
- #template_id = options.delete(:template_id)
176
- #assembly_id = options.delete(:assembly_id)
177
- #options[:templateId] = template_id if template_id
178
- #options[:assemblyId] = assembly_id if assembly_id
179
-
180
- api = Api::Request.new do |request|
181
- request[:access] = access
182
- request[:method] = :POST
183
- request[:path] = '/signature/{{client_id}}/form'
184
- request[:request_body] = to_hash
185
-
186
- end
187
-
188
- api.add_params(options.merge(:name => name))
189
- json = api.execute!
190
-
191
- self.id = json[:form][:id]
192
- end
193
-
194
- #
195
- # Returns documents array.
196
- #
197
- # @param [Hash] options
198
- # @option options [Boolean] :public Defaults to false
199
- # @param [Hash] access Access credentials
200
- # @option access [String] :client_id
201
- # @option access [String] :private_key
202
- # @return [Array<GroupDocs::Document>]
203
- #
204
- def documents!(options = {}, access = {})
205
- client_id = client_id(options[:public])
206
-
207
- json = Api::Request.new do |request|
208
- request[:access] = access
209
- request[:method] = :GET
210
- request[:path] = "/signature/#{client_id}/forms/#{id}/documents"
211
- end.execute!
212
-
213
- json[:documents].map do |document|
214
- id = document[:documentId] || document[:id]
215
- file = Storage::File.new(:guid => id, :name => document[:name])
216
- Document.new(document.merge(:file => file))
217
- end
218
- end
219
-
220
- #
221
- # Publishes form.
222
- #
223
- # @param [Hash] access Access credentials
224
- # @option access [String] :client_id
225
- # @option access [String] :private_key
226
- # @param callbackUrl [Hash] Webhook Callback Url
227
- # @option callbackUrl [String] :callbackUrl
228
- #
229
- def publish!(callbackUrl = {}, access = {})
230
- Api::Request.new do |request|
231
- request[:access] = access
232
- request[:method] = :PUT
233
- request[:path] = "/signature/{{client_id}}/forms/#{id}/publish"
234
- request[:request_body] = callbackUrl
235
- end.execute!
236
- end
237
-
238
- #
239
- # Completes form.
240
- #
241
- # @param [Hash] access Access credentials
242
- # @option access [String] :client_id
243
- # @option access [String] :private_key
244
- #
245
- def complete!(access = {})
246
- Api::Request.new do |request|
247
- request[:access] = access
248
- request[:method] = :PUT
249
- request[:path] = "/signature/{{client_id}}/forms/#{id}/complete"
250
- end.execute!
251
- end
252
-
253
- #
254
- # Archives completed form.
255
- #
256
- # @param [Hash] access Access credentials
257
- # @option access [String] :client_id
258
- # @option access [String] :private_key
259
- #
260
- def archive!(access = {})
261
- Api::Request.new do |request|
262
- request[:access] = access
263
- request[:method] = :PUT
264
- request[:path] = "/signature/{{client_id}}/forms/#{id}/archive"
265
- end.execute!
266
- end
267
-
268
- #
269
- # Changed in release 2.0.0
270
- #
271
- # Returns an array of fields for document per participant.
272
- #
273
- # @param [Hash] options
274
- # @option options [String] :field Field GUID
275
- # @param [Hash] access Access credentials
276
- # @option access [String] :client_id
277
- # @option access [String] :private_key
278
- #
279
- def get_fields!(options = {}, access = {})
280
-
281
- api = Api::Request.new do |request|
282
- request[:access] = access
283
- request[:method] = :GET
284
- request[:path] = "/signature/{{client_id}}/forms/#{id}/fields"
285
- end
286
- api.add_params(options)
287
- json = api.execute!
288
-
289
- json[:fields].map do |field|
290
- Signature::Field.new(field)
291
- end
292
- end
293
-
294
-
295
- #
296
- # Adds field for document.
297
- #
298
- # @example
299
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
300
- # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
301
- # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
302
- # document = form.documents!.first
303
- # form.add_field! field, document
304
- #
305
- # @param [GroupDocs::Signature::Field] field
306
- # @param [GroupDocs::Document] document
307
- # @param [Hash] options
308
- # @option options [Boolean] :force_new_field Set to true to force new field create
309
- # @param [Hash] access Access credentials
310
- # @option access [String] :client_id
311
- # @option access [String] :private_key
312
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
313
- # @raise [ArgumentError] if document is not GroupDocs::Document
314
- # @raise [ArgumentError] if field does not specify location
315
- #
316
- def add_field!(field, document, opts = {}, access = {})
317
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
318
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
319
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
320
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
321
- field.location or raise ArgumentError,
322
- "You have to specify field location, received: #{field.location.inspect}"
323
-
324
- opts[:force_new_field] = true if opts[:force_new_field].nil?
325
- payload = field.to_hash # field itself
326
- payload.merge!(field.location.to_hash) # location should added in plain view (i.e. not "location": {...})
327
- payload.merge!(:forceNewField => opts[:force_new_field]) # create new field flag
328
-
329
- Api::Request.new do |request|
330
- request[:access] = access
331
- request[:method] = :POST
332
- request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/field/#{field.id}"
333
- request[:request_body] = payload
334
- end.execute!
335
- end
336
-
337
- #
338
- # Modifies field location.
339
- #
340
- # @example Modify field location in form
341
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
342
- # document = form.documents!.first
343
- # field = form.fields!(document).first
344
- # location = field.locations.first
345
- # location.x = 0.123
346
- # location.y = 0.123
347
- # location.page = 2
348
- # form.modify_field_location! location, field, document
349
- #
350
- # @param [GroupDocs::Signature::Field::Location] location
351
- # @param [GroupDocs::Signature::Field] field
352
- # @param [GroupDocs::Document] document
353
- # @param [Hash] access Access credentials
354
- # @option access [String] :client_id
355
- # @option access [String] :private_key
356
- # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
357
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
358
- # @raise [ArgumentError] if document is not GroupDocs::Document
359
- #
360
- def modify_field_location!(location, field, document, access = {})
361
- location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
362
- "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
363
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
364
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
365
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
366
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
367
-
368
- Api::Request.new do |request|
369
- request[:access] = access
370
- request[:method] = :PUT
371
- request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields/#{field.id}/locations/#{location.id}"
372
- request[:request_body] = location.to_hash
373
- end.execute!
374
- end
375
-
376
- #
377
- # Added in release 2.2.0
378
- #
379
- # Modifies field location.
380
- #
381
- # @example Modify field in form
382
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
383
- # document = form.documents!.first
384
- # field = form.get_fields!(document).first
385
- # field.name = "New name"
386
- # form.modify_field_location! location, field, document
387
- #
388
- # @param [GroupDocs::Signature::Field::Location] location
389
- # @param [GroupDocs::Signature::Field] field
390
- # @param [GroupDocs::Document] document
391
- # @param [Hash] access Access credentials
392
- # @option access [String] :client_id
393
- # @option access [String] :private_key
394
- # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
395
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
396
- # @raise [ArgumentError] if document is not GroupDocs::Document
397
- #
398
- def modify_form_field!(field, document, access = {})
399
-
400
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
401
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
402
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
403
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
404
-
405
- Api::Request.new do |request|
406
- request[:access] = access
407
- request[:method] = :PUT
408
- request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/field/#{field.id}"
409
- request[:request_body] = field.to_hash
410
- end.execute!
411
- end
412
-
413
- #
414
- # Updates form adding fields from template.
415
- #
416
- # @param [GroupDocs::Signature::Template] template
417
- # @param [Hash] access Access credentials
418
- # @option access [String] :client_id
419
- # @option access [String] :private_key
420
- # @raise [ArgumentError] if template is not GroupDocs::Signature::Template
421
- #
422
- def update_from_template!(template, access = {})
423
- template.is_a?(GroupDocs::Signature::Template) or raise ArgumentError,
424
- "Template should be GroupDocs::Signature::Template object, received: #{template.inspect}"
425
-
426
- Api::Request.new do |request|
427
- request[:access] = access
428
- request[:method] = :POST
429
- request[:path] = "/signature/{{client_id}}/forms/#{id}/templates/#{template.id}"
430
- end.execute!
431
- end
432
-
433
- #
434
- # Modify signature form document
435
- #
436
- # @example
437
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
438
- # document = form.documents!.first
439
- # field = form.fields!(document).first
440
- # field.name = "Field"
441
- # form.modify_field! field, document
442
- #
443
- #
444
- # @param [GroupDocs::Document] document
445
- # @param [Hash] options
446
- # @option options [Integer] Order
447
- # @option options [String] newDocumentGuid
448
- # @param [Hash] access Access credentials
449
- # @option access [String] :client_id
450
- # @option access [String] :private_key
451
- # @raise [ArgumentError] if document is not GroupDocs::Document
452
- #
453
- def modify_form_document!(document, options = {}, access = {})
454
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
455
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
456
-
457
- Api::Request.new do |request|
458
- request[:access] = access
459
- request[:method] = :PUT
460
- request[:path] = "/signature/{{client_id}}/forms/#{id}/document/#{document.file.guid}/"
461
- request[:request_body] = options
462
- end.execute!
463
- end
464
-
465
- #
466
- # Changed in release 1.5.8
467
- #
468
- # Downloads signed documents to given path.
469
- # If there is only one file in form, it's saved as PDF.
470
- # If there are two or more files in form, it's saved as ZIP.
471
- #
472
- # @param [String] path Directory to download file to
473
- # @param [Hash] access Access credentials
474
- # @option access [String] :client_id
475
- # @option access [String] :private_key
476
- # @return [String] path to file
477
- #
478
- def signed_documents!(path, access = {})
479
- response = Api::Request.new do |request|
480
- request[:access] = access
481
- request[:method] = :DOWNLOAD
482
- request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/get"
483
- end.execute!
484
-
485
- filepath = "#{path}/#{name}.zip"
486
-
487
-
488
- Object::File.open(filepath, 'wb') do |file|
489
- file.write(response)
490
- end
491
-
492
- filepath
493
- end
494
-
495
- #
496
- # Changed in release 1.5.8
497
- #
498
- # Public fill signature form.
499
- #
500
- # @param [String] form Form GUID
501
- # @param [Hash] access Access credentials
502
- # @option access [String] :client_id
503
- # @option access [String] :private_key
504
- # @return [Array]
505
- #
506
- def public_fill!(access = {})
507
- Api::Request.new do |request|
508
- request[:access] = access
509
- request[:method] = :GET
510
- request[:path] = "/signature/public/forms/#{id}/fill"
511
- end.execute!
512
- end
513
-
514
- #
515
- # Changed in release 1.5.8
516
- #
517
- # Public fill form field.
518
- #
519
- # @example Fill single line field
520
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
521
- # document = form.documents!.first
522
- # field = form.fields!(document).first
523
- # fill_form = form.public_fill!
524
- # participant = fill_form[:participant][:id]
525
- # form.fill_field! "my_data", field, document, participant
526
- #
527
- # @example Fill signature field
528
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
529
- # document = form.documents!.first
530
- # field = form.fields!(document).first
531
- # fill_form = form.public_fill!
532
- # participant = fill_form[:participant][:id]
533
- # signature = GroupDocs::Signature.get!.first
534
- # form.fill_field! signature, field, document, participant
535
- #
536
- # @example Fill checkbox field
537
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
538
- # document = form.documents!.first
539
- # field = form.fields!(document).first
540
- # fill_form = form.public_fill!
541
- # participant = fill_form[:participant][:id]
542
- # form.fill_field! false, field, document, participant
543
- #
544
- #
545
- # @param [GroupDocs::Document] document Document GUID
546
- # @param [String] participant Participant ID
547
- # @param [GroupDocs::Signature::Field] field Field GUID
548
- # @param [String] authentication Authentication signature
549
- # @param [File Stream] value Data to be placed in field
550
- # @param [Hash] access Access credentials
551
- # @option access [String] :client_id
552
- # @option access [String] :private_key
553
- # @return [Array]
554
- #
555
- def public_fill_field!(value, field, document, participant, authentication, access = {})
556
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
557
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
558
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
559
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
560
-
561
- api = Api::Request.new do |request|
562
- request[:access] = access
563
- request[:method] = :PUT
564
- request[:path] = "/signature/public/forms/#{id}/documents/#{document.guid}/participant/#{participant}/field/#{field.id}"
565
- request[:request_body] = value
566
- request[:plain] = true
567
- end
568
- api.add_params(:participantAuthSignature => authentication)
569
- json = api.execute!
570
- Signature::Field.new(json[:field])
571
- end
572
-
573
- #
574
- # Changed in release 1.7.0
575
- #
576
- # Public sign form.
577
- #
578
- # @param [Hash] settings
579
- # @option settings [String] :authData (required)
580
- # @option settings [String] :comment (required)
581
- # @param [String] filepath Path to file to be uploaded
582
- # @param [String] participant Participant GUID
583
- # @param [String] authentication Authentication signature
584
- # @param [String] participant_name Participant Name
585
- # @param [Hash] access Access credentials
586
- # @option access [String] :client_id
587
- # @option access [String] :private_key
588
- # @return [Array]
589
- #
590
- def sign!( filepath, participant, authentication, participant_name, settings = {}, access = {})
591
- api = Api::Request.new do |request|
592
- request[:access] = access
593
- request[:method] = :PUT
594
- request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/sign"
595
- request[:request_body] = Object::File.new(filepath, 'rb')
596
- request[:request_body] = settings
597
-
598
- end
599
- api.add_params(:participantAuthSignature => authentication, :name => participant_name)
600
- api.execute!
601
- end
602
-
603
- #
604
- # Changed in release 1.5.8
605
- #
606
- #
607
- # Get form fields for document in form per participant
608
- #
609
- # @param [Hash] options
610
- # @option [String] :document Document GUID
611
- # @option [String] :participant Participant GUID
612
- # @param [Hash] access Access credentials
613
- # @option access [String] :client_id
614
- # @option access [String] :private_key
615
- # @return [Array]
616
- #
617
- def public_fields!(options = {}, access = {})
618
- api = Api::Request.new do |request|
619
- request[:access] = access
620
- request[:method] = :GET
621
- request[:path] = "/signature/public/forms/#{id}/fields"
622
- end
623
- api.add_params(options)
624
- json = api.execute!
625
-
626
- json[:fields].map do |field|
627
- Signature::Field.new(field)
628
- end
629
- end
630
-
631
- #
632
- # Changed in release 1.5.8
633
- #
634
- #
635
- # Get signature form participant.
636
- #
637
- # @param [String] participant Participant GUID
638
- # @param [Hash] access Access credentials
639
- # @option access [String] :client_id
640
- # @option access [String] :private_key
641
- # @return [Array]
642
- #
643
- def participant!(participant, access = {})
644
- json = Api::Request.new do |request|
645
- request[:access] = access
646
- request[:method] = :GET
647
- request[:path] = "/signature/public/forms/#{form}/participants/#{participant}"
648
- end.execute!
649
-
650
- json[:participant]
651
- end
652
-
653
- #
654
- # Changed in release 1.5.8
655
- #
656
- #
657
- # Get signed form documents.
658
- #
659
- # @param [String] participant Participant GUID
660
- # @param [Hash] access Access credentials
661
- # @option access [String] :client_id
662
- # @option access [String] :private_key
663
- # @return [Array]
664
- #
665
- def public_signed_documents!(path, participant, access = {})
666
- response = Api::Request.new do |request|
667
- request[:access] = access
668
- request[:method] = :DOWNLOAD
669
- request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/documents/get"
670
- end.execute!
671
-
672
-
673
- filepath = "#{path}/#{name}."
674
- if documents!.size == 1
675
- filepath << 'pdf'
676
- else
677
- filepath << 'zip'
678
- end
679
-
680
- Object::File.open(filepath, 'wb') do |file|
681
- file.write(response)
682
- end
683
-
684
- filepath
685
- end
686
-
687
- #
688
- # Added in release 1.7.0
689
- #
690
- # Update Form Participant.
691
- #
692
- # @param [String] form Form GUID
693
- # @param [String] participant Participant GUID
694
- # @param [String] authentication Authentication signature
695
- # @param [String] participant_name Participant Name
696
- # @param [Hash] access Access credentials
697
- # @option access [String] :client_id
698
- # @option access [String] :private_key
699
- # @return [Array]
700
- #
701
- def update_partipicant!(participant, email, access = {})
702
- api = Api::Request.new do |request|
703
- request[:access] = access
704
- request[:method] = :PUT
705
- request[:path] = "/signature/public/forms/#{id}/participant/#{participant}"
706
- end
707
- api.add_params(:email => email)
708
- api.execute!
709
- end
710
-
711
- #
712
- # Added in release 1.7.0
713
- #
714
- # Validate Particpiant Identity.
715
- #
716
- # @param [String] participant Participant GUID
717
- # @param [String] code Code to be validated
718
- # @param [Hash] access Access credentials
719
- # @option access [String] :client_id
720
- # @option access [String] :private_key
721
- # @return [Array]
722
- #
723
- def validate_partipicant!(participant, code, access = {})
724
- Api::Request.new do |request|
725
- request[:access] = access
726
- request[:method] = :GET
727
- request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/validationCode/#{code}"
728
- end.execute!
729
- end
730
-
731
- #
732
- # Added in release 1.7.0
733
- #
734
- # Get form fields for document in form per participant.
735
- #
736
- # @param [GroupDocs::Document] document
737
- # @param [Hash] options
738
- # @option options [String] :field Field GUID
739
- # @param [Hash] access Access credentials
740
- # @option access [String] :client_id
741
- # @option access [String] :private_key
742
- # @raise [ArgumentError] if document is not GroupDocs::Document
743
- #
744
- def document_fields!(document, options = {}, access = {})
745
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
746
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
747
-
748
- api = Api::Request.new do |request|
749
- request[:access] = access
750
- request[:method] = :GET
751
- request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields"
752
- end
753
- api.add_params(options)
754
- json = api.execute!
755
-
756
- json[:fields].map do |field|
757
- Signature::Field.new(field)
758
- end
759
- end
760
-
761
- #
762
- # Added in release 1.7.0
763
- #
764
- # Get form audit logs
765
- #
766
- # @param [Hash] options
767
- # @option options [String] :field Field GUID
768
- # @param [Hash] access Access credentials
769
- # @option access [String] :client_id
770
- # @option access [String] :private_key
771
- # @raise [ArgumentError] if document is not GroupDocs::Document
772
- #
773
- def get_logs!(access = {})
774
-
775
- Api::Request.new do |request|
776
- request[:access] = access
777
- request[:method] = :GET
778
- request[:path] = "/signature/{{client_id}}/forms/#{id}/logs"
779
- end.execute!
780
- end
781
-
782
- #
783
- # Added in release 1.8.0
784
- #
785
- # Get form participants
786
- #
787
- # @param [Hash] options
788
- # @option options [String] :field Field GUID
789
- # @param [Hash] access Access credentials
790
- # @option access [String] :client_id
791
- # @option access [String] :private_key
792
- # @raise [ArgumentError] if document is not GroupDocs::Document
793
- #
794
- def get_participants!(access = {})
795
-
796
- Api::Request.new do |request|
797
- request[:access] = access
798
- request[:method] = :GET
799
- request[:path] = "/signature/{{client_id}}/forms/#{id}/participants"
800
- end.execute!
801
- end
802
-
803
- end # Signature::Form
804
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature::Form < Api::Entity
3
+
4
+ include Api::Helpers::SignaturePublic
5
+ include Signature::EntityMethods
6
+ include Signature::DocumentMethods
7
+ include Signature::FieldMethods
8
+ extend Signature::ResourceMethods
9
+
10
+ # form doesn't have recipients
11
+ undef_method :assign_field!
12
+
13
+ STATUSES = {
14
+ :draft => -1,
15
+ :in_progress => 1,
16
+ :completed => 2,
17
+ :archived => 3,
18
+ }
19
+
20
+ #
21
+ # Returns a list of all forms.
22
+ #
23
+ # @param [Hash] options Hash of options
24
+ # @option options [Integer] :page Page to start with
25
+ # @option options [Integer] :records How many items to list
26
+ # @option options [Integer] :status_id Filter forms by status identifier
27
+ # @option options [String] :document Filter forms by document GUID
28
+ # @option options [String] :date Filter forms by date
29
+ # @option options [String] :name Filter forms by name
30
+ # @option options [String] :tag Filter forms by tag
31
+ # @param [Hash] access Access credentials
32
+ # @option access [String] :client_id
33
+ # @option access [String] :private_key
34
+ # @return [Array<GroupDocs::Signature::Form>]
35
+ #
36
+ def self.all!(options = {}, access = {})
37
+ status_id = options.delete(:status_id)
38
+ options[:statusId] = status_id if status_id
39
+
40
+ api = Api::Request.new do |request|
41
+ request[:access] = access
42
+ request[:method] = :GET
43
+ request[:path] = '/signature/{{client_id}}/forms'
44
+ end
45
+ api.add_params(options)
46
+ json = api.execute!
47
+
48
+ json[:forms].map do |form|
49
+ new(form)
50
+ end
51
+ end
52
+
53
+ #
54
+ # Returns form by its identifier.
55
+ #
56
+ # @param [String] id
57
+ # @param [Hash] options
58
+ # @option options [Boolean] :public Defaults to false
59
+ # @param [Hash] access Access credentials
60
+ # @option access [String] :client_id
61
+ # @option access [String] :private_key
62
+ # @return [GroupDocs::Signature::Form]
63
+ #
64
+ def self.get!(id, options = {}, access = {})
65
+ if options[:public]
66
+ json = Api::Request.new do |request|
67
+ request[:access] = access
68
+ request[:method] = :GET
69
+ request[:path] = "/signature/public/forms/#{id}"
70
+ end.execute!
71
+
72
+ new(json[:form])
73
+ else
74
+ super(id, access)
75
+ end
76
+ end
77
+
78
+ # @attr [String] id
79
+ attr_accessor :id
80
+ # @attr [String] name
81
+ attr_accessor :name
82
+ # @attr [String] ownerGuid
83
+ attr_accessor :ownerGuid
84
+ # @attr [String] templateGuid
85
+ attr_accessor :templateGuid
86
+ # @attr [String] createdTimeStamp
87
+ attr_accessor :createdTimeStamp
88
+ # @attr [String] statusDateTime
89
+ attr_accessor :statusDateTime
90
+ # @attr [Integer] documentsCount
91
+ attr_accessor :documentsCount
92
+ # @attr [Integer] documentsPages
93
+ attr_accessor :documentsPages
94
+ # @attr [Integer] participantsCount
95
+ attr_accessor :participantsCount
96
+ # @attr [Array] fieldsInFinalFileName
97
+ attr_accessor :fieldsInFinalFileName
98
+ # @attr [Boolean] canParticipantDownloadForm
99
+ attr_accessor :canParticipantDownloadForm
100
+ # @attr [Symbol] status
101
+ attr_accessor :status
102
+ # @attr [String] waterMarkText
103
+ attr_accessor :waterMarkText
104
+ # @attr [String] waterMarkImage
105
+ attr_accessor :waterMarkImage
106
+ # @attr [Boolean] notifyOwnerOnSign
107
+ attr_accessor :notifyOwnerOnSign
108
+
109
+ #added in release 1.6.0
110
+ # @attr [Boolean] canParticipantPrintForm
111
+ attr_accessor :canParticipantPrintForm
112
+
113
+
114
+ # Human-readable accessors
115
+ alias_accessor :owner_guid, :ownerGuid
116
+ alias_accessor :template_guid, :templateGuid
117
+ alias_accessor :created_time_stamp, :createdTimeStamp
118
+ alias_accessor :status_date_time, :statusDateTime
119
+ alias_accessor :documents_count, :documentsCount
120
+ alias_accessor :documents_pages, :documentsPages
121
+ alias_accessor :participants_count, :participantsCount
122
+ alias_accessor :can_participant_download_form, :canParticipantDownloadForm
123
+ alias_accessor :water_mark_text, :waterMarkText
124
+ alias_accessor :water_mark_image, :waterMarkImage
125
+ alias_accessor :notify_owner_on_sign, :notifyOwnerOnSign
126
+
127
+ #added in release 1.6.0
128
+ alias_accessor :can_participant_print_form, :canParticipantPrintForm
129
+
130
+ #
131
+ # Converts status to human-readable format.
132
+ # @return [Symbol]
133
+ #
134
+ def status
135
+ STATUSES.invert[@status]
136
+ end
137
+
138
+ #
139
+ # Converts array of field names to machine-readable format.
140
+ # @param [Array<String>] fields
141
+ #
142
+ def fields_in_final_file_name=(fields)
143
+ if fields.is_a?(Array)
144
+ fields = fields.join(',')
145
+ end
146
+
147
+ @fieldsInFinalFileName = fields
148
+ end
149
+
150
+ #
151
+ # Converts field names to human-readable format.
152
+ # @return [Array<String>]
153
+ #
154
+ def fields_in_final_file_name
155
+ @fieldsInFinalFileName.split(',') if @fieldsInFinalFileName
156
+ end
157
+
158
+ #
159
+ # Creates form.
160
+ #
161
+ # @example
162
+ # form = GroupDocs::Signature::Form.new
163
+ # form.name = "Form"
164
+ # form.create!
165
+ #
166
+ # @param [Hash] options Hash of options
167
+ # @option options [String] :template_id Template GUID to create form from
168
+ # @option options [Integer] :assembly_id Questionnaire identifier to create form from
169
+ # @param [Hash] access Access credentials
170
+ # @option access [String] :client_id
171
+ # @option access [String] :private_key
172
+ # @raise [ArgumentError] if template is not GroupDocs::Signature::Template
173
+ #
174
+ def create!(options = {}, access = {})
175
+ #template_id = options.delete(:template_id)
176
+ #assembly_id = options.delete(:assembly_id)
177
+ #options[:templateId] = template_id if template_id
178
+ #options[:assemblyId] = assembly_id if assembly_id
179
+
180
+ api = Api::Request.new do |request|
181
+ request[:access] = access
182
+ request[:method] = :POST
183
+ request[:path] = '/signature/{{client_id}}/form'
184
+ request[:request_body] = to_hash
185
+
186
+ end
187
+
188
+ api.add_params(options.merge(:name => name))
189
+ json = api.execute!
190
+
191
+ self.id = json[:form][:id]
192
+ end
193
+
194
+ #
195
+ # Returns documents array.
196
+ #
197
+ # @param [Hash] options
198
+ # @option options [Boolean] :public Defaults to false
199
+ # @param [Hash] access Access credentials
200
+ # @option access [String] :client_id
201
+ # @option access [String] :private_key
202
+ # @return [Array<GroupDocs::Document>]
203
+ #
204
+ def documents!(options = {}, access = {})
205
+ client_id = client_id(options[:public])
206
+
207
+ json = Api::Request.new do |request|
208
+ request[:access] = access
209
+ request[:method] = :GET
210
+ request[:path] = "/signature/#{client_id}/forms/#{id}/documents"
211
+ end.execute!
212
+
213
+ json[:documents].map do |document|
214
+ id = document[:documentId] || document[:id]
215
+ file = Storage::File.new(:guid => id, :name => document[:name])
216
+ Document.new(document.merge(:file => file))
217
+ end
218
+ end
219
+
220
+ #
221
+ # Publishes form.
222
+ #
223
+ # @param [Hash] access Access credentials
224
+ # @option access [String] :client_id
225
+ # @option access [String] :private_key
226
+ # @param callbackUrl [Hash] Webhook Callback Url
227
+ # @option callbackUrl [String] :callbackUrl
228
+ #
229
+ def publish!(callbackUrl = {}, access = {})
230
+ Api::Request.new do |request|
231
+ request[:access] = access
232
+ request[:method] = :PUT
233
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/publish"
234
+ request[:request_body] = callbackUrl
235
+ end.execute!
236
+ end
237
+
238
+ #
239
+ # Completes form.
240
+ #
241
+ # @param [Hash] access Access credentials
242
+ # @option access [String] :client_id
243
+ # @option access [String] :private_key
244
+ #
245
+ def complete!(access = {})
246
+ Api::Request.new do |request|
247
+ request[:access] = access
248
+ request[:method] = :PUT
249
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/complete"
250
+ end.execute!
251
+ end
252
+
253
+ #
254
+ # Archives completed form.
255
+ #
256
+ # @param [Hash] access Access credentials
257
+ # @option access [String] :client_id
258
+ # @option access [String] :private_key
259
+ #
260
+ def archive!(access = {})
261
+ Api::Request.new do |request|
262
+ request[:access] = access
263
+ request[:method] = :PUT
264
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/archive"
265
+ end.execute!
266
+ end
267
+
268
+ #
269
+ # Changed in release 2.0.0
270
+ #
271
+ # Returns an array of fields for document per participant.
272
+ #
273
+ # @param [Hash] options
274
+ # @option options [String] :field Field GUID
275
+ # @param [Hash] access Access credentials
276
+ # @option access [String] :client_id
277
+ # @option access [String] :private_key
278
+ #
279
+ def get_fields!(options = {}, access = {})
280
+
281
+ api = Api::Request.new do |request|
282
+ request[:access] = access
283
+ request[:method] = :GET
284
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/fields"
285
+ end
286
+ api.add_params(options)
287
+ json = api.execute!
288
+
289
+ json[:fields].map do |field|
290
+ Signature::Field.new(field)
291
+ end
292
+ end
293
+
294
+
295
+ #
296
+ # Adds field for document.
297
+ #
298
+ # @example
299
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
300
+ # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
301
+ # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
302
+ # document = form.documents!.first
303
+ # form.add_field! field, document
304
+ #
305
+ # @param [GroupDocs::Signature::Field] field
306
+ # @param [GroupDocs::Document] document
307
+ # @param [Hash] options
308
+ # @option options [Boolean] :force_new_field Set to true to force new field create
309
+ # @param [Hash] access Access credentials
310
+ # @option access [String] :client_id
311
+ # @option access [String] :private_key
312
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
313
+ # @raise [ArgumentError] if document is not GroupDocs::Document
314
+ # @raise [ArgumentError] if field does not specify location
315
+ #
316
+ def add_field!(field, document, opts = {}, access = {})
317
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
318
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
319
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
320
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
321
+ field.location or raise ArgumentError,
322
+ "You have to specify field location, received: #{field.location.inspect}"
323
+
324
+ opts[:force_new_field] = true if opts[:force_new_field].nil?
325
+ payload = field.to_hash # field itself
326
+ payload.merge!(field.location.to_hash) # location should added in plain view (i.e. not "location": {...})
327
+ payload.merge!(:forceNewField => opts[:force_new_field]) # create new field flag
328
+
329
+ Api::Request.new do |request|
330
+ request[:access] = access
331
+ request[:method] = :POST
332
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/field/#{field.id}"
333
+ request[:request_body] = payload
334
+ end.execute!
335
+ end
336
+
337
+ #
338
+ # Modifies field location.
339
+ #
340
+ # @example Modify field location in form
341
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
342
+ # document = form.documents!.first
343
+ # field = form.fields!(document).first
344
+ # location = field.locations.first
345
+ # location.x = 0.123
346
+ # location.y = 0.123
347
+ # location.page = 2
348
+ # form.modify_field_location! location, field, document
349
+ #
350
+ # @param [GroupDocs::Signature::Field::Location] location
351
+ # @param [GroupDocs::Signature::Field] field
352
+ # @param [GroupDocs::Document] document
353
+ # @param [Hash] access Access credentials
354
+ # @option access [String] :client_id
355
+ # @option access [String] :private_key
356
+ # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
357
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
358
+ # @raise [ArgumentError] if document is not GroupDocs::Document
359
+ #
360
+ def modify_field_location!(location, field, document, access = {})
361
+ location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
362
+ "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
363
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
364
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
365
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
366
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
367
+
368
+ Api::Request.new do |request|
369
+ request[:access] = access
370
+ request[:method] = :PUT
371
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields/#{field.id}/locations/#{location.id}"
372
+ request[:request_body] = location.to_hash
373
+ end.execute!
374
+ end
375
+
376
+ #
377
+ # Added in release 2.2.0
378
+ #
379
+ # Modifies field location.
380
+ #
381
+ # @example Modify field in form
382
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
383
+ # document = form.documents!.first
384
+ # field = form.get_fields!(document).first
385
+ # field.name = "New name"
386
+ # form.modify_field_location! location, field, document
387
+ #
388
+ # @param [GroupDocs::Signature::Field::Location] location
389
+ # @param [GroupDocs::Signature::Field] field
390
+ # @param [GroupDocs::Document] document
391
+ # @param [Hash] access Access credentials
392
+ # @option access [String] :client_id
393
+ # @option access [String] :private_key
394
+ # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
395
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
396
+ # @raise [ArgumentError] if document is not GroupDocs::Document
397
+ #
398
+ def modify_form_field!(field, document, access = {})
399
+
400
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
401
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
402
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
403
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
404
+
405
+ Api::Request.new do |request|
406
+ request[:access] = access
407
+ request[:method] = :PUT
408
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/field/#{field.id}"
409
+ request[:request_body] = field.to_hash
410
+ end.execute!
411
+ end
412
+
413
+ #
414
+ # Updates form adding fields from template.
415
+ #
416
+ # @param [GroupDocs::Signature::Template] template
417
+ # @param [Hash] access Access credentials
418
+ # @option access [String] :client_id
419
+ # @option access [String] :private_key
420
+ # @raise [ArgumentError] if template is not GroupDocs::Signature::Template
421
+ #
422
+ def update_from_template!(template, access = {})
423
+ template.is_a?(GroupDocs::Signature::Template) or raise ArgumentError,
424
+ "Template should be GroupDocs::Signature::Template object, received: #{template.inspect}"
425
+
426
+ Api::Request.new do |request|
427
+ request[:access] = access
428
+ request[:method] = :POST
429
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/templates/#{template.id}"
430
+ end.execute!
431
+ end
432
+
433
+ #
434
+ # Modify signature form document
435
+ #
436
+ # @example
437
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
438
+ # document = form.documents!.first
439
+ # field = form.fields!(document).first
440
+ # field.name = "Field"
441
+ # form.modify_field! field, document
442
+ #
443
+ #
444
+ # @param [GroupDocs::Document] document
445
+ # @param [Hash] options
446
+ # @option options [Integer] Order
447
+ # @option options [String] newDocumentGuid
448
+ # @param [Hash] access Access credentials
449
+ # @option access [String] :client_id
450
+ # @option access [String] :private_key
451
+ # @raise [ArgumentError] if document is not GroupDocs::Document
452
+ #
453
+ def modify_form_document!(document, options = {}, access = {})
454
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
455
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
456
+
457
+ Api::Request.new do |request|
458
+ request[:access] = access
459
+ request[:method] = :PUT
460
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/document/#{document.file.guid}/"
461
+ request[:request_body] = options
462
+ end.execute!
463
+ end
464
+
465
+ #
466
+ # Changed in release 1.5.8
467
+ #
468
+ # Downloads signed documents to given path.
469
+ # If there is only one file in form, it's saved as PDF.
470
+ # If there are two or more files in form, it's saved as ZIP.
471
+ #
472
+ # @param [String] path Directory to download file to
473
+ # @param [Hash] access Access credentials
474
+ # @option access [String] :client_id
475
+ # @option access [String] :private_key
476
+ # @return [String] path to file
477
+ #
478
+ def signed_documents!(path, access = {})
479
+ response = Api::Request.new do |request|
480
+ request[:access] = access
481
+ request[:method] = :DOWNLOAD
482
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/get"
483
+ end.execute!
484
+
485
+ filepath = "#{path}/#{name}.zip"
486
+
487
+
488
+ Object::File.open(filepath, 'wb') do |file|
489
+ file.write(response)
490
+ end
491
+
492
+ filepath
493
+ end
494
+
495
+ #
496
+ # Changed in release 1.5.8
497
+ #
498
+ # Public fill signature form.
499
+ #
500
+ # @param [String] form Form GUID
501
+ # @param [Hash] access Access credentials
502
+ # @option access [String] :client_id
503
+ # @option access [String] :private_key
504
+ # @return [Array]
505
+ #
506
+ def public_fill!(access = {})
507
+ Api::Request.new do |request|
508
+ request[:access] = access
509
+ request[:method] = :GET
510
+ request[:path] = "/signature/public/forms/#{id}/fill"
511
+ end.execute!
512
+ end
513
+
514
+ #
515
+ # Changed in release 1.5.8
516
+ #
517
+ # Public fill form field.
518
+ #
519
+ # @example Fill single line field
520
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
521
+ # document = form.documents!.first
522
+ # field = form.fields!(document).first
523
+ # fill_form = form.public_fill!
524
+ # participant = fill_form[:participant][:id]
525
+ # form.fill_field! "my_data", field, document, participant
526
+ #
527
+ # @example Fill signature field
528
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
529
+ # document = form.documents!.first
530
+ # field = form.fields!(document).first
531
+ # fill_form = form.public_fill!
532
+ # participant = fill_form[:participant][:id]
533
+ # signature = GroupDocs::Signature.get!.first
534
+ # form.fill_field! signature, field, document, participant
535
+ #
536
+ # @example Fill checkbox field
537
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
538
+ # document = form.documents!.first
539
+ # field = form.fields!(document).first
540
+ # fill_form = form.public_fill!
541
+ # participant = fill_form[:participant][:id]
542
+ # form.fill_field! false, field, document, participant
543
+ #
544
+ #
545
+ # @param [GroupDocs::Document] document Document GUID
546
+ # @param [String] participant Participant ID
547
+ # @param [GroupDocs::Signature::Field] field Field GUID
548
+ # @param [String] authentication Authentication signature
549
+ # @param [File Stream] value Data to be placed in field
550
+ # @param [Hash] access Access credentials
551
+ # @option access [String] :client_id
552
+ # @option access [String] :private_key
553
+ # @return [Array]
554
+ #
555
+ def public_fill_field!(value, field, document, participant, authentication, access = {})
556
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
557
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
558
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
559
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
560
+
561
+ api = Api::Request.new do |request|
562
+ request[:access] = access
563
+ request[:method] = :PUT
564
+ request[:path] = "/signature/public/forms/#{id}/documents/#{document.guid}/participant/#{participant}/field/#{field.id}"
565
+ request[:request_body] = value
566
+ request[:plain] = true
567
+ end
568
+ api.add_params(:participantAuthSignature => authentication)
569
+ json = api.execute!
570
+ Signature::Field.new(json[:field])
571
+ end
572
+
573
+ #
574
+ # Changed in release 1.7.0
575
+ #
576
+ # Public sign form.
577
+ #
578
+ # @param [Hash] settings
579
+ # @option settings [String] :authData (required)
580
+ # @option settings [String] :comment (required)
581
+ # @param [String] filepath Path to file to be uploaded
582
+ # @param [String] participant Participant GUID
583
+ # @param [String] authentication Authentication signature
584
+ # @param [String] participant_name Participant Name
585
+ # @param [Hash] access Access credentials
586
+ # @option access [String] :client_id
587
+ # @option access [String] :private_key
588
+ # @return [Array]
589
+ #
590
+ def sign!( filepath, participant, authentication, participant_name, settings = {}, access = {})
591
+ api = Api::Request.new do |request|
592
+ request[:access] = access
593
+ request[:method] = :PUT
594
+ request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/sign"
595
+ request[:request_body] = Object::File.new(filepath, 'rb')
596
+ request[:request_body] = settings
597
+
598
+ end
599
+ api.add_params(:participantAuthSignature => authentication, :name => participant_name)
600
+ api.execute!
601
+ end
602
+
603
+ #
604
+ # Changed in release 1.5.8
605
+ #
606
+ #
607
+ # Get form fields for document in form per participant
608
+ #
609
+ # @param [Hash] options
610
+ # @option [String] :document Document GUID
611
+ # @option [String] :participant Participant GUID
612
+ # @param [Hash] access Access credentials
613
+ # @option access [String] :client_id
614
+ # @option access [String] :private_key
615
+ # @return [Array]
616
+ #
617
+ def public_fields!(options = {}, access = {})
618
+ api = Api::Request.new do |request|
619
+ request[:access] = access
620
+ request[:method] = :GET
621
+ request[:path] = "/signature/public/forms/#{id}/fields"
622
+ end
623
+ api.add_params(options)
624
+ json = api.execute!
625
+
626
+ json[:fields].map do |field|
627
+ Signature::Field.new(field)
628
+ end
629
+ end
630
+
631
+ #
632
+ # Changed in release 1.5.8
633
+ #
634
+ #
635
+ # Get signature form participant.
636
+ #
637
+ # @param [String] participant Participant GUID
638
+ # @param [Hash] access Access credentials
639
+ # @option access [String] :client_id
640
+ # @option access [String] :private_key
641
+ # @return [Array]
642
+ #
643
+ def participant!(participant, access = {})
644
+ json = Api::Request.new do |request|
645
+ request[:access] = access
646
+ request[:method] = :GET
647
+ request[:path] = "/signature/public/forms/#{form}/participants/#{participant}"
648
+ end.execute!
649
+
650
+ json[:participant]
651
+ end
652
+
653
+ #
654
+ # Changed in release 1.5.8
655
+ #
656
+ #
657
+ # Get signed form documents.
658
+ #
659
+ # @param [String] participant Participant GUID
660
+ # @param [Hash] access Access credentials
661
+ # @option access [String] :client_id
662
+ # @option access [String] :private_key
663
+ # @return [Array]
664
+ #
665
+ def public_signed_documents!(path, participant, access = {})
666
+ response = Api::Request.new do |request|
667
+ request[:access] = access
668
+ request[:method] = :DOWNLOAD
669
+ request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/documents/get"
670
+ end.execute!
671
+
672
+
673
+ filepath = "#{path}/#{name}."
674
+ if documents!.size == 1
675
+ filepath << 'pdf'
676
+ else
677
+ filepath << 'zip'
678
+ end
679
+
680
+ Object::File.open(filepath, 'wb') do |file|
681
+ file.write(response)
682
+ end
683
+
684
+ filepath
685
+ end
686
+
687
+ #
688
+ # Added in release 1.7.0
689
+ #
690
+ # Update Form Participant.
691
+ #
692
+ # @param [String] form Form GUID
693
+ # @param [String] participant Participant GUID
694
+ # @param [String] authentication Authentication signature
695
+ # @param [String] participant_name Participant Name
696
+ # @param [Hash] access Access credentials
697
+ # @option access [String] :client_id
698
+ # @option access [String] :private_key
699
+ # @return [Array]
700
+ #
701
+ def update_partipicant!(participant, email, access = {})
702
+ api = Api::Request.new do |request|
703
+ request[:access] = access
704
+ request[:method] = :PUT
705
+ request[:path] = "/signature/public/forms/#{id}/participant/#{participant}"
706
+ end
707
+ api.add_params(:email => email)
708
+ api.execute!
709
+ end
710
+
711
+ #
712
+ # Added in release 1.7.0
713
+ #
714
+ # Validate Particpiant Identity.
715
+ #
716
+ # @param [String] participant Participant GUID
717
+ # @param [String] code Code to be validated
718
+ # @param [Hash] access Access credentials
719
+ # @option access [String] :client_id
720
+ # @option access [String] :private_key
721
+ # @return [Array]
722
+ #
723
+ def validate_partipicant!(participant, code, access = {})
724
+ Api::Request.new do |request|
725
+ request[:access] = access
726
+ request[:method] = :GET
727
+ request[:path] = "/signature/public/forms/#{id}/participant/#{participant}/validationCode/#{code}"
728
+ end.execute!
729
+ end
730
+
731
+ #
732
+ # Added in release 1.7.0
733
+ #
734
+ # Get form fields for document in form per participant.
735
+ #
736
+ # @param [GroupDocs::Document] document
737
+ # @param [Hash] options
738
+ # @option options [String] :field Field GUID
739
+ # @param [Hash] access Access credentials
740
+ # @option access [String] :client_id
741
+ # @option access [String] :private_key
742
+ # @raise [ArgumentError] if document is not GroupDocs::Document
743
+ #
744
+ def document_fields!(document, options = {}, access = {})
745
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
746
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
747
+
748
+ api = Api::Request.new do |request|
749
+ request[:access] = access
750
+ request[:method] = :GET
751
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/documents/#{document.file.guid}/fields"
752
+ end
753
+ api.add_params(options)
754
+ json = api.execute!
755
+
756
+ json[:fields].map do |field|
757
+ Signature::Field.new(field)
758
+ end
759
+ end
760
+
761
+ #
762
+ # Added in release 1.7.0
763
+ #
764
+ # Get form audit logs
765
+ #
766
+ # @param [Hash] options
767
+ # @option options [String] :field Field GUID
768
+ # @param [Hash] access Access credentials
769
+ # @option access [String] :client_id
770
+ # @option access [String] :private_key
771
+ # @raise [ArgumentError] if document is not GroupDocs::Document
772
+ #
773
+ def get_logs!(access = {})
774
+
775
+ Api::Request.new do |request|
776
+ request[:access] = access
777
+ request[:method] = :GET
778
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/logs"
779
+ end.execute!
780
+ end
781
+
782
+ #
783
+ # Added in release 1.8.0
784
+ #
785
+ # Get form participants
786
+ #
787
+ # @param [Hash] options
788
+ # @option options [String] :field Field GUID
789
+ # @param [Hash] access Access credentials
790
+ # @option access [String] :client_id
791
+ # @option access [String] :private_key
792
+ # @raise [ArgumentError] if document is not GroupDocs::Document
793
+ #
794
+ def get_participants!(access = {})
795
+
796
+ Api::Request.new do |request|
797
+ request[:access] = access
798
+ request[:method] = :GET
799
+ request[:path] = "/signature/{{client_id}}/forms/#{id}/participants"
800
+ end.execute!
801
+ end
802
+
803
+ end # Signature::Form
804
+ end # GroupDocs