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,144 +1,144 @@
1
- module GroupDocs
2
- class Signature
3
- #
4
- # Envelope and template entities share the same set of methods.
5
- #
6
- # @see GroupDocs::Signature::Envelope
7
- # @see GroupDocs::Signature::Form
8
- # @see GroupDocs::Signature::Template
9
- #
10
- module EntityMethods
11
-
12
- def self.included(klass)
13
- klass.extend ClassMethods
14
- end
15
-
16
- module ClassMethods
17
- #
18
- # Returns template, envelope or form by its identifier.
19
- #
20
- # @param [String] id
21
- # @param [Hash] access Access credentials
22
- # @option access [String] :client_id
23
- # @option access [String] :private_key
24
- # @return [GroupDocs::Signature::Template, GroupDocs::Signature::Envelope, GroupDocs::Signature::Form]
25
- #
26
- def get!(id, access = {})
27
- class_name = self.name.split('::').last.downcase
28
-
29
- json = Api::Request.new do |request|
30
- request[:access] = access
31
- request[:method] = :GET
32
- request[:path] = "/signature/{{client_id}}/#{class_name}s/#{id}"
33
- end.execute!
34
- new(json[class_name.to_sym])
35
- end
36
- end # ClassMethods
37
-
38
- #
39
- # Creates template or envelope.
40
- #
41
- # @example Create new template
42
- # template = GroupDocs::Signature::Template.new
43
- # template.name = "Template"
44
- # template.email_subject = "Sing this!"
45
- # template.create!
46
- #
47
- # @example Create new envelope
48
- # envelope = GroupDocs::Signature::Envelope.new
49
- # envelope.name = "Envelope"
50
- # envelope.email_subject = "Sing this!"
51
- # envelope.create!
52
- #
53
- # @param [Hash] options Hash of options
54
- # @option options [String] :template_id Template GUID to use
55
- # @option options [String] :envelope_id Envelope GUID to use
56
- # @param [Hash] access Access credentials
57
- # @option access [String] :client_id
58
- # @option access [String] :private_key
59
- #
60
- def create!(options = {}, access = {})
61
- template_id = options.delete(:template_id)
62
- envelope_id = options.delete(:envelope_id)
63
- options[:templateId] = template_id if template_id
64
- options[:envelopeId] = envelope_id if envelope_id
65
-
66
- api = Api::Request.new do |request|
67
- request[:access] = access
68
- request[:method] = :POST
69
- request[:path] = "/signature/{{client_id}}/#{class_name}"
70
- request[:request_body] = to_hash
71
- end
72
- api.add_params(options.merge(:name => name))
73
- json = api.execute!
74
-
75
- self.id = json[class_name.to_sym][:id]
76
- end
77
-
78
- #
79
- # Modifies template, envelope or form.
80
- #
81
- # @example Modify template
82
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
83
- # template.name = "Template"
84
- # template.email_subject = "Sing this!"
85
- # template.modify!
86
- #
87
- # @example Modify envelope
88
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
89
- # envelope.name = "Envelope"
90
- # envelope.email_subject = "Sing this!"
91
- # envelope.modify!
92
- #
93
- # @param [Hash] access Access credentials
94
- # @option access [String] :client_id
95
- # @option access [String] :private_key
96
- #
97
- def modify!(access = {})
98
- Api::Request.new do |request|
99
- request[:access] = access
100
- request[:method] = :POST
101
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
102
- request[:request_body] = to_hash
103
- end.execute!
104
- end
105
-
106
- #
107
- # Renames template, envelope or form.
108
- #
109
- # @param [String] name New template name
110
- # @param [Hash] access Access credentials
111
- # @option access [String] :client_id
112
- # @option access [String] :private_key
113
- #
114
- def rename!(name, access = {})
115
- api = Api::Request.new do |request|
116
- request[:access] = access
117
- request[:method] = :PUT
118
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
119
- end
120
- key = (class_name == 'form' ? :new_name : :name )
121
- api.add_params(key => name)
122
- api.execute!
123
-
124
- self.name = name
125
- end
126
-
127
- #
128
- # Deletes template, envelope or form.
129
- #
130
- # @param [Hash] access Access credentials
131
- # @option access [String] :client_id
132
- # @option access [String] :private_key
133
- #
134
- def delete!(access = {})
135
- Api::Request.new do |request|
136
- request[:access] = access
137
- request[:method] = :DELETE
138
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
139
- end.execute!
140
- end
141
-
142
- end # EntityMethods
143
- end # Signature
144
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature
3
+ #
4
+ # Envelope and template entities share the same set of methods.
5
+ #
6
+ # @see GroupDocs::Signature::Envelope
7
+ # @see GroupDocs::Signature::Form
8
+ # @see GroupDocs::Signature::Template
9
+ #
10
+ module EntityMethods
11
+
12
+ def self.included(klass)
13
+ klass.extend ClassMethods
14
+ end
15
+
16
+ module ClassMethods
17
+ #
18
+ # Returns template, envelope or form by its identifier.
19
+ #
20
+ # @param [String] id
21
+ # @param [Hash] access Access credentials
22
+ # @option access [String] :client_id
23
+ # @option access [String] :private_key
24
+ # @return [GroupDocs::Signature::Template, GroupDocs::Signature::Envelope, GroupDocs::Signature::Form]
25
+ #
26
+ def get!(id, access = {})
27
+ class_name = self.name.split('::').last.downcase
28
+
29
+ json = Api::Request.new do |request|
30
+ request[:access] = access
31
+ request[:method] = :GET
32
+ request[:path] = "/signature/{{client_id}}/#{class_name}s/#{id}"
33
+ end.execute!
34
+ new(json[class_name.to_sym])
35
+ end
36
+ end # ClassMethods
37
+
38
+ #
39
+ # Creates template or envelope.
40
+ #
41
+ # @example Create new template
42
+ # template = GroupDocs::Signature::Template.new
43
+ # template.name = "Template"
44
+ # template.email_subject = "Sing this!"
45
+ # template.create!
46
+ #
47
+ # @example Create new envelope
48
+ # envelope = GroupDocs::Signature::Envelope.new
49
+ # envelope.name = "Envelope"
50
+ # envelope.email_subject = "Sing this!"
51
+ # envelope.create!
52
+ #
53
+ # @param [Hash] options Hash of options
54
+ # @option options [String] :template_id Template GUID to use
55
+ # @option options [String] :envelope_id Envelope GUID to use
56
+ # @param [Hash] access Access credentials
57
+ # @option access [String] :client_id
58
+ # @option access [String] :private_key
59
+ #
60
+ def create!(options = {}, access = {})
61
+ template_id = options.delete(:template_id)
62
+ envelope_id = options.delete(:envelope_id)
63
+ options[:templateId] = template_id if template_id
64
+ options[:envelopeId] = envelope_id if envelope_id
65
+
66
+ api = Api::Request.new do |request|
67
+ request[:access] = access
68
+ request[:method] = :POST
69
+ request[:path] = "/signature/{{client_id}}/#{class_name}"
70
+ request[:request_body] = to_hash
71
+ end
72
+ api.add_params(options.merge(:name => name))
73
+ json = api.execute!
74
+
75
+ self.id = json[class_name.to_sym][:id]
76
+ end
77
+
78
+ #
79
+ # Modifies template, envelope or form.
80
+ #
81
+ # @example Modify template
82
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
83
+ # template.name = "Template"
84
+ # template.email_subject = "Sing this!"
85
+ # template.modify!
86
+ #
87
+ # @example Modify envelope
88
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
89
+ # envelope.name = "Envelope"
90
+ # envelope.email_subject = "Sing this!"
91
+ # envelope.modify!
92
+ #
93
+ # @param [Hash] access Access credentials
94
+ # @option access [String] :client_id
95
+ # @option access [String] :private_key
96
+ #
97
+ def modify!(access = {})
98
+ Api::Request.new do |request|
99
+ request[:access] = access
100
+ request[:method] = :POST
101
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
102
+ request[:request_body] = to_hash
103
+ end.execute!
104
+ end
105
+
106
+ #
107
+ # Renames template, envelope or form.
108
+ #
109
+ # @param [String] name New template name
110
+ # @param [Hash] access Access credentials
111
+ # @option access [String] :client_id
112
+ # @option access [String] :private_key
113
+ #
114
+ def rename!(name, access = {})
115
+ api = Api::Request.new do |request|
116
+ request[:access] = access
117
+ request[:method] = :PUT
118
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
119
+ end
120
+ key = (class_name == 'form' ? :new_name : :name )
121
+ api.add_params(key => name)
122
+ api.execute!
123
+
124
+ self.name = name
125
+ end
126
+
127
+ #
128
+ # Deletes template, envelope or form.
129
+ #
130
+ # @param [Hash] access Access credentials
131
+ # @option access [String] :client_id
132
+ # @option access [String] :private_key
133
+ #
134
+ def delete!(access = {})
135
+ Api::Request.new do |request|
136
+ request[:access] = access
137
+ request[:method] = :DELETE
138
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}"
139
+ end.execute!
140
+ end
141
+
142
+ end # EntityMethods
143
+ end # Signature
144
+ end # GroupDocs
@@ -1,354 +1,354 @@
1
- module GroupDocs
2
- class Signature
3
- #
4
- # Envelope and template entities share the same set of field methods.
5
- #
6
- # @see GroupDocs::Signature::Envelope
7
- # @see GroupDocs::Signature::Form
8
- # @see GroupDocs::Signature::Template
9
- #
10
- module FieldMethods
11
-
12
- #
13
- # Changed in release 1.5.8
14
- #
15
- # Returns an array of fields for document and recipient.
16
- #
17
- # @example Get fields from template
18
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
19
- # document = template.documents!.first
20
- # recipient = template.recipients!.first
21
- # template.fields! document, recipient
22
- #
23
- # @example Get fields from envelope
24
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
25
- # document = envelope.documents!.first
26
- # recipient = envelope.recipients!.first
27
- # envelope.fields! document, recipient
28
- #
29
- # @param [GroupDocs::Document] document
30
- # @param [GroupDocs::Signature::Recipient] recipient
31
- # @param [String] field_guid Field GUID
32
- # @param [Hash] options
33
- # @option options [Boolean] :public Defaults to false
34
- # @param [Hash] access Access credentials
35
- # @option access [String] :client_id
36
- # @option access [String] :private_key
37
- # @raise [ArgumentError] if document is not GroupDocs::Document
38
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
39
- #
40
- def fields!(document, recipient, options = {}, access = {})
41
-
42
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
43
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
44
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
45
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
46
-
47
- client_id = client_id(options[:public])
48
- api = Api::Request.new do |request|
49
- request[:access] = access
50
- request[:method] = :GET
51
- request[:path] = "/signature/#{client_id}/#{class_name.pluralize}/#{id}/fields"
52
- end
53
- api.add_params(:document => document.file.guid, :recipient => recipient.id, :field => options[:field] )
54
- json = api.execute!
55
-
56
- json[:fields].map do |field|
57
- Signature::Field.new(field)
58
- end
59
- end
60
-
61
- #
62
- # Adds field for document and recipient.
63
- #
64
- # @example Add field to template
65
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
66
- # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
67
- # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
68
- # field.name = "Signer"
69
- # document = template.documents!.first
70
- # recipient = template.recipients!.first
71
- # template.add_field! field, document, recipient
72
- #
73
- # @example Add field to envelope
74
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
75
- # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
76
- # field.name = "Signer"
77
- # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
78
- # document = envelope.documents!.first
79
- # recipient = envelope.recipients!.first
80
- # envelope.add_field! field, document, recipient
81
- #
82
- # @param [GroupDocs::Signature::Field] field
83
- # @param [GroupDocs::Document] document
84
- # @param [GroupDocs::Signature::Recipient] recipient
85
- # @param [Hash] options
86
- # @option options [Boolean] :force_new_field Set to true to force new field create
87
- # @param [Hash] access Access credentials
88
- # @option access [String] :client_id
89
- # @option access [String] :private_key
90
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
91
- # @raise [ArgumentError] if document is not GroupDocs::Document
92
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
93
- # @raise [ArgumentError] if field does not specify location
94
- #
95
- def add_field!(field, document, recipient, opts = {}, access = {})
96
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
97
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
98
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
99
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
100
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
101
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
102
- field.location or raise ArgumentError,
103
- "You have to specify field location, received: #{field.location.inspect}"
104
-
105
- opts[:force_new_field] = true if opts[:force_new_field].nil?
106
- payload = field.to_hash # field itself
107
- payload.merge!(field.location.to_hash) # location should added in plain view (i.e. not "location": {...})
108
- payload.merge!(:forceNewField => opts[:force_new_field]) # create new field flag
109
-
110
- Api::Request.new do |request|
111
- request[:access] = access
112
- request[:method] = :POST
113
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/field/#{field.id}"
114
- request[:request_body] = payload
115
- end.execute!
116
- end
117
-
118
- #
119
- # Modifies document field.
120
- #
121
- # @example Modify template field
122
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
123
- # document = template.documents!.first
124
- # recipient = template.recipients!.first
125
- # field = template.fields!(document, recipient).first
126
- # field.name = "Field"
127
- # template.modify_field! field, document
128
- #
129
- # @example Modify envelope field
130
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
131
- # document = envelope.documents!.first
132
- # recipient = envelope.recipients!.first
133
- # field = envelope.fields!(document, recipient).first
134
- # field.name = "Field"
135
- # envelope.modify_field! field, document
136
- #
137
- # @param [GroupDocs::Signature::Field] field
138
- # @param [GroupDocs::Document] document
139
- # @param [Hash] access Access credentials
140
- # @option access [String] :client_id
141
- # @option access [String] :private_key
142
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
143
- # @raise [ArgumentError] if document is not GroupDocs::Document
144
- #
145
- def modify_field!(field, document, recipient, access = {})
146
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
147
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
148
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
149
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
150
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
151
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
152
-
153
- # prepare payload
154
- payload = field.to_hash # field itself
155
- payload.delete(:locations) # remove locations array
156
- payload.merge!(field.locations.first.to_hash) # location should added in plain view (i.e. not "locations": [{...}])
157
-
158
- Api::Request.new do |request|
159
- request[:access] = access
160
- request[:method] = :PUT
161
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipientGuid/#{recipient.id}field/#{field.id}"
162
- request[:request_body] = payload
163
- end.execute!
164
- end
165
-
166
- #
167
- # Assigns document field to new recipient.
168
- #
169
- # @example Assign template field
170
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
171
- # document = template.documents!.first
172
- # recipient_one = template.recipients![0]
173
- # recipient_two = template.recipients![1]
174
- # field = template.fields!(document, recipient).first
175
- # template.assign_field! field, document, recipient_one, recipient_two
176
- #
177
- # @example Assign envelope field
178
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
179
- # document = envelope.documents!.first
180
- # recipient_one = envelope.recipients![0]
181
- # recipient_two = envelope.recipients![1]
182
- # field = envelope.fields!(document, recipient).first
183
- # envelope.assign_field! field, document, recipient_one, recipient_two
184
- #
185
- # @param [GroupDocs::Signature::Field] field
186
- # @param [GroupDocs::Document] document
187
- # @param [GroupDocs::Signature::Recipient] assign_from
188
- # @param [GroupDocs::Signature::Recipient] assign_to
189
- # @param [Hash] access Access credentials
190
- # @option access [String] :client_id
191
- # @option access [String] :private_key
192
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
193
- # @raise [ArgumentError] if document is not GroupDocs::Document
194
- #
195
- def assign_field!(field, document, assign_from, assign_to, access = {})
196
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
197
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
198
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
199
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
200
- assign_from.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
201
- "Assign from should be GroupDocs::Signature::Recipient object, received: #{assign_from.inspect}"
202
- assign_to.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
203
- "Assign to should be GroupDocs::Signature::Recipient object, received: #{assign_to.inspect}"
204
-
205
- Api::Request.new do |request|
206
- request[:access] = access
207
- request[:method] = :POST
208
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/field/#{field.id}"
209
- request[:request_body] = { :currentRecipientId => assign_from.id, :newRecipientId => assign_to.id }
210
- end.execute!
211
- end
212
-
213
- #
214
- # Deletes field.
215
- #
216
- # @example Delete field from template
217
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
218
- # document = template.documents!.first
219
- # recipient = template.recipients!.first
220
- # field = template.fields!(document, recipient).first
221
- # template.delete_field! field
222
- #
223
- # @example Delete field from envelope
224
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
225
- # document = envelope.documents!.first
226
- # recipient = envelope.recipients!.first
227
- # field = envelope.fields!(document, recipient).first
228
- # envelope.delete_field! field
229
- #
230
- # @param [GroupDocs::Signature::Field] field
231
- # @param [Hash] access Access credentials
232
- # @option access [String] :client_id
233
- # @option access [String] :private_key
234
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
235
- #
236
- def delete_field!(field, access = {})
237
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
238
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
239
-
240
- Api::Request.new do |request|
241
- request[:access] = access
242
- request[:method] = :DELETE
243
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/fields/#{field.id}"
244
- end.execute!
245
- end
246
-
247
-
248
-
249
-
250
- #
251
- # Modifies field location.
252
- #
253
- # @example Modify field location in template
254
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
255
- # document = template.documents!.first
256
- # recipient = template.recipients!.first
257
- # field = template.fields!(document, recipient).first
258
- # location = field.locations.first
259
- # location.x = 0.123
260
- # location.y = 0.123
261
- # location.page = 2
262
- # template.modify_field_location! location, field, document, recipient
263
- #
264
- # @example Modify field location in envelope
265
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
266
- # document = envelope.documents!.first
267
- # recipient = envelope.recipients!.first
268
- # field = envelope.fields!(document, recipient).first
269
- # location = field.locations.first
270
- # location.x = 0.123
271
- # location.y = 0.123
272
- # location.page = 2
273
- # envelope.modify_field_location! location, field, document, recipient
274
- #
275
- # @param [GroupDocs::Signature::Field::Location] location
276
- # @param [GroupDocs::Signature::Field] field
277
- # @param [GroupDocs::Document] document
278
- # @param [GroupDocs::Signature::Recipient] recipient
279
- # @param [Hash] access Access credentials
280
- # @option access [String] :client_id
281
- # @option access [String] :private_key
282
- # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
283
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
284
- # @raise [ArgumentError] if document is not GroupDocs::Document
285
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
286
- #
287
- def modify_field_location!(location, field, document, recipient, access = {})
288
- location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
289
- "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
290
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
291
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
292
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
293
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
294
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
295
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
296
-
297
- Api::Request.new do |request|
298
- request[:access] = access
299
- request[:method] = :PUT
300
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/fields/#{field.id}/locations/#{location.id}"
301
- request[:request_body] = location.to_hash
302
- end.execute!
303
- end
304
-
305
- #
306
- # Deletes field location.
307
- #
308
- # @example Delete field location in template
309
- # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
310
- # document = template.documents!.first
311
- # recipient = template.recipients!.first
312
- # field = template.fields!(document, recipient).first
313
- # location = field.locations.first
314
- # template.delete_field_location! location, field
315
- #
316
- # @example Delete field location in envelope
317
- # envelope = GroupDocs::Signature::Envelop.get!("g94h5g84hj9g4gf23i40j")
318
- # document = envelope.documents!.first
319
- # recipient = envelope.recipients!.first
320
- # field = envelope.fields!(document, recipient).first
321
- # location = field.locations.first
322
- # envelope.delete_field_location! location, field
323
- #
324
- # @example Delete field location in form
325
- # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
326
- # document = form.documents!.first
327
- # field = form.fields!(document).first
328
- # location = field.locations.first
329
- # form.delete_field_location! location, field
330
- #
331
- # @param [GroupDocs::Signature::Field::Location] location
332
- # @param [GroupDocs::Signature::Field] field
333
- # @param [Hash] access Access credentials
334
- # @option access [String] :client_id
335
- # @option access [String] :private_key
336
- # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
337
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
338
- #
339
- def delete_field_location!(location, field, access = {})
340
- location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
341
- "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
342
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
343
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
344
-
345
- Api::Request.new do |request|
346
- request[:access] = access
347
- request[:method] = :DELETE
348
- request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/fields/#{field.id}/locations/#{location.id}"
349
- end.execute!
350
- end
351
-
352
- end # FieldMethods
353
- end # Signature
354
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature
3
+ #
4
+ # Envelope and template entities share the same set of field methods.
5
+ #
6
+ # @see GroupDocs::Signature::Envelope
7
+ # @see GroupDocs::Signature::Form
8
+ # @see GroupDocs::Signature::Template
9
+ #
10
+ module FieldMethods
11
+
12
+ #
13
+ # Changed in release 1.5.8
14
+ #
15
+ # Returns an array of fields for document and recipient.
16
+ #
17
+ # @example Get fields from template
18
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
19
+ # document = template.documents!.first
20
+ # recipient = template.recipients!.first
21
+ # template.fields! document, recipient
22
+ #
23
+ # @example Get fields from envelope
24
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
25
+ # document = envelope.documents!.first
26
+ # recipient = envelope.recipients!.first
27
+ # envelope.fields! document, recipient
28
+ #
29
+ # @param [GroupDocs::Document] document
30
+ # @param [GroupDocs::Signature::Recipient] recipient
31
+ # @param [String] field_guid Field GUID
32
+ # @param [Hash] options
33
+ # @option options [Boolean] :public Defaults to false
34
+ # @param [Hash] access Access credentials
35
+ # @option access [String] :client_id
36
+ # @option access [String] :private_key
37
+ # @raise [ArgumentError] if document is not GroupDocs::Document
38
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
39
+ #
40
+ def fields!(document, recipient, options = {}, access = {})
41
+
42
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
43
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
44
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
45
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
46
+
47
+ client_id = client_id(options[:public])
48
+ api = Api::Request.new do |request|
49
+ request[:access] = access
50
+ request[:method] = :GET
51
+ request[:path] = "/signature/#{client_id}/#{class_name.pluralize}/#{id}/fields"
52
+ end
53
+ api.add_params(:document => document.file.guid, :recipient => recipient.id, :field => options[:field] )
54
+ json = api.execute!
55
+
56
+ json[:fields].map do |field|
57
+ Signature::Field.new(field)
58
+ end
59
+ end
60
+
61
+ #
62
+ # Adds field for document and recipient.
63
+ #
64
+ # @example Add field to template
65
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
66
+ # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
67
+ # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
68
+ # field.name = "Signer"
69
+ # document = template.documents!.first
70
+ # recipient = template.recipients!.first
71
+ # template.add_field! field, document, recipient
72
+ #
73
+ # @example Add field to envelope
74
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
75
+ # field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
76
+ # field.name = "Signer"
77
+ # field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
78
+ # document = envelope.documents!.first
79
+ # recipient = envelope.recipients!.first
80
+ # envelope.add_field! field, document, recipient
81
+ #
82
+ # @param [GroupDocs::Signature::Field] field
83
+ # @param [GroupDocs::Document] document
84
+ # @param [GroupDocs::Signature::Recipient] recipient
85
+ # @param [Hash] options
86
+ # @option options [Boolean] :force_new_field Set to true to force new field create
87
+ # @param [Hash] access Access credentials
88
+ # @option access [String] :client_id
89
+ # @option access [String] :private_key
90
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
91
+ # @raise [ArgumentError] if document is not GroupDocs::Document
92
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
93
+ # @raise [ArgumentError] if field does not specify location
94
+ #
95
+ def add_field!(field, document, recipient, opts = {}, access = {})
96
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
97
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
98
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
99
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
100
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
101
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
102
+ field.location or raise ArgumentError,
103
+ "You have to specify field location, received: #{field.location.inspect}"
104
+
105
+ opts[:force_new_field] = true if opts[:force_new_field].nil?
106
+ payload = field.to_hash # field itself
107
+ payload.merge!(field.location.to_hash) # location should added in plain view (i.e. not "location": {...})
108
+ payload.merge!(:forceNewField => opts[:force_new_field]) # create new field flag
109
+
110
+ Api::Request.new do |request|
111
+ request[:access] = access
112
+ request[:method] = :POST
113
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/field/#{field.id}"
114
+ request[:request_body] = payload
115
+ end.execute!
116
+ end
117
+
118
+ #
119
+ # Modifies document field.
120
+ #
121
+ # @example Modify template field
122
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
123
+ # document = template.documents!.first
124
+ # recipient = template.recipients!.first
125
+ # field = template.fields!(document, recipient).first
126
+ # field.name = "Field"
127
+ # template.modify_field! field, document
128
+ #
129
+ # @example Modify envelope field
130
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
131
+ # document = envelope.documents!.first
132
+ # recipient = envelope.recipients!.first
133
+ # field = envelope.fields!(document, recipient).first
134
+ # field.name = "Field"
135
+ # envelope.modify_field! field, document
136
+ #
137
+ # @param [GroupDocs::Signature::Field] field
138
+ # @param [GroupDocs::Document] document
139
+ # @param [Hash] access Access credentials
140
+ # @option access [String] :client_id
141
+ # @option access [String] :private_key
142
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
143
+ # @raise [ArgumentError] if document is not GroupDocs::Document
144
+ #
145
+ def modify_field!(field, document, recipient, access = {})
146
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
147
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
148
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
149
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
150
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
151
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
152
+
153
+ # prepare payload
154
+ payload = field.to_hash # field itself
155
+ payload.delete(:locations) # remove locations array
156
+ payload.merge!(field.locations.first.to_hash) # location should added in plain view (i.e. not "locations": [{...}])
157
+
158
+ Api::Request.new do |request|
159
+ request[:access] = access
160
+ request[:method] = :PUT
161
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipientGuid/#{recipient.id}field/#{field.id}"
162
+ request[:request_body] = payload
163
+ end.execute!
164
+ end
165
+
166
+ #
167
+ # Assigns document field to new recipient.
168
+ #
169
+ # @example Assign template field
170
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
171
+ # document = template.documents!.first
172
+ # recipient_one = template.recipients![0]
173
+ # recipient_two = template.recipients![1]
174
+ # field = template.fields!(document, recipient).first
175
+ # template.assign_field! field, document, recipient_one, recipient_two
176
+ #
177
+ # @example Assign envelope field
178
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
179
+ # document = envelope.documents!.first
180
+ # recipient_one = envelope.recipients![0]
181
+ # recipient_two = envelope.recipients![1]
182
+ # field = envelope.fields!(document, recipient).first
183
+ # envelope.assign_field! field, document, recipient_one, recipient_two
184
+ #
185
+ # @param [GroupDocs::Signature::Field] field
186
+ # @param [GroupDocs::Document] document
187
+ # @param [GroupDocs::Signature::Recipient] assign_from
188
+ # @param [GroupDocs::Signature::Recipient] assign_to
189
+ # @param [Hash] access Access credentials
190
+ # @option access [String] :client_id
191
+ # @option access [String] :private_key
192
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
193
+ # @raise [ArgumentError] if document is not GroupDocs::Document
194
+ #
195
+ def assign_field!(field, document, assign_from, assign_to, access = {})
196
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
197
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
198
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
199
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
200
+ assign_from.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
201
+ "Assign from should be GroupDocs::Signature::Recipient object, received: #{assign_from.inspect}"
202
+ assign_to.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
203
+ "Assign to should be GroupDocs::Signature::Recipient object, received: #{assign_to.inspect}"
204
+
205
+ Api::Request.new do |request|
206
+ request[:access] = access
207
+ request[:method] = :POST
208
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/field/#{field.id}"
209
+ request[:request_body] = { :currentRecipientId => assign_from.id, :newRecipientId => assign_to.id }
210
+ end.execute!
211
+ end
212
+
213
+ #
214
+ # Deletes field.
215
+ #
216
+ # @example Delete field from template
217
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
218
+ # document = template.documents!.first
219
+ # recipient = template.recipients!.first
220
+ # field = template.fields!(document, recipient).first
221
+ # template.delete_field! field
222
+ #
223
+ # @example Delete field from envelope
224
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
225
+ # document = envelope.documents!.first
226
+ # recipient = envelope.recipients!.first
227
+ # field = envelope.fields!(document, recipient).first
228
+ # envelope.delete_field! field
229
+ #
230
+ # @param [GroupDocs::Signature::Field] field
231
+ # @param [Hash] access Access credentials
232
+ # @option access [String] :client_id
233
+ # @option access [String] :private_key
234
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
235
+ #
236
+ def delete_field!(field, access = {})
237
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
238
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
239
+
240
+ Api::Request.new do |request|
241
+ request[:access] = access
242
+ request[:method] = :DELETE
243
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/fields/#{field.id}"
244
+ end.execute!
245
+ end
246
+
247
+
248
+
249
+
250
+ #
251
+ # Modifies field location.
252
+ #
253
+ # @example Modify field location in template
254
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
255
+ # document = template.documents!.first
256
+ # recipient = template.recipients!.first
257
+ # field = template.fields!(document, recipient).first
258
+ # location = field.locations.first
259
+ # location.x = 0.123
260
+ # location.y = 0.123
261
+ # location.page = 2
262
+ # template.modify_field_location! location, field, document, recipient
263
+ #
264
+ # @example Modify field location in envelope
265
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
266
+ # document = envelope.documents!.first
267
+ # recipient = envelope.recipients!.first
268
+ # field = envelope.fields!(document, recipient).first
269
+ # location = field.locations.first
270
+ # location.x = 0.123
271
+ # location.y = 0.123
272
+ # location.page = 2
273
+ # envelope.modify_field_location! location, field, document, recipient
274
+ #
275
+ # @param [GroupDocs::Signature::Field::Location] location
276
+ # @param [GroupDocs::Signature::Field] field
277
+ # @param [GroupDocs::Document] document
278
+ # @param [GroupDocs::Signature::Recipient] recipient
279
+ # @param [Hash] access Access credentials
280
+ # @option access [String] :client_id
281
+ # @option access [String] :private_key
282
+ # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
283
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
284
+ # @raise [ArgumentError] if document is not GroupDocs::Document
285
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
286
+ #
287
+ def modify_field_location!(location, field, document, recipient, access = {})
288
+ location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
289
+ "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
290
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
291
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
292
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
293
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
294
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
295
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
296
+
297
+ Api::Request.new do |request|
298
+ request[:access] = access
299
+ request[:method] = :PUT
300
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/fields/#{field.id}/locations/#{location.id}"
301
+ request[:request_body] = location.to_hash
302
+ end.execute!
303
+ end
304
+
305
+ #
306
+ # Deletes field location.
307
+ #
308
+ # @example Delete field location in template
309
+ # template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
310
+ # document = template.documents!.first
311
+ # recipient = template.recipients!.first
312
+ # field = template.fields!(document, recipient).first
313
+ # location = field.locations.first
314
+ # template.delete_field_location! location, field
315
+ #
316
+ # @example Delete field location in envelope
317
+ # envelope = GroupDocs::Signature::Envelop.get!("g94h5g84hj9g4gf23i40j")
318
+ # document = envelope.documents!.first
319
+ # recipient = envelope.recipients!.first
320
+ # field = envelope.fields!(document, recipient).first
321
+ # location = field.locations.first
322
+ # envelope.delete_field_location! location, field
323
+ #
324
+ # @example Delete field location in form
325
+ # form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
326
+ # document = form.documents!.first
327
+ # field = form.fields!(document).first
328
+ # location = field.locations.first
329
+ # form.delete_field_location! location, field
330
+ #
331
+ # @param [GroupDocs::Signature::Field::Location] location
332
+ # @param [GroupDocs::Signature::Field] field
333
+ # @param [Hash] access Access credentials
334
+ # @option access [String] :client_id
335
+ # @option access [String] :private_key
336
+ # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
337
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
338
+ #
339
+ def delete_field_location!(location, field, access = {})
340
+ location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
341
+ "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
342
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
343
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
344
+
345
+ Api::Request.new do |request|
346
+ request[:access] = access
347
+ request[:method] = :DELETE
348
+ request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/fields/#{field.id}/locations/#{location.id}"
349
+ end.execute!
350
+ end
351
+
352
+ end # FieldMethods
353
+ end # Signature
354
+ end # GroupDocs