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,181 +1,181 @@
1
- module GroupDocs
2
- class Signature::Contact < Api::Entity
3
-
4
- INTEGRATION_PROVIDERS = {
5
- :local => 0,
6
- :groupdocs => 1,
7
- :google => 2,
8
- }
9
-
10
- #
11
- # Returns a list of all contacts.
12
- #
13
- # @param [Hash] options Hash of options
14
- # @option options [Integer] :page Page to start with
15
- # @option options [Integer] :records How many items to list
16
- # @option options [String] :firstName Filter by first name
17
- # @option options [String] :lastName Filter by last name
18
- # @option options [String] :email Filter by last name
19
- # @param [Hash] access Access credentials
20
- # @option access [String] :client_id
21
- # @option access [String] :private_key
22
- # @return [Array<GroupDocs::Signature::Contact>]
23
- #
24
- def self.get!(options = {}, access = {})
25
- api = Api::Request.new do |request|
26
- request[:access] = access
27
- request[:method] = :GET
28
- request[:path] = '/signature/{{client_id}}/contacts'
29
- end
30
- api.add_params(options)
31
- json = api.execute!
32
-
33
- json[:contacts].map do |contact|
34
- new(contact)
35
- end
36
- end
37
-
38
- #
39
- # Imports array of contacts.
40
- #
41
- # @example
42
- # contact_one = GroupDocs::Signature::Contact.new
43
- # contact_one.first_name = 'John'
44
- # contact_one.last_name = 'Smith'
45
- # contact_one.email = 'john@smith.com'
46
- # contact_two = GroupDocs::Signature::Contact.new
47
- # contact_two.first_name = 'Carla'
48
- # contact_two.last_name = 'Smith'
49
- # contact_two.email = 'carla@smith.com'
50
- # GroupDocs::Signature::Contact.import!([contact_one, contact_two])
51
- #
52
- # @param [Array<GroupDocs::Signature::Contact>] contacts
53
- # @param [Hash] access Access credentials
54
- # @option access [String] :client_id
55
- # @option access [String] :private_key
56
- #
57
- def self.import!(contacts, access = {})
58
- contacts.is_a?(Array) or raise ArgumentError, "Contacts should be array, received: #{contacts.inspect}"
59
- contacts.each do |contact|
60
- contact.is_a?(GroupDocs::Signature::Contact) or raise ArgumentError, "Contact should be GroupDocs::Signature::Contact, received: #{contact.inspect}"
61
- end
62
-
63
- Api::Request.new do |request|
64
- request[:access] = access
65
- request[:method] = :POST
66
- request[:path] = '/signature/{{client_id}}/contacts'
67
- request[:request_body] = contacts.map { |contact| contact.to_hash }
68
- end.execute!
69
- end
70
-
71
- #
72
- # Adds contact integration.
73
- #
74
- # @example Add Google contacts integration
75
- # integration = {
76
- # provider: :google,
77
- # refresh_token: 'token',
78
- # access_token: 'token',
79
- # access_token_expiration: '2014-12-12'
80
- # }
81
- #
82
- # @param [Hash] integration
83
- # @option integration [Symbol] provider One of :local, :groupdocs or :google
84
- # @option integration [String] refresh_token
85
- # @option integration [String] access_token
86
- # @option integration [String] access_token_exipration
87
- # @param [Hash] access Access credentials
88
- # @option access [String] :client_id
89
- # @option access [String] :private_key
90
- #
91
- def self.add_integration!(integration, access = {})
92
- payload = {
93
- :provider => INTEGRATION_PROVIDERS[integration[:provider]],
94
- :refreshToken => integration[:refresh_token],
95
- :accessToken => integration[:access_token],
96
- :accessTokenExpiration => integration[:access_token_expiration],
97
- }
98
-
99
- Api::Request.new do |request|
100
- request[:access] = access
101
- request[:method] = :POST
102
- request[:path] = '/signature/{{client_id}}/integration'
103
- request[:request_body] = payload
104
- end.execute!
105
- end
106
-
107
- # @attr [String] id
108
- attr_accessor :id
109
- # @attr [String] firstName
110
- attr_accessor :firstName
111
- # @attr [String] lastName
112
- attr_accessor :lastName
113
- # @attr [String] nickname
114
- attr_accessor :nickname
115
- # @attr [String] email
116
- attr_accessor :email
117
- # @attr [String] provider
118
- attr_accessor :provider
119
-
120
- # Human-readable accessors
121
- alias_accessor :first_name, :firstName
122
- alias_accessor :last_name, :lastName
123
-
124
- #
125
- # Adds contact.
126
- #
127
- # @example
128
- # contact = GroupDocs::Signature::Contact.new
129
- # contact.first_name = 'John'
130
- # contact.last_name = 'Smith'
131
- # contact.email = 'john@smith.com'
132
- # contact.add!
133
- #
134
- # @param [Hash] access Access credentials
135
- # @option access [String] :client_id
136
- # @option access [String] :private_key
137
- #
138
- def add!(access = {})
139
- json = Api::Request.new do |request|
140
- request[:access] = access
141
- request[:method] = :POST
142
- request[:path] = '/signature/{{client_id}}/contact'
143
- request[:request_body] = to_hash
144
- end.execute!
145
-
146
- self.id = json[:contact][:id]
147
- end
148
-
149
- #
150
- # Updates contact.
151
- #
152
- # @param [Hash] access Access credentials
153
- # @option access [String] :client_id
154
- # @option access [String] :private_key
155
- #
156
- def update!(access = {})
157
- Api::Request.new do |request|
158
- request[:access] = access
159
- request[:method] = :POST
160
- request[:path] = "/signature/{{client_id}}/contacts/#{id}"
161
- request[:request_body] = to_hash
162
- end.execute!
163
- end
164
-
165
- #
166
- # Deletes contact.
167
- #
168
- # @param [Hash] access Access credentials
169
- # @option access [String] :client_id
170
- # @option access [String] :private_key
171
- #
172
- def delete!(access = {})
173
- Api::Request.new do |request|
174
- request[:access] = access
175
- request[:method] = :DELETE
176
- request[:path] = "/signature/{{client_id}}/contacts/#{id}"
177
- end.execute!
178
- end
179
-
180
- end # Signature::Contact
181
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature::Contact < Api::Entity
3
+
4
+ INTEGRATION_PROVIDERS = {
5
+ :local => 0,
6
+ :groupdocs => 1,
7
+ :google => 2,
8
+ }
9
+
10
+ #
11
+ # Returns a list of all contacts.
12
+ #
13
+ # @param [Hash] options Hash of options
14
+ # @option options [Integer] :page Page to start with
15
+ # @option options [Integer] :records How many items to list
16
+ # @option options [String] :firstName Filter by first name
17
+ # @option options [String] :lastName Filter by last name
18
+ # @option options [String] :email Filter by last name
19
+ # @param [Hash] access Access credentials
20
+ # @option access [String] :client_id
21
+ # @option access [String] :private_key
22
+ # @return [Array<GroupDocs::Signature::Contact>]
23
+ #
24
+ def self.get!(options = {}, access = {})
25
+ api = Api::Request.new do |request|
26
+ request[:access] = access
27
+ request[:method] = :GET
28
+ request[:path] = '/signature/{{client_id}}/contacts'
29
+ end
30
+ api.add_params(options)
31
+ json = api.execute!
32
+
33
+ json[:contacts].map do |contact|
34
+ new(contact)
35
+ end
36
+ end
37
+
38
+ #
39
+ # Imports array of contacts.
40
+ #
41
+ # @example
42
+ # contact_one = GroupDocs::Signature::Contact.new
43
+ # contact_one.first_name = 'John'
44
+ # contact_one.last_name = 'Smith'
45
+ # contact_one.email = 'john@smith.com'
46
+ # contact_two = GroupDocs::Signature::Contact.new
47
+ # contact_two.first_name = 'Carla'
48
+ # contact_two.last_name = 'Smith'
49
+ # contact_two.email = 'carla@smith.com'
50
+ # GroupDocs::Signature::Contact.import!([contact_one, contact_two])
51
+ #
52
+ # @param [Array<GroupDocs::Signature::Contact>] contacts
53
+ # @param [Hash] access Access credentials
54
+ # @option access [String] :client_id
55
+ # @option access [String] :private_key
56
+ #
57
+ def self.import!(contacts, access = {})
58
+ contacts.is_a?(Array) or raise ArgumentError, "Contacts should be array, received: #{contacts.inspect}"
59
+ contacts.each do |contact|
60
+ contact.is_a?(GroupDocs::Signature::Contact) or raise ArgumentError, "Contact should be GroupDocs::Signature::Contact, received: #{contact.inspect}"
61
+ end
62
+
63
+ Api::Request.new do |request|
64
+ request[:access] = access
65
+ request[:method] = :POST
66
+ request[:path] = '/signature/{{client_id}}/contacts'
67
+ request[:request_body] = contacts.map { |contact| contact.to_hash }
68
+ end.execute!
69
+ end
70
+
71
+ #
72
+ # Adds contact integration.
73
+ #
74
+ # @example Add Google contacts integration
75
+ # integration = {
76
+ # provider: :google,
77
+ # refresh_token: 'token',
78
+ # access_token: 'token',
79
+ # access_token_expiration: '2014-12-12'
80
+ # }
81
+ #
82
+ # @param [Hash] integration
83
+ # @option integration [Symbol] provider One of :local, :groupdocs or :google
84
+ # @option integration [String] refresh_token
85
+ # @option integration [String] access_token
86
+ # @option integration [String] access_token_exipration
87
+ # @param [Hash] access Access credentials
88
+ # @option access [String] :client_id
89
+ # @option access [String] :private_key
90
+ #
91
+ def self.add_integration!(integration, access = {})
92
+ payload = {
93
+ :provider => INTEGRATION_PROVIDERS[integration[:provider]],
94
+ :refreshToken => integration[:refresh_token],
95
+ :accessToken => integration[:access_token],
96
+ :accessTokenExpiration => integration[:access_token_expiration],
97
+ }
98
+
99
+ Api::Request.new do |request|
100
+ request[:access] = access
101
+ request[:method] = :POST
102
+ request[:path] = '/signature/{{client_id}}/integration'
103
+ request[:request_body] = payload
104
+ end.execute!
105
+ end
106
+
107
+ # @attr [String] id
108
+ attr_accessor :id
109
+ # @attr [String] firstName
110
+ attr_accessor :firstName
111
+ # @attr [String] lastName
112
+ attr_accessor :lastName
113
+ # @attr [String] nickname
114
+ attr_accessor :nickname
115
+ # @attr [String] email
116
+ attr_accessor :email
117
+ # @attr [String] provider
118
+ attr_accessor :provider
119
+
120
+ # Human-readable accessors
121
+ alias_accessor :first_name, :firstName
122
+ alias_accessor :last_name, :lastName
123
+
124
+ #
125
+ # Adds contact.
126
+ #
127
+ # @example
128
+ # contact = GroupDocs::Signature::Contact.new
129
+ # contact.first_name = 'John'
130
+ # contact.last_name = 'Smith'
131
+ # contact.email = 'john@smith.com'
132
+ # contact.add!
133
+ #
134
+ # @param [Hash] access Access credentials
135
+ # @option access [String] :client_id
136
+ # @option access [String] :private_key
137
+ #
138
+ def add!(access = {})
139
+ json = Api::Request.new do |request|
140
+ request[:access] = access
141
+ request[:method] = :POST
142
+ request[:path] = '/signature/{{client_id}}/contact'
143
+ request[:request_body] = to_hash
144
+ end.execute!
145
+
146
+ self.id = json[:contact][:id]
147
+ end
148
+
149
+ #
150
+ # Updates contact.
151
+ #
152
+ # @param [Hash] access Access credentials
153
+ # @option access [String] :client_id
154
+ # @option access [String] :private_key
155
+ #
156
+ def update!(access = {})
157
+ Api::Request.new do |request|
158
+ request[:access] = access
159
+ request[:method] = :POST
160
+ request[:path] = "/signature/{{client_id}}/contacts/#{id}"
161
+ request[:request_body] = to_hash
162
+ end.execute!
163
+ end
164
+
165
+ #
166
+ # Deletes contact.
167
+ #
168
+ # @param [Hash] access Access credentials
169
+ # @option access [String] :client_id
170
+ # @option access [String] :private_key
171
+ #
172
+ def delete!(access = {})
173
+ Api::Request.new do |request|
174
+ request[:access] = access
175
+ request[:method] = :DELETE
176
+ request[:path] = "/signature/{{client_id}}/contacts/#{id}"
177
+ end.execute!
178
+ end
179
+
180
+ end # Signature::Contact
181
+ end # GroupDocs
@@ -1,747 +1,747 @@
1
- module GroupDocs
2
- class Signature::Envelope < Api::Entity
3
-
4
- require 'groupdocs/signature/envelope/log'
5
-
6
- STATUSES = {
7
- :draft => -1,
8
- :annotation => 0,
9
- :in_progress => 1,
10
- :expired => 2,
11
- :canceled => 3,
12
- :failed => 4,
13
- :completed => 5,
14
- :archived => 6,
15
- :scheduled => 99,
16
- }
17
-
18
- include Api::Helpers::SignaturePublic
19
- include Signature::DocumentMethods
20
- include Signature::EntityFields
21
- include Signature::EntityMethods
22
- include Signature::FieldMethods
23
- include Signature::RecipientMethods
24
- extend Signature::ResourceMethods
25
-
26
- #
27
- # Changed in release 1.7.0
28
- #
29
- #
30
- # Returns a list of all envelopes.
31
- #
32
- # @param [Hash] options Hash of options
33
- # @option options [Integer] :page Page to start with
34
- # @option options [Integer] :records How many items to list
35
- # @option options [Integer] :status_id Filter envelopes by status identifier
36
- # @option options [String] :document Filter envelopes by document GUID
37
- # @option options [String] :recipient Filter envelopes by recipient email
38
- # @option options [String] :date Filter envelopes by date
39
- # @option options [String] :name Filter envelopes by name
40
- # @option options [String] :tag Filter envelopes by tag
41
- # @param [Hash] access Access credentials
42
- # @option access [String] :client_id
43
- # @option access [String] :private_key
44
- # @return [Array<GroupDocs::Signature::Envelope>]
45
- #
46
- def self.all!(options = {}, access = {})
47
- status_id = options.delete(:status_id)
48
- options[:statusId] = status_id if status_id
49
-
50
- api = Api::Request.new do |request|
51
- request[:access] = access
52
- request[:method] = :GET
53
- request[:path] = '/signature/{{client_id}}/envelopes'
54
- end
55
- api.add_params(options)
56
- json = api.execute!
57
-
58
- json[:envelopes].map do |envelope|
59
- new(envelope)
60
- end
61
- end
62
-
63
- #
64
- # Returns a list of all envelopes where user is recipient.
65
- #
66
- # @param [Hash] options Hash of options
67
- # @option options [Integer] :page Page to start with
68
- # @option options [Integer] :records How many items to list
69
- # @option options [Integer] :statusId Filter by status identifier
70
- # @param [Hash] access Access credentials
71
- # @option access [String] :client_id
72
- # @option access [String] :private_key
73
- # @return [Array<GroupDocs::Signature::Envelope>]
74
- #
75
- def self.for_me!(options = {}, access = {})
76
- api = Api::Request.new do |request|
77
- request[:access] = access
78
- request[:method] = :GET
79
- request[:path] = '/signature/{{client_id}}/envelopes/recipient'
80
- end
81
- api.add_params(options)
82
- json = api.execute!
83
-
84
- json[:envelopes].map do |envelope|
85
- new(envelope)
86
- end
87
- end
88
-
89
- # @attr [String] creationDateTime
90
- attr_accessor :creationDateTime
91
- # @attr [Symbol] status
92
- attr_accessor :status
93
- # @attr [String] statusDateTime
94
- attr_accessor :statusDateTime
95
- # @attr [Integer] envelopeExpireTime
96
- attr_accessor :envelopeExpireTime
97
- # @attr [Boolean] isDemo
98
- attr_accessor :isDemo
99
-
100
- # added in release 1.7.0
101
- # @attr [String] updatedDateTime
102
- attr_accessor :updatedDateTime
103
- # @attr [Boolean] attachSignedDocument
104
- attr_accessor :attachSignedDocument
105
- # @attr [Boolean] includeViewLink
106
- attr_accessor :includeViewLink
107
- # @attr [Boolean] canBeCommented
108
- attr_accessor :canBeCommented
109
- # @attr [Boolean] inPersonSign
110
- attr_accessor :inPersonSign
111
- # @attr [String] ownerName
112
- attr_accessor :ownerName
113
- # @attr [Boolean] enableTypedSignature
114
- attr_accessor :enableTypedSignature
115
- # @attr [Boolean] enableUploadedSignature
116
- attr_accessor :enableUploadedSignature
117
- # @attr [Boolean] requireUserAuthForSign
118
- attr_accessor :requireUserAuthForSign
119
- # @attr [Boolean] requestUserAuthByPhoto
120
- attr_accessor :requestUserAuthByPhoto
121
- # @attr [Boolean] showRecipientCommentInSignedDocument
122
- attr_accessor :showRecipientCommentInSignedDocument
123
- # @attr [String] tags
124
- attr_accessor :tags
125
-
126
- # added in release 1.9.0
127
- # @attr [Boolean] lockDuringSign
128
- attr_accessor :lockDuringSign
129
-
130
- # Human-readable accessors
131
- alias_accessor :creation_date_time, :creationDateTime
132
- alias_accessor :status_date_time, :statusDateTime
133
- alias_accessor :envelope_expire_time, :envelopeExpireTime
134
- alias_accessor :is_demo, :isDemo
135
-
136
- #
137
- # Converts status to human-readable format.
138
- # @return [Symbol]
139
- #
140
- def status
141
- STATUSES.invert[@status]
142
- end
143
-
144
- #
145
- # Changed in release 1.5.8
146
- #
147
- # Adds recipient to envelope.
148
- #
149
- # @example
150
- # roles = GroupDocs::Signature::Role.get!
151
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
152
- # recipient = GroupDocs::Signature::Recipient.new
153
- # recipient.email = 'john@smith.com'
154
- # recipient.first_name = 'John'
155
- # recipient.last_name = 'Smith'
156
- # recipient.role_id = roles.detect { |role| role.name == "Signer" }.id
157
- # envelope.add_recipient! recipient
158
- #
159
- # @param [GroupDocs::Signature::Recipient] recipient
160
- # @param [Hash] access Access credentials
161
- # @option access [String] :client_id
162
- # @option access [String] :private_key
163
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
164
- #
165
- def add_recipient!(recipient, access = {})
166
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
167
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
168
-
169
- api = Api::Request.new do |request|
170
- request[:access] = access
171
- request[:method] = :POST
172
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient"
173
- end
174
- api.add_params(:email => recipient.email,
175
- :firstname => recipient.first_name,
176
- :lastname => recipient.last_name,
177
- :role => recipient.role_id,
178
- :order => recipient.order)
179
- json = api.execute!
180
- Signature::Recipient.new(json[:recipient])
181
-
182
- end
183
-
184
- #
185
- # Modify recipient of envelope.
186
- #
187
- # @example
188
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
189
- # recipient = envelope.recipients!.first
190
- # recipient.first_name = 'Johnny'
191
- # envelope.modify_recipient! recipient
192
- #
193
- # @param [GroupDocs::Signature::Recipient] recipient
194
- # @param [Hash] access Access credentials
195
- # @option access [String] :client_id
196
- # @option access [String] :private_key
197
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
198
- #
199
- def modify_recipient!(recipient, access = {})
200
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
201
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
202
-
203
- api = Api::Request.new do |request|
204
- request[:access] = access
205
- request[:method] = :PUT
206
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}"
207
- end
208
- api.add_params(:email => recipient.email,
209
- :firstname => recipient.first_name,
210
- :lastname => recipient.last_name,
211
- :role => recipient.role_id,
212
- :order => recipient.order)
213
- api.execute!
214
- end
215
-
216
- #
217
- # Delegates recipient to another one.
218
- #
219
- # @example
220
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
221
- # old = envelope.recipients!.first
222
- # old.first_name = 'Johnny'
223
- # new = GroupDocs::Signature::Recipient.new
224
- # new.email = 'john@smith.com'
225
- # new.first_name = 'John'
226
- # new.last_name = 'Smith'
227
- # envelope.delegate_recipient! old, new
228
- #
229
- # @param [GroupDocs::Signature::Recipient] old
230
- # @param [GroupDocs::Signature::Recipient] new
231
- # @param [Hash] access Access credentials
232
- # @option access [String] :client_id
233
- # @option access [String] :private_key
234
- # @raise [ArgumentError] if old recipient is not GroupDocs::Signature::Recipient
235
- # @raise [ArgumentError] if new recipient is not GroupDocs::Signature::Recipient
236
- #
237
- def delegate_recipient!(old, new, access = {})
238
- old.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
239
- "Old recipient should be GroupDocs::Signature::Recipient object, received: #{old.inspect}"
240
- new.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
241
- "New recipient should be GroupDocs::Signature::Recipient object, received: #{new.inspect}"
242
-
243
- api = Api::Request.new do |request|
244
- request[:access] = access
245
- request[:method] = :POST
246
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{old.id}/delegate"
247
- end
248
- api.add_params(:email => new.email,
249
- :firstname => new.first_name,
250
- :lastname => new.last_name)
251
- api.execute!
252
- end
253
-
254
- #
255
- # Fills field with value.
256
- #
257
- # Value differs depending on field type. See examples below.
258
- #
259
- # @example Fill single line field
260
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
261
- # document = envelope.documents!.first
262
- # recipient = envelope.recipients!.first
263
- # field = envelope.fields!(document, recipient).first
264
- # envelope.fill_field! "my_data", field, document, recipient
265
- #
266
- # @example Fill signature field
267
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
268
- # document = envelope.documents!.first
269
- # recipient = envelope.recipients!.first
270
- # field = envelope.fields!(document, recipient).first
271
- # signature = GroupDocs::Signature.get!.first
272
- # envelope.fill_field! signature, field, document, recipient
273
- #
274
- # @example Fill checkbox field
275
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
276
- # document = envelope.documents!.first
277
- # recipient = envelope.recipients!.first
278
- # field = envelope.fields!(document, recipient).first
279
- # envelope.fill_field! false, field, document, recipient
280
- #
281
- # @param [String, Boolean, GroupDocs::Signature] value
282
- # @param [GroupDocs::Signature::Field] field
283
- # @param [GroupDocs::Document] document
284
- # @param [GroupDocs::Signature::Recipient] recipient
285
- # @param [Hash] options
286
- # @option options [Boolean] :public Defaults to false
287
- # @param [Hash] access Access credentials
288
- # @option access [String] :client_id
289
- # @option access [String] :private_key
290
- # @return [GroupDocs::Signature::Field] filled field
291
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
292
- # @raise [ArgumentError] if document is not GroupDocs::Document
293
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
294
- #
295
- def fill_field!(value, field, document, recipient, options = {}, access = {})
296
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
297
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
298
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
299
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
300
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
301
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
302
-
303
- client_id = client_id(options[:public])
304
- api = Api::Request.new do |request|
305
- request[:access] = access
306
- request[:method] = :PUT
307
- request[:path] = "/signature/#{client_id}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/field/#{field.id}"
308
- end
309
-
310
- type = field.field_type
311
- if type == :signature && value.is_a?(GroupDocs::Signature)
312
- api.add_params(:signatureId => value.id)
313
- else
314
- if type == :checkbox
315
- value = (value ? 'on' : 'off')
316
- end
317
- api.options[:request_body] = value
318
- api.options[:plain] = true
319
- end
320
-
321
- json = api.execute!
322
- Signature::Field.new(json[:field])
323
- end
324
-
325
- #
326
- # Changed in release 1.7.0
327
- #
328
- # Signs envelope.
329
- #
330
- # @param [GroupDocs::Signature::Recipient] recipient
331
- # @param [Hash] settings
332
- # @option settings [String] :authData (required)
333
- # @option settings [String] :comment (required)
334
- # @param [Hash] options
335
- # @option options [Boolean] :public Defaults to false
336
- # @param [Hash] access Access credentials
337
- # @option access [String] :client_id
338
- # @option access [String] :private_key
339
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
340
- #
341
- def sign!(recipient, settings = {}, options = {}, access = {})
342
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
343
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
344
-
345
- client_id = client_id(options[:public])
346
- Api::Request.new do |request|
347
- request[:access] = access
348
- request[:method] = :PUT
349
- request[:path] = "/signature/#{client_id}/envelopes/#{id}/recipient/#{recipient.id}/sign"
350
- request[:request_body] = settings
351
- end.execute!
352
- end
353
-
354
- #
355
- # Declines envelope.
356
- #
357
- # @param [GroupDocs::Signature::Recipient] recipient
358
- # @param [Hash] access Access credentials
359
- # @option access [String] :client_id
360
- # @option access [String] :private_key
361
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
362
- #
363
- def decline!(recipient, access = {})
364
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
365
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
366
-
367
- Api::Request.new do |request|
368
- request[:access] = access
369
- request[:method] = :PUT
370
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}/decline"
371
- end.execute!
372
- end
373
-
374
- #
375
- # Downloads signed documents to given path.
376
- # If there is only one file in envelope, it's saved as PDF.
377
- # If there are two or more files in envelope, it's saved as ZIP.
378
- #
379
- # @param [String] path Directory to download file to
380
- # @param [Hash] access Access credentials
381
- # @option access [String] :client_id
382
- # @option access [String] :private_key
383
- # @return [String] path to file
384
- #
385
- def signed_documents!(path, access = {})
386
- response = Api::Request.new do |request|
387
- request[:access] = access
388
- request[:method] = :DOWNLOAD
389
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/get"
390
- end.execute!
391
-
392
- filepath = "#{path}/#{name}."
393
- if documents!.size == 1
394
- filepath << 'pdf'
395
- else
396
- filepath << 'zip'
397
- end
398
-
399
- Object::File.open(filepath, 'wb') do |file|
400
- file.write(response)
401
- end
402
-
403
- filepath
404
- end
405
-
406
- #
407
- # Changed in release 1.5.8
408
- #
409
- # Downloads signed document to given path.
410
- #
411
- # @param [GroupDocs::Document] document Signed document
412
- # @param [String] path Directory to download file to
413
- # @param [Hash] access Access credentials
414
- # @option access [String] :client_id
415
- # @option access [String] :private_key
416
- # @return [String] path to file
417
- #
418
- def signed_document!(document, path, access = {})
419
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
420
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
421
-
422
- response = Api::Request.new do |request|
423
- request[:access] = access
424
- request[:method] = :DOWNLOAD
425
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
426
- end.execute!
427
-
428
- document.file.name ? filepath = "#{path}/#{document.file.name}" : filepath = "#{path}/#{name}.pdf"
429
-
430
- Object::File.open(filepath, 'wb') do |file|
431
- file.write(response)
432
- end
433
-
434
- filepath
435
- end
436
-
437
- #
438
- # Returns a list of audit logs.
439
- #
440
- # @param [Hash] access Access credentials
441
- # @option access [String] :client_id
442
- # @option access [String] :private_key
443
- # @return [Array<GroupDocs::Signature::Envelope::Log>]
444
- #
445
- def logs!(access = {})
446
- json = Api::Request.new do |request|
447
- request[:access] = access
448
- request[:method] = :GET
449
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/logs"
450
- end.execute!
451
-
452
- json[:logs].map do |log|
453
- Log.new(log)
454
- end
455
- end
456
-
457
- #
458
- # Sends envelope.
459
- #
460
- # @param [Hash] webhook URL to be hooked after envelope is completed
461
- # @option webhook [String] :callbackUrl
462
- # @param [Hash] access Access credentials
463
- # @option access [String] :client_id
464
- # @option access [String] :private_key
465
- #
466
- def send!(webhook = {}, access = {})
467
- Api::Request.new do |request|
468
- request[:access] = access
469
- request[:method] = :PUT
470
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/send"
471
- request[:request_body] = webhook
472
- end.execute!
473
- end
474
-
475
- #
476
- # Archives completed envelope.
477
- #
478
- # @param [Hash] access Access credentials
479
- # @option access [String] :client_id
480
- # @option access [String] :private_key
481
- #
482
- def archive!(access = {})
483
- Api::Request.new do |request|
484
- request[:access] = access
485
- request[:method] = :PUT
486
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/archive"
487
- end.execute!
488
- end
489
-
490
- #
491
- # Restarts expired envelope.
492
- #
493
- # @param [Hash] access Access credentials
494
- # @option access [String] :client_id
495
- # @option access [String] :private_key
496
- #
497
- def restart!(access = {})
498
- Api::Request.new do |request|
499
- request[:access] = access
500
- request[:method] = :PUT
501
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/restart"
502
- end.execute!
503
- end
504
-
505
- #
506
- # Get signed envelope document.
507
- #
508
- # @example
509
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
510
- # document = GroupDocs::Storage::Folder.list!.last.to_document
511
- # envelope.add_document! document
512
- #
513
- # @param [GroupDocs::Document] document
514
- # @param [Hash] access Access credentials
515
- # @option access [String] :client_id
516
- # @option access [String] :private_key
517
- # @raise [ArgumentError] if document is not GroupDocs::Document
518
- #
519
- def get_envelope!(path, document, access = {})
520
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
521
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
522
-
523
- response = Api::Request.new do |request|
524
- request[:access] = access
525
- request[:method] = :GET
526
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
527
- end.execute!
528
-
529
- filepath = "#{path}/#{name}."
530
-
531
- if documents!.size == 1
532
- filepath << 'pdf'
533
- else
534
- filepath << 'zip'
535
- end
536
-
537
- Object::File.open(filepath, 'wb') do |file|
538
- file.write(response)
539
- end
540
-
541
- filepath
542
- end
543
-
544
- #
545
- # Cancel envelope.
546
- #
547
- # @param [Hash] access Access credentials
548
- # @option access [String] :client_id
549
- # @option access [String] :private_key
550
- #
551
- def cancel!( access = {})
552
- Api::Request.new do |request|
553
- request[:access] = access
554
- request[:method] = :PUT
555
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/cancel"
556
- end.execute!
557
- end
558
-
559
- #
560
- # Retry sign envelope.
561
- #
562
- # @param [Hash] access Access credentials
563
- # @option access [String] :client_id
564
- # @option access [String] :private_key
565
- #
566
- def retry!(access = {})
567
- Api::Request.new do |request|
568
- request[:access] = access
569
- request[:method] = :PUT
570
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/retry"
571
- end.execute!
572
- end
573
-
574
- #
575
- # Update envelope.
576
- #
577
- # @param [Hash] access Access credentials
578
- # @option access [String] :client_id
579
- # @option access [String] :private_key
580
- # @return [Array]
581
- #
582
- def update_envelope!(template, access = {})
583
- json = Api::Request.new do |request|
584
- request[:access] = access
585
- request[:method] = :POST
586
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/templates/#{template}"
587
- end.execute!
588
-
589
- json[:envelope]
590
-
591
- end
592
-
593
- #
594
- # Modify signature envelope field location.
595
- #
596
- # @example Modify field location in envelope
597
- # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
598
- # document = envelope.documents!.first
599
- # recipient = envelope.recipients!.first
600
- # field = envelope.fields!(document, recipient).first
601
- # location = field.locations.first
602
- # envelope.modify_field_location! location, field, document, recipient
603
- #
604
- # @param [GroupDocs::Signature::Field::Location] location
605
- # @param [GroupDocs::Signature::Field] field
606
- # @param [GroupDocs::Document] document
607
- # @param [GroupDocs::Signature::Recipient] recipient
608
- # @param [Integer] order Location order
609
- # @param [Hash] access Access credentials
610
- # @option access [String] :client_id
611
- # @option access [String] :private_key
612
- # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
613
- # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
614
- # @raise [ArgumentError] if document is not GroupDocs::Document
615
- # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
616
- #
617
- def modify_field_location!(location, field, document, recipient, order, access = {})
618
- location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
619
- "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
620
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
621
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
622
- document.is_a?(GroupDocs::Document) or raise ArgumentError,
623
- "Document should be GroupDocs::Document object, received: #{document.inspect}"
624
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
625
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
626
-
627
- api = Api::Request.new do |request|
628
- request[:access] = access
629
- request[:method] = :PUT
630
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/fields/#{field.id}/locations/#{location.id}"
631
- end
632
- api.add_params(:order => order)
633
- api.execute!
634
- end
635
-
636
- #
637
- # Changed in release 1.5.8
638
- #
639
- # Get signature envelope.
640
- #
641
- # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
642
- # @param [Hash] access Access credentials
643
- # @option access [String] :client_id
644
- # @option access [String] :private_key
645
- # @return [Array]
646
- #
647
- def public_get!(recipient, access = {})
648
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
649
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
650
-
651
- json = Api::Request.new do |request|
652
- request[:access] = access
653
- request[:method] = :GET
654
- request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}"
655
- end.execute!
656
-
657
- Signature::Envelope.new(json[:envelope])
658
- end
659
-
660
- #
661
- # Changed in release 1.5.8
662
- #
663
- # Public downloads signed documents to given path.
664
- #
665
- # If there is only one file in envelope, it's saved as PDF.
666
- # If there are two or more files in envelope, it's saved as ZIP.
667
- #
668
- # @param [String] path Directory to download file to
669
- # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
670
- # @param [Hash] access Access credentials
671
- # @option access [String] :client_id
672
- # @option access [String] :private_key
673
- # @return [Array]
674
- #
675
- def public_signed_documents!(path, recipient, access = {})
676
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
677
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
678
- json = Api::Request.new do |request|
679
- request[:access] = access
680
- request[:method] = :DOWNLOAD
681
- request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}/documents/get"
682
- end.execute!
683
- filepath = "#{path}/#{name}."
684
- if documents!.size == 1
685
- filepath << 'pdf'
686
- else
687
- filepath << 'zip'
688
- end
689
-
690
- Object::File.open(filepath, 'wb') do |file|
691
- file.write(json)
692
- end
693
-
694
- filepath
695
- end
696
-
697
-
698
- #
699
- # Changed in release 1.5.8
700
- #
701
- #
702
- # Get signed envelope field data.
703
- #
704
- # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
705
- # @param [GroupDocs::Signature::Field] field Field GUID
706
- # @param [Hash] access Access credentials
707
- # @option access [String] :client_id
708
- # @option access [String] :private_key
709
- # @return [Array]
710
- #
711
- def date!(recipient, field, access = {})
712
- field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
713
- "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
714
- recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
715
- "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
716
-
717
- Api::Request.new do |request|
718
- request[:access] = access
719
- request[:method] = :GET
720
- request[:path] = "/signature/public/envelopes/#{id}/fields/recipient/#{recipient.id}/field/#{field.id}"
721
- end.execute!
722
- end
723
-
724
-
725
- #
726
- # added in release 1.6.0
727
- #
728
- #
729
- # Resend envelope email notification.
730
- #
731
- # @param [Hash] access Access credentials
732
- # @option access [String] :client_id
733
- # @option access [String] :private_key
734
- #
735
- def resend!(access = {})
736
- Api::Request.new do |request|
737
- request[:access] = access
738
- request[:method] = :PUT
739
- request[:path] = "/signature/{{client_id}}/envelopes/#{id}/resend-notification"
740
- end.execute!
741
- end
742
-
743
-
744
-
745
-
746
- end # Signature::Envelope
747
- end # GroupDocs
1
+ module GroupDocs
2
+ class Signature::Envelope < Api::Entity
3
+
4
+ require 'groupdocs/signature/envelope/log'
5
+
6
+ STATUSES = {
7
+ :draft => -1,
8
+ :annotation => 0,
9
+ :in_progress => 1,
10
+ :expired => 2,
11
+ :canceled => 3,
12
+ :failed => 4,
13
+ :completed => 5,
14
+ :archived => 6,
15
+ :scheduled => 99,
16
+ }
17
+
18
+ include Api::Helpers::SignaturePublic
19
+ include Signature::DocumentMethods
20
+ include Signature::EntityFields
21
+ include Signature::EntityMethods
22
+ include Signature::FieldMethods
23
+ include Signature::RecipientMethods
24
+ extend Signature::ResourceMethods
25
+
26
+ #
27
+ # Changed in release 1.7.0
28
+ #
29
+ #
30
+ # Returns a list of all envelopes.
31
+ #
32
+ # @param [Hash] options Hash of options
33
+ # @option options [Integer] :page Page to start with
34
+ # @option options [Integer] :records How many items to list
35
+ # @option options [Integer] :status_id Filter envelopes by status identifier
36
+ # @option options [String] :document Filter envelopes by document GUID
37
+ # @option options [String] :recipient Filter envelopes by recipient email
38
+ # @option options [String] :date Filter envelopes by date
39
+ # @option options [String] :name Filter envelopes by name
40
+ # @option options [String] :tag Filter envelopes by tag
41
+ # @param [Hash] access Access credentials
42
+ # @option access [String] :client_id
43
+ # @option access [String] :private_key
44
+ # @return [Array<GroupDocs::Signature::Envelope>]
45
+ #
46
+ def self.all!(options = {}, access = {})
47
+ status_id = options.delete(:status_id)
48
+ options[:statusId] = status_id if status_id
49
+
50
+ api = Api::Request.new do |request|
51
+ request[:access] = access
52
+ request[:method] = :GET
53
+ request[:path] = '/signature/{{client_id}}/envelopes'
54
+ end
55
+ api.add_params(options)
56
+ json = api.execute!
57
+
58
+ json[:envelopes].map do |envelope|
59
+ new(envelope)
60
+ end
61
+ end
62
+
63
+ #
64
+ # Returns a list of all envelopes where user is recipient.
65
+ #
66
+ # @param [Hash] options Hash of options
67
+ # @option options [Integer] :page Page to start with
68
+ # @option options [Integer] :records How many items to list
69
+ # @option options [Integer] :statusId Filter by status identifier
70
+ # @param [Hash] access Access credentials
71
+ # @option access [String] :client_id
72
+ # @option access [String] :private_key
73
+ # @return [Array<GroupDocs::Signature::Envelope>]
74
+ #
75
+ def self.for_me!(options = {}, access = {})
76
+ api = Api::Request.new do |request|
77
+ request[:access] = access
78
+ request[:method] = :GET
79
+ request[:path] = '/signature/{{client_id}}/envelopes/recipient'
80
+ end
81
+ api.add_params(options)
82
+ json = api.execute!
83
+
84
+ json[:envelopes].map do |envelope|
85
+ new(envelope)
86
+ end
87
+ end
88
+
89
+ # @attr [String] creationDateTime
90
+ attr_accessor :creationDateTime
91
+ # @attr [Symbol] status
92
+ attr_accessor :status
93
+ # @attr [String] statusDateTime
94
+ attr_accessor :statusDateTime
95
+ # @attr [Integer] envelopeExpireTime
96
+ attr_accessor :envelopeExpireTime
97
+ # @attr [Boolean] isDemo
98
+ attr_accessor :isDemo
99
+
100
+ # added in release 1.7.0
101
+ # @attr [String] updatedDateTime
102
+ attr_accessor :updatedDateTime
103
+ # @attr [Boolean] attachSignedDocument
104
+ attr_accessor :attachSignedDocument
105
+ # @attr [Boolean] includeViewLink
106
+ attr_accessor :includeViewLink
107
+ # @attr [Boolean] canBeCommented
108
+ attr_accessor :canBeCommented
109
+ # @attr [Boolean] inPersonSign
110
+ attr_accessor :inPersonSign
111
+ # @attr [String] ownerName
112
+ attr_accessor :ownerName
113
+ # @attr [Boolean] enableTypedSignature
114
+ attr_accessor :enableTypedSignature
115
+ # @attr [Boolean] enableUploadedSignature
116
+ attr_accessor :enableUploadedSignature
117
+ # @attr [Boolean] requireUserAuthForSign
118
+ attr_accessor :requireUserAuthForSign
119
+ # @attr [Boolean] requestUserAuthByPhoto
120
+ attr_accessor :requestUserAuthByPhoto
121
+ # @attr [Boolean] showRecipientCommentInSignedDocument
122
+ attr_accessor :showRecipientCommentInSignedDocument
123
+ # @attr [String] tags
124
+ attr_accessor :tags
125
+
126
+ # added in release 1.9.0
127
+ # @attr [Boolean] lockDuringSign
128
+ attr_accessor :lockDuringSign
129
+
130
+ # Human-readable accessors
131
+ alias_accessor :creation_date_time, :creationDateTime
132
+ alias_accessor :status_date_time, :statusDateTime
133
+ alias_accessor :envelope_expire_time, :envelopeExpireTime
134
+ alias_accessor :is_demo, :isDemo
135
+
136
+ #
137
+ # Converts status to human-readable format.
138
+ # @return [Symbol]
139
+ #
140
+ def status
141
+ STATUSES.invert[@status]
142
+ end
143
+
144
+ #
145
+ # Changed in release 1.5.8
146
+ #
147
+ # Adds recipient to envelope.
148
+ #
149
+ # @example
150
+ # roles = GroupDocs::Signature::Role.get!
151
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
152
+ # recipient = GroupDocs::Signature::Recipient.new
153
+ # recipient.email = 'john@smith.com'
154
+ # recipient.first_name = 'John'
155
+ # recipient.last_name = 'Smith'
156
+ # recipient.role_id = roles.detect { |role| role.name == "Signer" }.id
157
+ # envelope.add_recipient! recipient
158
+ #
159
+ # @param [GroupDocs::Signature::Recipient] recipient
160
+ # @param [Hash] access Access credentials
161
+ # @option access [String] :client_id
162
+ # @option access [String] :private_key
163
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
164
+ #
165
+ def add_recipient!(recipient, access = {})
166
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
167
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
168
+
169
+ api = Api::Request.new do |request|
170
+ request[:access] = access
171
+ request[:method] = :POST
172
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient"
173
+ end
174
+ api.add_params(:email => recipient.email,
175
+ :firstname => recipient.first_name,
176
+ :lastname => recipient.last_name,
177
+ :role => recipient.role_id,
178
+ :order => recipient.order)
179
+ json = api.execute!
180
+ Signature::Recipient.new(json[:recipient])
181
+
182
+ end
183
+
184
+ #
185
+ # Modify recipient of envelope.
186
+ #
187
+ # @example
188
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
189
+ # recipient = envelope.recipients!.first
190
+ # recipient.first_name = 'Johnny'
191
+ # envelope.modify_recipient! recipient
192
+ #
193
+ # @param [GroupDocs::Signature::Recipient] recipient
194
+ # @param [Hash] access Access credentials
195
+ # @option access [String] :client_id
196
+ # @option access [String] :private_key
197
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
198
+ #
199
+ def modify_recipient!(recipient, access = {})
200
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
201
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
202
+
203
+ api = Api::Request.new do |request|
204
+ request[:access] = access
205
+ request[:method] = :PUT
206
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}"
207
+ end
208
+ api.add_params(:email => recipient.email,
209
+ :firstname => recipient.first_name,
210
+ :lastname => recipient.last_name,
211
+ :role => recipient.role_id,
212
+ :order => recipient.order)
213
+ api.execute!
214
+ end
215
+
216
+ #
217
+ # Delegates recipient to another one.
218
+ #
219
+ # @example
220
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
221
+ # old = envelope.recipients!.first
222
+ # old.first_name = 'Johnny'
223
+ # new = GroupDocs::Signature::Recipient.new
224
+ # new.email = 'john@smith.com'
225
+ # new.first_name = 'John'
226
+ # new.last_name = 'Smith'
227
+ # envelope.delegate_recipient! old, new
228
+ #
229
+ # @param [GroupDocs::Signature::Recipient] old
230
+ # @param [GroupDocs::Signature::Recipient] new
231
+ # @param [Hash] access Access credentials
232
+ # @option access [String] :client_id
233
+ # @option access [String] :private_key
234
+ # @raise [ArgumentError] if old recipient is not GroupDocs::Signature::Recipient
235
+ # @raise [ArgumentError] if new recipient is not GroupDocs::Signature::Recipient
236
+ #
237
+ def delegate_recipient!(old, new, access = {})
238
+ old.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
239
+ "Old recipient should be GroupDocs::Signature::Recipient object, received: #{old.inspect}"
240
+ new.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
241
+ "New recipient should be GroupDocs::Signature::Recipient object, received: #{new.inspect}"
242
+
243
+ api = Api::Request.new do |request|
244
+ request[:access] = access
245
+ request[:method] = :POST
246
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{old.id}/delegate"
247
+ end
248
+ api.add_params(:email => new.email,
249
+ :firstname => new.first_name,
250
+ :lastname => new.last_name)
251
+ api.execute!
252
+ end
253
+
254
+ #
255
+ # Fills field with value.
256
+ #
257
+ # Value differs depending on field type. See examples below.
258
+ #
259
+ # @example Fill single line field
260
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
261
+ # document = envelope.documents!.first
262
+ # recipient = envelope.recipients!.first
263
+ # field = envelope.fields!(document, recipient).first
264
+ # envelope.fill_field! "my_data", field, document, recipient
265
+ #
266
+ # @example Fill signature field
267
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
268
+ # document = envelope.documents!.first
269
+ # recipient = envelope.recipients!.first
270
+ # field = envelope.fields!(document, recipient).first
271
+ # signature = GroupDocs::Signature.get!.first
272
+ # envelope.fill_field! signature, field, document, recipient
273
+ #
274
+ # @example Fill checkbox field
275
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
276
+ # document = envelope.documents!.first
277
+ # recipient = envelope.recipients!.first
278
+ # field = envelope.fields!(document, recipient).first
279
+ # envelope.fill_field! false, field, document, recipient
280
+ #
281
+ # @param [String, Boolean, GroupDocs::Signature] value
282
+ # @param [GroupDocs::Signature::Field] field
283
+ # @param [GroupDocs::Document] document
284
+ # @param [GroupDocs::Signature::Recipient] recipient
285
+ # @param [Hash] options
286
+ # @option options [Boolean] :public Defaults to false
287
+ # @param [Hash] access Access credentials
288
+ # @option access [String] :client_id
289
+ # @option access [String] :private_key
290
+ # @return [GroupDocs::Signature::Field] filled field
291
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
292
+ # @raise [ArgumentError] if document is not GroupDocs::Document
293
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
294
+ #
295
+ def fill_field!(value, field, document, recipient, options = {}, access = {})
296
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
297
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
298
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
299
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
300
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
301
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
302
+
303
+ client_id = client_id(options[:public])
304
+ api = Api::Request.new do |request|
305
+ request[:access] = access
306
+ request[:method] = :PUT
307
+ request[:path] = "/signature/#{client_id}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/field/#{field.id}"
308
+ end
309
+
310
+ type = field.field_type
311
+ if type == :signature && value.is_a?(GroupDocs::Signature)
312
+ api.add_params(:signatureId => value.id)
313
+ else
314
+ if type == :checkbox
315
+ value = (value ? 'on' : 'off')
316
+ end
317
+ api.options[:request_body] = value
318
+ api.options[:plain] = true
319
+ end
320
+
321
+ json = api.execute!
322
+ Signature::Field.new(json[:field])
323
+ end
324
+
325
+ #
326
+ # Changed in release 1.7.0
327
+ #
328
+ # Signs envelope.
329
+ #
330
+ # @param [GroupDocs::Signature::Recipient] recipient
331
+ # @param [Hash] settings
332
+ # @option settings [String] :authData (required)
333
+ # @option settings [String] :comment (required)
334
+ # @param [Hash] options
335
+ # @option options [Boolean] :public Defaults to false
336
+ # @param [Hash] access Access credentials
337
+ # @option access [String] :client_id
338
+ # @option access [String] :private_key
339
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
340
+ #
341
+ def sign!(recipient, settings = {}, options = {}, access = {})
342
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
343
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
344
+
345
+ client_id = client_id(options[:public])
346
+ Api::Request.new do |request|
347
+ request[:access] = access
348
+ request[:method] = :PUT
349
+ request[:path] = "/signature/#{client_id}/envelopes/#{id}/recipient/#{recipient.id}/sign"
350
+ request[:request_body] = settings
351
+ end.execute!
352
+ end
353
+
354
+ #
355
+ # Declines envelope.
356
+ #
357
+ # @param [GroupDocs::Signature::Recipient] recipient
358
+ # @param [Hash] access Access credentials
359
+ # @option access [String] :client_id
360
+ # @option access [String] :private_key
361
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
362
+ #
363
+ def decline!(recipient, access = {})
364
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
365
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
366
+
367
+ Api::Request.new do |request|
368
+ request[:access] = access
369
+ request[:method] = :PUT
370
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/recipient/#{recipient.id}/decline"
371
+ end.execute!
372
+ end
373
+
374
+ #
375
+ # Downloads signed documents to given path.
376
+ # If there is only one file in envelope, it's saved as PDF.
377
+ # If there are two or more files in envelope, it's saved as ZIP.
378
+ #
379
+ # @param [String] path Directory to download file to
380
+ # @param [Hash] access Access credentials
381
+ # @option access [String] :client_id
382
+ # @option access [String] :private_key
383
+ # @return [String] path to file
384
+ #
385
+ def signed_documents!(path, access = {})
386
+ response = Api::Request.new do |request|
387
+ request[:access] = access
388
+ request[:method] = :DOWNLOAD
389
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/get"
390
+ end.execute!
391
+
392
+ filepath = "#{path}/#{name}."
393
+ if documents!.size == 1
394
+ filepath << 'pdf'
395
+ else
396
+ filepath << 'zip'
397
+ end
398
+
399
+ Object::File.open(filepath, 'wb') do |file|
400
+ file.write(response)
401
+ end
402
+
403
+ filepath
404
+ end
405
+
406
+ #
407
+ # Changed in release 1.5.8
408
+ #
409
+ # Downloads signed document to given path.
410
+ #
411
+ # @param [GroupDocs::Document] document Signed document
412
+ # @param [String] path Directory to download file to
413
+ # @param [Hash] access Access credentials
414
+ # @option access [String] :client_id
415
+ # @option access [String] :private_key
416
+ # @return [String] path to file
417
+ #
418
+ def signed_document!(document, path, access = {})
419
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
420
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
421
+
422
+ response = Api::Request.new do |request|
423
+ request[:access] = access
424
+ request[:method] = :DOWNLOAD
425
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
426
+ end.execute!
427
+
428
+ document.file.name ? filepath = "#{path}/#{document.file.name}" : filepath = "#{path}/#{name}.pdf"
429
+
430
+ Object::File.open(filepath, 'wb') do |file|
431
+ file.write(response)
432
+ end
433
+
434
+ filepath
435
+ end
436
+
437
+ #
438
+ # Returns a list of audit logs.
439
+ #
440
+ # @param [Hash] access Access credentials
441
+ # @option access [String] :client_id
442
+ # @option access [String] :private_key
443
+ # @return [Array<GroupDocs::Signature::Envelope::Log>]
444
+ #
445
+ def logs!(access = {})
446
+ json = Api::Request.new do |request|
447
+ request[:access] = access
448
+ request[:method] = :GET
449
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/logs"
450
+ end.execute!
451
+
452
+ json[:logs].map do |log|
453
+ Log.new(log)
454
+ end
455
+ end
456
+
457
+ #
458
+ # Sends envelope.
459
+ #
460
+ # @param [Hash] webhook URL to be hooked after envelope is completed
461
+ # @option webhook [String] :callbackUrl
462
+ # @param [Hash] access Access credentials
463
+ # @option access [String] :client_id
464
+ # @option access [String] :private_key
465
+ #
466
+ def send!(webhook = {}, access = {})
467
+ Api::Request.new do |request|
468
+ request[:access] = access
469
+ request[:method] = :PUT
470
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/send"
471
+ request[:request_body] = webhook
472
+ end.execute!
473
+ end
474
+
475
+ #
476
+ # Archives completed envelope.
477
+ #
478
+ # @param [Hash] access Access credentials
479
+ # @option access [String] :client_id
480
+ # @option access [String] :private_key
481
+ #
482
+ def archive!(access = {})
483
+ Api::Request.new do |request|
484
+ request[:access] = access
485
+ request[:method] = :PUT
486
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/archive"
487
+ end.execute!
488
+ end
489
+
490
+ #
491
+ # Restarts expired envelope.
492
+ #
493
+ # @param [Hash] access Access credentials
494
+ # @option access [String] :client_id
495
+ # @option access [String] :private_key
496
+ #
497
+ def restart!(access = {})
498
+ Api::Request.new do |request|
499
+ request[:access] = access
500
+ request[:method] = :PUT
501
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/restart"
502
+ end.execute!
503
+ end
504
+
505
+ #
506
+ # Get signed envelope document.
507
+ #
508
+ # @example
509
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
510
+ # document = GroupDocs::Storage::Folder.list!.last.to_document
511
+ # envelope.add_document! document
512
+ #
513
+ # @param [GroupDocs::Document] document
514
+ # @param [Hash] access Access credentials
515
+ # @option access [String] :client_id
516
+ # @option access [String] :private_key
517
+ # @raise [ArgumentError] if document is not GroupDocs::Document
518
+ #
519
+ def get_envelope!(path, document, access = {})
520
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
521
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
522
+
523
+ response = Api::Request.new do |request|
524
+ request[:access] = access
525
+ request[:method] = :GET
526
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/document/#{document.file.guid}"
527
+ end.execute!
528
+
529
+ filepath = "#{path}/#{name}."
530
+
531
+ if documents!.size == 1
532
+ filepath << 'pdf'
533
+ else
534
+ filepath << 'zip'
535
+ end
536
+
537
+ Object::File.open(filepath, 'wb') do |file|
538
+ file.write(response)
539
+ end
540
+
541
+ filepath
542
+ end
543
+
544
+ #
545
+ # Cancel envelope.
546
+ #
547
+ # @param [Hash] access Access credentials
548
+ # @option access [String] :client_id
549
+ # @option access [String] :private_key
550
+ #
551
+ def cancel!( access = {})
552
+ Api::Request.new do |request|
553
+ request[:access] = access
554
+ request[:method] = :PUT
555
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/cancel"
556
+ end.execute!
557
+ end
558
+
559
+ #
560
+ # Retry sign envelope.
561
+ #
562
+ # @param [Hash] access Access credentials
563
+ # @option access [String] :client_id
564
+ # @option access [String] :private_key
565
+ #
566
+ def retry!(access = {})
567
+ Api::Request.new do |request|
568
+ request[:access] = access
569
+ request[:method] = :PUT
570
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/retry"
571
+ end.execute!
572
+ end
573
+
574
+ #
575
+ # Update envelope.
576
+ #
577
+ # @param [Hash] access Access credentials
578
+ # @option access [String] :client_id
579
+ # @option access [String] :private_key
580
+ # @return [Array]
581
+ #
582
+ def update_envelope!(template, access = {})
583
+ json = Api::Request.new do |request|
584
+ request[:access] = access
585
+ request[:method] = :POST
586
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/templates/#{template}"
587
+ end.execute!
588
+
589
+ json[:envelope]
590
+
591
+ end
592
+
593
+ #
594
+ # Modify signature envelope field location.
595
+ #
596
+ # @example Modify field location in envelope
597
+ # envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
598
+ # document = envelope.documents!.first
599
+ # recipient = envelope.recipients!.first
600
+ # field = envelope.fields!(document, recipient).first
601
+ # location = field.locations.first
602
+ # envelope.modify_field_location! location, field, document, recipient
603
+ #
604
+ # @param [GroupDocs::Signature::Field::Location] location
605
+ # @param [GroupDocs::Signature::Field] field
606
+ # @param [GroupDocs::Document] document
607
+ # @param [GroupDocs::Signature::Recipient] recipient
608
+ # @param [Integer] order Location order
609
+ # @param [Hash] access Access credentials
610
+ # @option access [String] :client_id
611
+ # @option access [String] :private_key
612
+ # @raise [ArgumentError] if location is not GroupDocs::Signature::Field::Location
613
+ # @raise [ArgumentError] if field is not GroupDocs::Signature::Field
614
+ # @raise [ArgumentError] if document is not GroupDocs::Document
615
+ # @raise [ArgumentError] if recipient is not GroupDocs::Signature::Recipient
616
+ #
617
+ def modify_field_location!(location, field, document, recipient, order, access = {})
618
+ location.is_a?(GroupDocs::Signature::Field::Location) or raise ArgumentError,
619
+ "Location should be GroupDocs::Signature::Field::Location object, received: #{location.inspect}"
620
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
621
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
622
+ document.is_a?(GroupDocs::Document) or raise ArgumentError,
623
+ "Document should be GroupDocs::Document object, received: #{document.inspect}"
624
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
625
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
626
+
627
+ api = Api::Request.new do |request|
628
+ request[:access] = access
629
+ request[:method] = :PUT
630
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/documents/#{document.file.guid}/recipient/#{recipient.id}/fields/#{field.id}/locations/#{location.id}"
631
+ end
632
+ api.add_params(:order => order)
633
+ api.execute!
634
+ end
635
+
636
+ #
637
+ # Changed in release 1.5.8
638
+ #
639
+ # Get signature envelope.
640
+ #
641
+ # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
642
+ # @param [Hash] access Access credentials
643
+ # @option access [String] :client_id
644
+ # @option access [String] :private_key
645
+ # @return [Array]
646
+ #
647
+ def public_get!(recipient, access = {})
648
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
649
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
650
+
651
+ json = Api::Request.new do |request|
652
+ request[:access] = access
653
+ request[:method] = :GET
654
+ request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}"
655
+ end.execute!
656
+
657
+ Signature::Envelope.new(json[:envelope])
658
+ end
659
+
660
+ #
661
+ # Changed in release 1.5.8
662
+ #
663
+ # Public downloads signed documents to given path.
664
+ #
665
+ # If there is only one file in envelope, it's saved as PDF.
666
+ # If there are two or more files in envelope, it's saved as ZIP.
667
+ #
668
+ # @param [String] path Directory to download file to
669
+ # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
670
+ # @param [Hash] access Access credentials
671
+ # @option access [String] :client_id
672
+ # @option access [String] :private_key
673
+ # @return [Array]
674
+ #
675
+ def public_signed_documents!(path, recipient, access = {})
676
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
677
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
678
+ json = Api::Request.new do |request|
679
+ request[:access] = access
680
+ request[:method] = :DOWNLOAD
681
+ request[:path] = "/signature/public/envelopes/#{id}/recipient/#{recipient.id}/documents/get"
682
+ end.execute!
683
+ filepath = "#{path}/#{name}."
684
+ if documents!.size == 1
685
+ filepath << 'pdf'
686
+ else
687
+ filepath << 'zip'
688
+ end
689
+
690
+ Object::File.open(filepath, 'wb') do |file|
691
+ file.write(json)
692
+ end
693
+
694
+ filepath
695
+ end
696
+
697
+
698
+ #
699
+ # Changed in release 1.5.8
700
+ #
701
+ #
702
+ # Get signed envelope field data.
703
+ #
704
+ # @param [GroupDocs::Signature::Recipient] recipient Recipient GUID
705
+ # @param [GroupDocs::Signature::Field] field Field GUID
706
+ # @param [Hash] access Access credentials
707
+ # @option access [String] :client_id
708
+ # @option access [String] :private_key
709
+ # @return [Array]
710
+ #
711
+ def date!(recipient, field, access = {})
712
+ field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
713
+ "Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
714
+ recipient.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
715
+ "Recipient should be GroupDocs::Signature::Recipient object, received: #{recipient.inspect}"
716
+
717
+ Api::Request.new do |request|
718
+ request[:access] = access
719
+ request[:method] = :GET
720
+ request[:path] = "/signature/public/envelopes/#{id}/fields/recipient/#{recipient.id}/field/#{field.id}"
721
+ end.execute!
722
+ end
723
+
724
+
725
+ #
726
+ # added in release 1.6.0
727
+ #
728
+ #
729
+ # Resend envelope email notification.
730
+ #
731
+ # @param [Hash] access Access credentials
732
+ # @option access [String] :client_id
733
+ # @option access [String] :private_key
734
+ #
735
+ def resend!(access = {})
736
+ Api::Request.new do |request|
737
+ request[:access] = access
738
+ request[:method] = :PUT
739
+ request[:path] = "/signature/{{client_id}}/envelopes/#{id}/resend-notification"
740
+ end.execute!
741
+ end
742
+
743
+
744
+
745
+
746
+ end # Signature::Envelope
747
+ end # GroupDocs