groupdocs 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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