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.
- checksums.yaml +7 -0
- data/.travis.yml +9 -9
- data/CHANGELOG.md +482 -477
- data/Gemfile +3 -3
- data/LICENSE.txt +21 -21
- data/README.md +94 -94
- data/Rakefile +9 -9
- data/examples/README.md +12 -12
- data/examples/api-samples/Gemfile +5 -5
- data/examples/api-samples/Gemfile.lock +49 -49
- data/examples/api-samples/README.md +23 -23
- data/examples/api-samples/public/css/style.css +229 -229
- data/examples/api-samples/public/docs/annotation-sample.html +167 -167
- data/examples/api-samples/public/docs/docco.css +500 -500
- data/examples/api-samples/public/docs/envelope-sample.html +374 -374
- data/examples/api-samples/public/docs/sample01.html +181 -181
- data/examples/api-samples/public/docs/sample02.html +199 -199
- data/examples/api-samples/public/docs/sample03.html +318 -318
- data/examples/api-samples/public/docs/sample04.html +217 -217
- data/examples/api-samples/public/docs/sample05.html +296 -296
- data/examples/api-samples/public/docs/sample06.html +347 -347
- data/examples/api-samples/public/docs/sample07.html +209 -209
- data/examples/api-samples/public/docs/sample08.html +277 -277
- data/examples/api-samples/public/docs/sample09.html +314 -314
- data/examples/api-samples/public/docs/sample10.html +270 -270
- data/examples/api-samples/public/docs/sample11.html +462 -462
- data/examples/api-samples/public/docs/sample12.html +199 -199
- data/examples/api-samples/public/docs/sample13.html +201 -201
- data/examples/api-samples/public/docs/sample14.html +204 -204
- data/examples/api-samples/public/docs/sample15.html +182 -182
- data/examples/api-samples/public/docs/sample16.html +234 -234
- data/examples/api-samples/public/docs/sample17.html +309 -309
- data/examples/api-samples/public/docs/sample18.html +721 -721
- data/examples/api-samples/public/docs/sample19.html +631 -631
- data/examples/api-samples/public/docs/sample20.html +230 -230
- data/examples/api-samples/public/docs/sample21.html +790 -790
- data/examples/api-samples/public/docs/sample22.html +408 -408
- data/examples/api-samples/public/docs/sample25.html +550 -550
- data/examples/api-samples/public/templates/base-simple_source.html +191 -191
- data/examples/api-samples/public/templates/testdocument.html +100 -100
- data/examples/api-samples/public/templates/welcome.htm +137 -137
- data/examples/api-samples/samples/annotation-sample.rb +56 -56
- data/examples/api-samples/samples/envelope-sample.rb +133 -133
- data/examples/api-samples/samples/sample01.rb +44 -44
- data/examples/api-samples/samples/sample02.rb +50 -50
- data/examples/api-samples/samples/sample03.rb +79 -79
- data/examples/api-samples/samples/sample04.rb +54 -54
- data/examples/api-samples/samples/sample05.rb +83 -83
- data/examples/api-samples/samples/sample06.rb +86 -86
- data/examples/api-samples/samples/sample07.rb +59 -59
- data/examples/api-samples/samples/sample08.rb +76 -76
- data/examples/api-samples/samples/sample09.rb +85 -85
- data/examples/api-samples/samples/sample10.rb +70 -70
- data/examples/api-samples/samples/sample11.rb +132 -132
- data/examples/api-samples/samples/sample12.rb +48 -48
- data/examples/api-samples/samples/sample13.rb +49 -49
- data/examples/api-samples/samples/sample14.rb +54 -54
- data/examples/api-samples/samples/sample15.rb +43 -43
- data/examples/api-samples/samples/sample16.rb +57 -57
- data/examples/api-samples/samples/sample17.rb +70 -70
- data/examples/api-samples/samples/sample18.rb +190 -190
- data/examples/api-samples/samples/sample19.rb +188 -188
- data/examples/api-samples/samples/sample20.rb +68 -68
- data/examples/api-samples/samples/sample21.rb +212 -212
- data/examples/api-samples/samples/sample22.rb +109 -109
- data/examples/api-samples/samples/sample25.rb +127 -127
- data/examples/api-samples/views/_others_samples.haml +233 -233
- data/examples/api-samples/views/annotation_sample.haml +63 -63
- data/examples/api-samples/views/envelope_sample.haml +72 -72
- data/examples/api-samples/views/index.haml +235 -235
- data/examples/api-samples/views/layout.haml +3 -3
- data/examples/api-samples/views/sample01.haml +63 -63
- data/examples/api-samples/views/sample02.haml +52 -52
- data/examples/api-samples/views/sample03.haml +87 -87
- data/examples/api-samples/views/sample04.haml +55 -55
- data/examples/api-samples/views/sample05.haml +86 -86
- data/examples/api-samples/views/sample06.haml +58 -58
- data/examples/api-samples/views/sample07.haml +52 -52
- data/examples/api-samples/views/sample08.haml +100 -100
- data/examples/api-samples/views/sample09.haml +95 -95
- data/examples/api-samples/views/sample10.haml +93 -93
- data/examples/api-samples/views/sample11.haml +140 -140
- data/examples/api-samples/views/sample12.haml +68 -68
- data/examples/api-samples/views/sample13.haml +64 -64
- data/examples/api-samples/views/sample14.haml +60 -60
- data/examples/api-samples/views/sample15.haml +51 -51
- data/examples/api-samples/views/sample16.haml +50 -50
- data/examples/api-samples/views/sample17.haml +54 -54
- data/examples/api-samples/views/sample18.haml +143 -143
- data/examples/api-samples/views/sample19.haml +92 -92
- data/examples/api-samples/views/sample20.haml +54 -54
- data/examples/api-samples/views/sample21.haml +123 -123
- data/examples/api-samples/views/sample22.haml +106 -106
- data/examples/api-samples/views/sample25.haml +101 -101
- data/examples/api-samples/views/sample31.haml +2 -2
- data/examples/api-samples/web.rb +20 -20
- data/examples/viewer/Gemfile +5 -5
- data/examples/viewer/app.rb +52 -52
- data/groupdocs.gemspec +31 -31
- data/lib/groupdocs.rb +62 -62
- data/lib/groupdocs/api.rb +6 -6
- data/lib/groupdocs/api/entity.rb +112 -112
- data/lib/groupdocs/api/helpers.rb +11 -11
- data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
- data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
- data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
- data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
- data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
- data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
- data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
- data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
- data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
- data/lib/groupdocs/api/request.rb +91 -91
- data/lib/groupdocs/datasource.rb +249 -249
- data/lib/groupdocs/datasource/field.rb +39 -39
- data/lib/groupdocs/document.rb +1550 -1550
- data/lib/groupdocs/document/annotation.rb +421 -421
- data/lib/groupdocs/document/annotation/reply.rb +173 -173
- data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
- data/lib/groupdocs/document/change.rb +56 -56
- data/lib/groupdocs/document/field.rb +53 -53
- data/lib/groupdocs/document/metadata.rb +32 -32
- data/lib/groupdocs/document/rectangle.rb +18 -18
- data/lib/groupdocs/document/view.rb +36 -36
- data/lib/groupdocs/errors.rb +8 -8
- data/lib/groupdocs/job.rb +468 -468
- data/lib/groupdocs/questionnaire.rb +530 -530
- data/lib/groupdocs/questionnaire/collector.rb +335 -335
- data/lib/groupdocs/questionnaire/execution.rb +181 -181
- data/lib/groupdocs/questionnaire/page.rb +43 -43
- data/lib/groupdocs/questionnaire/question.rb +108 -108
- data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
- data/lib/groupdocs/signature.rb +380 -380
- data/lib/groupdocs/signature/contact.rb +181 -181
- data/lib/groupdocs/signature/envelope.rb +747 -747
- data/lib/groupdocs/signature/envelope/log.rb +20 -20
- data/lib/groupdocs/signature/field.rb +286 -286
- data/lib/groupdocs/signature/field/location.rb +71 -71
- data/lib/groupdocs/signature/form.rb +804 -804
- data/lib/groupdocs/signature/list.rb +92 -92
- data/lib/groupdocs/signature/recipient.rb +79 -79
- data/lib/groupdocs/signature/role.rb +54 -54
- data/lib/groupdocs/signature/shared.rb +6 -6
- data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
- data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
- data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
- data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
- data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
- data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
- data/lib/groupdocs/signature/template.rb +124 -124
- data/lib/groupdocs/storage.rb +44 -44
- data/lib/groupdocs/storage/file.rb +432 -432
- data/lib/groupdocs/storage/folder.rb +288 -288
- data/lib/groupdocs/storage/package.rb +48 -48
- data/lib/groupdocs/storage/provider.rb +32 -32
- data/lib/groupdocs/subscription.rb +323 -323
- data/lib/groupdocs/subscription/limit.rb +20 -20
- data/lib/groupdocs/user.rb +955 -930
- data/lib/groupdocs/version.rb +3 -3
- data/spec/groupdocs/api/entity_spec.rb +55 -55
- data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
- data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
- data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
- data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
- data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
- data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
- data/spec/groupdocs/api/request_spec.rb +112 -112
- data/spec/groupdocs/datasource/field_spec.rb +29 -29
- data/spec/groupdocs/datasource_spec.rb +145 -145
- data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
- data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
- data/spec/groupdocs/document/annotation_spec.rb +234 -234
- data/spec/groupdocs/document/change_spec.rb +39 -39
- data/spec/groupdocs/document/field_spec.rb +28 -28
- data/spec/groupdocs/document/metadata_spec.rb +21 -21
- data/spec/groupdocs/document/rectangle_spec.rb +14 -14
- data/spec/groupdocs/document/view_spec.rb +33 -33
- data/spec/groupdocs/document_spec.rb +859 -859
- data/spec/groupdocs/errors_spec.rb +7 -7
- data/spec/groupdocs/job_spec.rb +323 -323
- data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
- data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
- data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
- data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
- data/spec/groupdocs/questionnaire_spec.rb +295 -295
- data/spec/groupdocs/signature/contact_spec.rb +142 -142
- data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
- data/spec/groupdocs/signature/envelope_spec.rb +384 -384
- data/spec/groupdocs/signature/field/location_spec.rb +40 -40
- data/spec/groupdocs/signature/field_spec.rb +235 -235
- data/spec/groupdocs/signature/form_spec.rb +205 -205
- data/spec/groupdocs/signature/list_spec.rb +87 -87
- data/spec/groupdocs/signature/recipient_spec.rb +26 -26
- data/spec/groupdocs/signature/role_spec.rb +47 -47
- data/spec/groupdocs/signature/template_spec.rb +80 -80
- data/spec/groupdocs/signature_spec.rb +194 -194
- data/spec/groupdocs/storage/file_spec.rb +303 -303
- data/spec/groupdocs/storage/folder_spec.rb +270 -270
- data/spec/groupdocs/storage/package_spec.rb +38 -38
- data/spec/groupdocs/storage/provider_spec.rb +21 -21
- data/spec/groupdocs/storage_spec.rb +27 -27
- data/spec/groupdocs/subscription/limit_spec.rb +16 -16
- data/spec/groupdocs/subscription_spec.rb +74 -74
- data/spec/groupdocs/user_spec.rb +257 -257
- data/spec/groupdocs_spec.rb +63 -63
- data/spec/spec_helper.rb +73 -73
- data/spec/support/json/annotation_access_set.json +11 -11
- data/spec/support/json/annotation_collaborators_get.json +16 -16
- data/spec/support/json/annotation_collaborators_set.json +16 -16
- data/spec/support/json/annotation_create.json +12 -12
- data/spec/support/json/annotation_list.json +32 -32
- data/spec/support/json/annotation_marker_move.json +10 -10
- data/spec/support/json/annotation_move.json +8 -8
- data/spec/support/json/annotation_remove.json +9 -9
- data/spec/support/json/annotation_replies_create.json +9 -9
- data/spec/support/json/annotation_replies_get.json +25 -25
- data/spec/support/json/annotation_reviewers_get.json +18 -18
- data/spec/support/json/comparison_changes.json +46 -46
- data/spec/support/json/comparison_compare.json +8 -8
- data/spec/support/json/comparison_document.json +10 -10
- data/spec/support/json/contact_add.json +12 -12
- data/spec/support/json/contacts_get.json +19 -19
- data/spec/support/json/contacts_import.json +8 -8
- data/spec/support/json/datasource_add.json +8 -8
- data/spec/support/json/datasource_get.json +22 -22
- data/spec/support/json/datasource_remove.json +8 -8
- data/spec/support/json/datasource_update.json +8 -8
- data/spec/support/json/delete_account.json +9 -9
- data/spec/support/json/document_access_info_get.json +14 -14
- data/spec/support/json/document_convert.json +8 -8
- data/spec/support/json/document_datasource.json +10 -10
- data/spec/support/json/document_fields.json +34 -34
- data/spec/support/json/document_formats.json +8 -8
- data/spec/support/json/document_metadata.json +15 -15
- data/spec/support/json/document_page_images_get.json +20 -20
- data/spec/support/json/document_questionnaire_create.json +9 -9
- data/spec/support/json/document_questionnaires.json +23 -23
- data/spec/support/json/document_sharers_remove.json +8 -8
- data/spec/support/json/document_sharers_set.json +16 -16
- data/spec/support/json/document_thumbnails.json +24 -24
- data/spec/support/json/document_views.json +32 -32
- data/spec/support/json/envelope_get.json +46 -46
- data/spec/support/json/envelope_logs.json +16 -16
- data/spec/support/json/envelope_recipient_add.json +26 -26
- data/spec/support/json/envelopes_all.json +48 -48
- data/spec/support/json/envelopes_resources.json +31 -31
- data/spec/support/json/file_compress.json +8 -8
- data/spec/support/json/file_copy.json +14 -14
- data/spec/support/json/file_delete.json +5 -5
- data/spec/support/json/file_move.json +14 -14
- data/spec/support/json/file_upload.json +8 -8
- data/spec/support/json/folder_create.json +8 -8
- data/spec/support/json/folder_delete.json +5 -5
- data/spec/support/json/folder_list.json +22 -22
- data/spec/support/json/folder_move.json +8 -8
- data/spec/support/json/folder_sharers_get.json +16 -16
- data/spec/support/json/folder_sharers_remove.json +8 -8
- data/spec/support/json/folder_sharers_set.json +16 -16
- data/spec/support/json/form_get.json +21 -21
- data/spec/support/json/forms_all.json +23 -23
- data/spec/support/json/job_add_url.json +8 -8
- data/spec/support/json/job_create.json +8 -8
- data/spec/support/json/job_documents.json +40 -40
- data/spec/support/json/job_file_add.json +8 -8
- data/spec/support/json/job_get.json +30 -30
- data/spec/support/json/job_update.json +7 -7
- data/spec/support/json/jobs_get.json +58 -58
- data/spec/support/json/list_add.json +12 -12
- data/spec/support/json/lists_get.json +19 -19
- data/spec/support/json/package_create.json +7 -7
- data/spec/support/json/questionnaire_collector.json +17 -17
- data/spec/support/json/questionnaire_collectors.json +38 -38
- data/spec/support/json/questionnaire_collectors_add.json +10 -10
- data/spec/support/json/questionnaire_create.json +10 -10
- data/spec/support/json/questionnaire_datasources.json +26 -26
- data/spec/support/json/questionnaire_execution_add.json +9 -9
- data/spec/support/json/questionnaire_execution_status_set.json +8 -8
- data/spec/support/json/questionnaire_execution_update.json +8 -8
- data/spec/support/json/questionnaire_executions.json +28 -28
- data/spec/support/json/questionnaire_get.json +17 -17
- data/spec/support/json/questionnaire_remove.json +8 -8
- data/spec/support/json/questionnaire_update.json +8 -8
- data/spec/support/json/questionnaires_get.json +40 -40
- data/spec/support/json/sign_documents.json +16 -16
- data/spec/support/json/signature_create.json +12 -12
- data/spec/support/json/signature_field_add.json +25 -25
- data/spec/support/json/signature_fields_get.json +27 -27
- data/spec/support/json/signature_roles_get.json +17 -17
- data/spec/support/json/signatures_get.json +19 -19
- data/spec/support/json/storage_info.json +10 -10
- data/spec/support/json/subscription_plan_get.json +9 -9
- data/spec/support/json/subscription_plans_get.json +17 -17
- data/spec/support/json/template_get.json +35 -35
- data/spec/support/json/template_get_documents.json +15 -15
- data/spec/support/json/template_get_recipients.json +20 -20
- data/spec/support/json/templates_all.json +37 -37
- data/spec/support/json/templates_get.json +21 -21
- data/spec/support/json/update_account.json +10 -10
- data/spec/support/json/user_area.json +67 -67
- data/spec/support/json/user_embed_key.json +38 -38
- data/spec/support/json/user_get_embed_key.json +67 -67
- data/spec/support/json/user_login.json +67 -67
- data/spec/support/json/user_profile_get.json +24 -24
- data/spec/support/json/user_providers.json +31 -31
- data/spec/support/json/user_roles.json +25 -25
- data/spec/support/json/user_users_get.json +27 -27
- data/spec/support/shared_examples/api/entity.rb +39 -39
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
- data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
- data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
- data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
- data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
- data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
- data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
- metadata +35 -55
@@ -1,374 +1,374 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<title>envelope-sample.rb</title>
|
6
|
-
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
7
|
-
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
8
|
-
<link rel="stylesheet" media="all" href="docco.css" />
|
9
|
-
</head>
|
10
|
-
<body>
|
11
|
-
<div id="container">
|
12
|
-
<div id="background"></div>
|
13
|
-
|
14
|
-
<ul class="sections">
|
15
|
-
|
16
|
-
<li id="title">
|
17
|
-
<div class="annotation">
|
18
|
-
<h1>envelope-sample.rb</h1>
|
19
|
-
</div>
|
20
|
-
</li>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
<li id="section-1">
|
25
|
-
<div class="annotation">
|
26
|
-
|
27
|
-
<div class="pilwrap ">
|
28
|
-
<a class="pilcrow" href="#section-1">¶</a>
|
29
|
-
</div>
|
30
|
-
<p>GET request</p>
|
31
|
-
|
32
|
-
</div>
|
33
|
-
|
34
|
-
<div class="content"><div class='highlight'><pre>get <span class="string">'/envelope-sample'</span> <span class="keyword">do</span>
|
35
|
-
haml <span class="symbol">:envelope_sample</span>
|
36
|
-
<span class="keyword">end</span></pre></div></div>
|
37
|
-
|
38
|
-
</li>
|
39
|
-
|
40
|
-
|
41
|
-
<li id="section-2">
|
42
|
-
<div class="annotation">
|
43
|
-
|
44
|
-
<div class="pilwrap ">
|
45
|
-
<a class="pilcrow" href="#section-2">¶</a>
|
46
|
-
</div>
|
47
|
-
<p>POST request to handle callback when document was signed</p>
|
48
|
-
|
49
|
-
</div>
|
50
|
-
|
51
|
-
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample/sign'</span> <span class="keyword">do</span></pre></div></div>
|
52
|
-
|
53
|
-
</li>
|
54
|
-
|
55
|
-
|
56
|
-
<li id="section-3">
|
57
|
-
<div class="annotation">
|
58
|
-
|
59
|
-
<div class="pilwrap ">
|
60
|
-
<a class="pilcrow" href="#section-3">¶</a>
|
61
|
-
</div>
|
62
|
-
<p>Content Type of callback is application/json</p>
|
63
|
-
|
64
|
-
</div>
|
65
|
-
|
66
|
-
<div class="content"><div class='highlight'><pre> data = <span class="constant">JSON</span>.parse(request.body.read)
|
67
|
-
<span class="keyword">begin</span>
|
68
|
-
raise <span class="string">'Empty params!'</span> <span class="keyword">if</span> data.empty?</pre></div></div>
|
69
|
-
|
70
|
-
</li>
|
71
|
-
|
72
|
-
|
73
|
-
<li id="section-4">
|
74
|
-
<div class="annotation">
|
75
|
-
|
76
|
-
<div class="pilwrap ">
|
77
|
-
<a class="pilcrow" href="#section-4">¶</a>
|
78
|
-
</div>
|
79
|
-
<p>create empty file and write data as "key: value" to it</p>
|
80
|
-
|
81
|
-
</div>
|
82
|
-
|
83
|
-
<div class="content"><div class='highlight'><pre> out_file = <span class="constant">File</span>.new(<span class="string">'signed'</span>, <span class="string">'w'</span>)
|
84
|
-
data.each <span class="keyword">do</span> |key, value|
|
85
|
-
out_file.write(<span class="string">"<span class="subst">#{key}</span>: <span class="subst">#{value}</span> \n"</span>)
|
86
|
-
<span class="keyword">end</span>
|
87
|
-
out_file.close
|
88
|
-
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
89
|
-
err = e.message
|
90
|
-
<span class="keyword">end</span>
|
91
|
-
<span class="keyword">end</span></pre></div></div>
|
92
|
-
|
93
|
-
</li>
|
94
|
-
|
95
|
-
|
96
|
-
<li id="section-5">
|
97
|
-
<div class="annotation">
|
98
|
-
|
99
|
-
<div class="pilwrap ">
|
100
|
-
<a class="pilcrow" href="#section-5">¶</a>
|
101
|
-
</div>
|
102
|
-
<p>POST request to handle callback and download envelop when document was signed</p>
|
103
|
-
|
104
|
-
</div>
|
105
|
-
|
106
|
-
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample/sign-and-download'</span> <span class="keyword">do</span>
|
107
|
-
data = <span class="constant">JSON</span>.parse(request.body.read)
|
108
|
-
<span class="keyword">begin</span>
|
109
|
-
raise <span class="string">'Empty params!'</span> <span class="keyword">if</span> data.empty?
|
110
|
-
<span class="constant">GroupDocs</span>.configure <span class="keyword">do</span> |groupdocs|
|
111
|
-
groupdocs.client_id = <span class="string">''</span> <span class="comment"># Your client Client ID here</span>
|
112
|
-
groupdocs.private_key = <span class="string">''</span> <span class="comment"># Your API Key here</span>
|
113
|
-
groupdocs.api_server = <span class="string">'https://api.groupdocs.com'</span>
|
114
|
-
<span class="keyword">end</span>
|
115
|
-
data.each <span class="keyword">do</span> |key, value|
|
116
|
-
<span class="keyword">if</span> key == <span class="string">'SourceId'</span></pre></div></div>
|
117
|
-
|
118
|
-
</li>
|
119
|
-
|
120
|
-
|
121
|
-
<li id="section-6">
|
122
|
-
<div class="annotation">
|
123
|
-
|
124
|
-
<div class="pilwrap ">
|
125
|
-
<a class="pilcrow" href="#section-6">¶</a>
|
126
|
-
</div>
|
127
|
-
<p>Create envelop with id and name as SourceId parameter from callback</p>
|
128
|
-
|
129
|
-
</div>
|
130
|
-
|
131
|
-
<div class="content"><div class='highlight'><pre> envelope = <span class="constant">GroupDocs::Signature::Envelope</span>.new <span class="symbol">id:</span> value,
|
132
|
-
<span class="symbol">name:</span> value</pre></div></div>
|
133
|
-
|
134
|
-
</li>
|
135
|
-
|
136
|
-
|
137
|
-
<li id="section-7">
|
138
|
-
<div class="annotation">
|
139
|
-
|
140
|
-
<div class="pilwrap ">
|
141
|
-
<a class="pilcrow" href="#section-7">¶</a>
|
142
|
-
</div>
|
143
|
-
<p>download signed documents as archive</p>
|
144
|
-
|
145
|
-
</div>
|
146
|
-
|
147
|
-
<div class="content"><div class='highlight'><pre> envelope.signed_documents! <span class="string">'.'</span>
|
148
|
-
<span class="keyword">end</span>
|
149
|
-
<span class="keyword">end</span>
|
150
|
-
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
151
|
-
err = e.message
|
152
|
-
<span class="keyword">end</span>
|
153
|
-
<span class="keyword">end</span></pre></div></div>
|
154
|
-
|
155
|
-
</li>
|
156
|
-
|
157
|
-
|
158
|
-
<li id="section-8">
|
159
|
-
<div class="annotation">
|
160
|
-
|
161
|
-
<div class="pilwrap ">
|
162
|
-
<a class="pilcrow" href="#section-8">¶</a>
|
163
|
-
</div>
|
164
|
-
<p>GET request to check if envelop was signed</p>
|
165
|
-
|
166
|
-
</div>
|
167
|
-
|
168
|
-
<div class="content"><div class='highlight'><pre>get <span class="string">'/envelope-sample/check'</span> <span class="keyword">do</span>
|
169
|
-
<span class="keyword">if</span> <span class="constant">File</span>.exist?(<span class="string">'signed'</span>)
|
170
|
-
<span class="constant">File</span>.readlines(<span class="string">'signed'</span>).each <span class="keyword">do</span> |line|
|
171
|
-
<span class="keyword">end</span>
|
172
|
-
<span class="keyword">else</span>
|
173
|
-
<span class="string">'Have not signed yet'</span>
|
174
|
-
<span class="keyword">end</span>
|
175
|
-
<span class="keyword">end</span></pre></div></div>
|
176
|
-
|
177
|
-
</li>
|
178
|
-
|
179
|
-
|
180
|
-
<li id="section-9">
|
181
|
-
<div class="annotation">
|
182
|
-
|
183
|
-
<div class="pilwrap ">
|
184
|
-
<a class="pilcrow" href="#section-9">¶</a>
|
185
|
-
</div>
|
186
|
-
<p>POST request</p>
|
187
|
-
|
188
|
-
</div>
|
189
|
-
|
190
|
-
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample'</span> <span class="keyword">do</span>
|
191
|
-
set <span class="symbol">:client_id</span>, params[<span class="symbol">:client_id</span>]
|
192
|
-
set <span class="symbol">:private_key</span>, params[<span class="symbol">:private_key</span>]
|
193
|
-
|
194
|
-
<span class="keyword">begin</span>
|
195
|
-
raise <span class="string">'Please enter all required parameters'</span> <span class="keyword">if</span> settings.client_id.empty? <span class="keyword">or</span> settings.private_key.empty?
|
196
|
-
|
197
|
-
<span class="constant">GroupDocs</span>.configure <span class="keyword">do</span> |groupdocs|
|
198
|
-
groupdocs.client_id = params[<span class="symbol">:client_id</span>]
|
199
|
-
groupdocs.private_key = params[<span class="symbol">:private_key</span>]
|
200
|
-
groupdocs.api_server = <span class="string">'https://stage-api.groupdocs.com'</span>
|
201
|
-
<span class="keyword">end</span></pre></div></div>
|
202
|
-
|
203
|
-
</li>
|
204
|
-
|
205
|
-
|
206
|
-
<li id="section-10">
|
207
|
-
<div class="annotation">
|
208
|
-
|
209
|
-
<div class="pilwrap ">
|
210
|
-
<a class="pilcrow" href="#section-10">¶</a>
|
211
|
-
</div>
|
212
|
-
<p>upload document</p>
|
213
|
-
|
214
|
-
</div>
|
215
|
-
|
216
|
-
<div class="content"><div class='highlight'><pre> filepath = <span class="string">"<span class="subst">#{<span class="constant">Dir</span>.tmpdir}</span>/<span class="subst">#{params[<span class="symbol">:file</span>][<span class="symbol">:filename</span>]}</span>"</span>
|
217
|
-
<span class="constant">File</span>.open(filepath, <span class="string">'wb'</span>) { |f| f.write(params[<span class="symbol">:file</span>][<span class="symbol">:tempfile</span>].read) }
|
218
|
-
file = <span class="constant">GroupDocs::Storage::File</span>.upload!(filepath, {}, <span class="symbol">client_id:</span> settings.client_id, <span class="symbol">private_key:</span> settings.private_key)
|
219
|
-
document = file.to_document</pre></div></div>
|
220
|
-
|
221
|
-
</li>
|
222
|
-
|
223
|
-
|
224
|
-
<li id="section-11">
|
225
|
-
<div class="annotation">
|
226
|
-
|
227
|
-
<div class="pilwrap ">
|
228
|
-
<a class="pilcrow" href="#section-11">¶</a>
|
229
|
-
</div>
|
230
|
-
<p>create envelope</p>
|
231
|
-
|
232
|
-
</div>
|
233
|
-
|
234
|
-
<div class="content"><div class='highlight'><pre> envelope = <span class="constant">GroupDocs::Signature::Envelope</span>.new
|
235
|
-
envelope.name = <span class="string">'Envelope'</span>
|
236
|
-
envelope.email_subject = <span class="string">'Sing this!'</span>
|
237
|
-
envelope.create!</pre></div></div>
|
238
|
-
|
239
|
-
</li>
|
240
|
-
|
241
|
-
|
242
|
-
<li id="section-12">
|
243
|
-
<div class="annotation">
|
244
|
-
|
245
|
-
<div class="pilwrap ">
|
246
|
-
<a class="pilcrow" href="#section-12">¶</a>
|
247
|
-
</div>
|
248
|
-
<p>add document to envelope</p>
|
249
|
-
|
250
|
-
</div>
|
251
|
-
|
252
|
-
<div class="content"><div class='highlight'><pre> envelope.add_document! document</pre></div></div>
|
253
|
-
|
254
|
-
</li>
|
255
|
-
|
256
|
-
|
257
|
-
<li id="section-13">
|
258
|
-
<div class="annotation">
|
259
|
-
|
260
|
-
<div class="pilwrap ">
|
261
|
-
<a class="pilcrow" href="#section-13">¶</a>
|
262
|
-
</div>
|
263
|
-
<p>update document object after it's created</p>
|
264
|
-
|
265
|
-
</div>
|
266
|
-
|
267
|
-
<div class="content"><div class='highlight'><pre> document = envelope.documents!.first</pre></div></div>
|
268
|
-
|
269
|
-
</li>
|
270
|
-
|
271
|
-
|
272
|
-
<li id="section-14">
|
273
|
-
<div class="annotation">
|
274
|
-
|
275
|
-
<div class="pilwrap ">
|
276
|
-
<a class="pilcrow" href="#section-14">¶</a>
|
277
|
-
</div>
|
278
|
-
<p>add new recipient to envelope</p>
|
279
|
-
|
280
|
-
</div>
|
281
|
-
|
282
|
-
<div class="content"><div class='highlight'><pre> roles = <span class="constant">GroupDocs::Signature::Role</span>.get!
|
283
|
-
recipient = <span class="constant">GroupDocs::Signature::Recipient</span>.new
|
284
|
-
recipient.email = <span class="string">'john@smith.com'</span>
|
285
|
-
recipient.first_name = <span class="string">'John'</span>
|
286
|
-
recipient.last_name = <span class="string">'Smith'</span>
|
287
|
-
recipient.role_id = roles.detect { |role| role.name == <span class="string">'Signer'</span> }.id
|
288
|
-
envelope.add_recipient! recipient</pre></div></div>
|
289
|
-
|
290
|
-
</li>
|
291
|
-
|
292
|
-
|
293
|
-
<li id="section-15">
|
294
|
-
<div class="annotation">
|
295
|
-
|
296
|
-
<div class="pilwrap ">
|
297
|
-
<a class="pilcrow" href="#section-15">¶</a>
|
298
|
-
</div>
|
299
|
-
<p>update recipient object after it's created</p>
|
300
|
-
|
301
|
-
</div>
|
302
|
-
|
303
|
-
<div class="content"><div class='highlight'><pre> recipient = envelope.recipients!.first</pre></div></div>
|
304
|
-
|
305
|
-
</li>
|
306
|
-
|
307
|
-
|
308
|
-
<li id="section-16">
|
309
|
-
<div class="annotation">
|
310
|
-
|
311
|
-
<div class="pilwrap ">
|
312
|
-
<a class="pilcrow" href="#section-16">¶</a>
|
313
|
-
</div>
|
314
|
-
<p>You can add fields manually.</p>
|
315
|
-
<p>add city field to envelope
|
316
|
-
field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
|
317
|
-
field.name = 'City'
|
318
|
-
field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
|
319
|
-
envelope.add_field! field, document, recipient</p>
|
320
|
-
<p>add signature field to envelope
|
321
|
-
field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
322
|
-
field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
|
323
|
-
envelope.add_field! field, document, recipient</p>
|
324
|
-
<p>URL for callback
|
325
|
-
webhook = '<a href="http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign">http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign</a>'</p>
|
326
|
-
|
327
|
-
</div>
|
328
|
-
|
329
|
-
<div class="content"><div class='highlight'><pre> webhook = <span class="string">'http://77.81.243.48/?q=groupdocs_signature/signature_callback'</span></pre></div></div>
|
330
|
-
|
331
|
-
</li>
|
332
|
-
|
333
|
-
|
334
|
-
<li id="section-17">
|
335
|
-
<div class="annotation">
|
336
|
-
|
337
|
-
<div class="pilwrap ">
|
338
|
-
<a class="pilcrow" href="#section-17">¶</a>
|
339
|
-
</div>
|
340
|
-
<p>send envelope</p>
|
341
|
-
|
342
|
-
</div>
|
343
|
-
|
344
|
-
<div class="content"><div class='highlight'><pre> envelope.send! webhook</pre></div></div>
|
345
|
-
|
346
|
-
</li>
|
347
|
-
|
348
|
-
|
349
|
-
<li id="section-18">
|
350
|
-
<div class="annotation">
|
351
|
-
|
352
|
-
<div class="pilwrap ">
|
353
|
-
<a class="pilcrow" href="#section-18">¶</a>
|
354
|
-
</div>
|
355
|
-
<p>construct embedded signature url</p>
|
356
|
-
|
357
|
-
</div>
|
358
|
-
|
359
|
-
<div class="content"><div class='highlight'><pre> url = <span class="string">"https://stage-apps.groupdocs.com/signature/signembed/<span class="subst">#{envelope.id}</span>/<span class="subst">#{recipient.id}</span>"</span>
|
360
|
-
iframe = <span class="string">"<iframe src='<span class="subst">#{url}</span>' frameborder='0' width='720' height='600'></iframe>"</span>
|
361
|
-
|
362
|
-
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
363
|
-
err = e.message
|
364
|
-
<span class="keyword">end</span>
|
365
|
-
|
366
|
-
haml <span class="symbol">:envelope_sample</span>, <span class="symbol">:locals</span> => {<span class="symbol">:client_id</span> => settings.client_id, <span class="symbol">:private_key</span> => settings.private_key, <span class="symbol">:err</span> => err, <span class="symbol">:iframe</span> => iframe}
|
367
|
-
<span class="keyword">end</span></pre></div></div>
|
368
|
-
|
369
|
-
</li>
|
370
|
-
|
371
|
-
</ul>
|
372
|
-
</div>
|
373
|
-
</body>
|
374
|
-
</html>
|
1
|
+
<!DOCTYPE html>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<title>envelope-sample.rb</title>
|
6
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
7
|
+
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
|
8
|
+
<link rel="stylesheet" media="all" href="docco.css" />
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id="container">
|
12
|
+
<div id="background"></div>
|
13
|
+
|
14
|
+
<ul class="sections">
|
15
|
+
|
16
|
+
<li id="title">
|
17
|
+
<div class="annotation">
|
18
|
+
<h1>envelope-sample.rb</h1>
|
19
|
+
</div>
|
20
|
+
</li>
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
<li id="section-1">
|
25
|
+
<div class="annotation">
|
26
|
+
|
27
|
+
<div class="pilwrap ">
|
28
|
+
<a class="pilcrow" href="#section-1">¶</a>
|
29
|
+
</div>
|
30
|
+
<p>GET request</p>
|
31
|
+
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<div class="content"><div class='highlight'><pre>get <span class="string">'/envelope-sample'</span> <span class="keyword">do</span>
|
35
|
+
haml <span class="symbol">:envelope_sample</span>
|
36
|
+
<span class="keyword">end</span></pre></div></div>
|
37
|
+
|
38
|
+
</li>
|
39
|
+
|
40
|
+
|
41
|
+
<li id="section-2">
|
42
|
+
<div class="annotation">
|
43
|
+
|
44
|
+
<div class="pilwrap ">
|
45
|
+
<a class="pilcrow" href="#section-2">¶</a>
|
46
|
+
</div>
|
47
|
+
<p>POST request to handle callback when document was signed</p>
|
48
|
+
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample/sign'</span> <span class="keyword">do</span></pre></div></div>
|
52
|
+
|
53
|
+
</li>
|
54
|
+
|
55
|
+
|
56
|
+
<li id="section-3">
|
57
|
+
<div class="annotation">
|
58
|
+
|
59
|
+
<div class="pilwrap ">
|
60
|
+
<a class="pilcrow" href="#section-3">¶</a>
|
61
|
+
</div>
|
62
|
+
<p>Content Type of callback is application/json</p>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="content"><div class='highlight'><pre> data = <span class="constant">JSON</span>.parse(request.body.read)
|
67
|
+
<span class="keyword">begin</span>
|
68
|
+
raise <span class="string">'Empty params!'</span> <span class="keyword">if</span> data.empty?</pre></div></div>
|
69
|
+
|
70
|
+
</li>
|
71
|
+
|
72
|
+
|
73
|
+
<li id="section-4">
|
74
|
+
<div class="annotation">
|
75
|
+
|
76
|
+
<div class="pilwrap ">
|
77
|
+
<a class="pilcrow" href="#section-4">¶</a>
|
78
|
+
</div>
|
79
|
+
<p>create empty file and write data as "key: value" to it</p>
|
80
|
+
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<div class="content"><div class='highlight'><pre> out_file = <span class="constant">File</span>.new(<span class="string">'signed'</span>, <span class="string">'w'</span>)
|
84
|
+
data.each <span class="keyword">do</span> |key, value|
|
85
|
+
out_file.write(<span class="string">"<span class="subst">#{key}</span>: <span class="subst">#{value}</span> \n"</span>)
|
86
|
+
<span class="keyword">end</span>
|
87
|
+
out_file.close
|
88
|
+
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
89
|
+
err = e.message
|
90
|
+
<span class="keyword">end</span>
|
91
|
+
<span class="keyword">end</span></pre></div></div>
|
92
|
+
|
93
|
+
</li>
|
94
|
+
|
95
|
+
|
96
|
+
<li id="section-5">
|
97
|
+
<div class="annotation">
|
98
|
+
|
99
|
+
<div class="pilwrap ">
|
100
|
+
<a class="pilcrow" href="#section-5">¶</a>
|
101
|
+
</div>
|
102
|
+
<p>POST request to handle callback and download envelop when document was signed</p>
|
103
|
+
|
104
|
+
</div>
|
105
|
+
|
106
|
+
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample/sign-and-download'</span> <span class="keyword">do</span>
|
107
|
+
data = <span class="constant">JSON</span>.parse(request.body.read)
|
108
|
+
<span class="keyword">begin</span>
|
109
|
+
raise <span class="string">'Empty params!'</span> <span class="keyword">if</span> data.empty?
|
110
|
+
<span class="constant">GroupDocs</span>.configure <span class="keyword">do</span> |groupdocs|
|
111
|
+
groupdocs.client_id = <span class="string">''</span> <span class="comment"># Your client Client ID here</span>
|
112
|
+
groupdocs.private_key = <span class="string">''</span> <span class="comment"># Your API Key here</span>
|
113
|
+
groupdocs.api_server = <span class="string">'https://api.groupdocs.com'</span>
|
114
|
+
<span class="keyword">end</span>
|
115
|
+
data.each <span class="keyword">do</span> |key, value|
|
116
|
+
<span class="keyword">if</span> key == <span class="string">'SourceId'</span></pre></div></div>
|
117
|
+
|
118
|
+
</li>
|
119
|
+
|
120
|
+
|
121
|
+
<li id="section-6">
|
122
|
+
<div class="annotation">
|
123
|
+
|
124
|
+
<div class="pilwrap ">
|
125
|
+
<a class="pilcrow" href="#section-6">¶</a>
|
126
|
+
</div>
|
127
|
+
<p>Create envelop with id and name as SourceId parameter from callback</p>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div class="content"><div class='highlight'><pre> envelope = <span class="constant">GroupDocs::Signature::Envelope</span>.new <span class="symbol">id:</span> value,
|
132
|
+
<span class="symbol">name:</span> value</pre></div></div>
|
133
|
+
|
134
|
+
</li>
|
135
|
+
|
136
|
+
|
137
|
+
<li id="section-7">
|
138
|
+
<div class="annotation">
|
139
|
+
|
140
|
+
<div class="pilwrap ">
|
141
|
+
<a class="pilcrow" href="#section-7">¶</a>
|
142
|
+
</div>
|
143
|
+
<p>download signed documents as archive</p>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
|
147
|
+
<div class="content"><div class='highlight'><pre> envelope.signed_documents! <span class="string">'.'</span>
|
148
|
+
<span class="keyword">end</span>
|
149
|
+
<span class="keyword">end</span>
|
150
|
+
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
151
|
+
err = e.message
|
152
|
+
<span class="keyword">end</span>
|
153
|
+
<span class="keyword">end</span></pre></div></div>
|
154
|
+
|
155
|
+
</li>
|
156
|
+
|
157
|
+
|
158
|
+
<li id="section-8">
|
159
|
+
<div class="annotation">
|
160
|
+
|
161
|
+
<div class="pilwrap ">
|
162
|
+
<a class="pilcrow" href="#section-8">¶</a>
|
163
|
+
</div>
|
164
|
+
<p>GET request to check if envelop was signed</p>
|
165
|
+
|
166
|
+
</div>
|
167
|
+
|
168
|
+
<div class="content"><div class='highlight'><pre>get <span class="string">'/envelope-sample/check'</span> <span class="keyword">do</span>
|
169
|
+
<span class="keyword">if</span> <span class="constant">File</span>.exist?(<span class="string">'signed'</span>)
|
170
|
+
<span class="constant">File</span>.readlines(<span class="string">'signed'</span>).each <span class="keyword">do</span> |line|
|
171
|
+
<span class="keyword">end</span>
|
172
|
+
<span class="keyword">else</span>
|
173
|
+
<span class="string">'Have not signed yet'</span>
|
174
|
+
<span class="keyword">end</span>
|
175
|
+
<span class="keyword">end</span></pre></div></div>
|
176
|
+
|
177
|
+
</li>
|
178
|
+
|
179
|
+
|
180
|
+
<li id="section-9">
|
181
|
+
<div class="annotation">
|
182
|
+
|
183
|
+
<div class="pilwrap ">
|
184
|
+
<a class="pilcrow" href="#section-9">¶</a>
|
185
|
+
</div>
|
186
|
+
<p>POST request</p>
|
187
|
+
|
188
|
+
</div>
|
189
|
+
|
190
|
+
<div class="content"><div class='highlight'><pre>post <span class="string">'/envelope-sample'</span> <span class="keyword">do</span>
|
191
|
+
set <span class="symbol">:client_id</span>, params[<span class="symbol">:client_id</span>]
|
192
|
+
set <span class="symbol">:private_key</span>, params[<span class="symbol">:private_key</span>]
|
193
|
+
|
194
|
+
<span class="keyword">begin</span>
|
195
|
+
raise <span class="string">'Please enter all required parameters'</span> <span class="keyword">if</span> settings.client_id.empty? <span class="keyword">or</span> settings.private_key.empty?
|
196
|
+
|
197
|
+
<span class="constant">GroupDocs</span>.configure <span class="keyword">do</span> |groupdocs|
|
198
|
+
groupdocs.client_id = params[<span class="symbol">:client_id</span>]
|
199
|
+
groupdocs.private_key = params[<span class="symbol">:private_key</span>]
|
200
|
+
groupdocs.api_server = <span class="string">'https://stage-api.groupdocs.com'</span>
|
201
|
+
<span class="keyword">end</span></pre></div></div>
|
202
|
+
|
203
|
+
</li>
|
204
|
+
|
205
|
+
|
206
|
+
<li id="section-10">
|
207
|
+
<div class="annotation">
|
208
|
+
|
209
|
+
<div class="pilwrap ">
|
210
|
+
<a class="pilcrow" href="#section-10">¶</a>
|
211
|
+
</div>
|
212
|
+
<p>upload document</p>
|
213
|
+
|
214
|
+
</div>
|
215
|
+
|
216
|
+
<div class="content"><div class='highlight'><pre> filepath = <span class="string">"<span class="subst">#{<span class="constant">Dir</span>.tmpdir}</span>/<span class="subst">#{params[<span class="symbol">:file</span>][<span class="symbol">:filename</span>]}</span>"</span>
|
217
|
+
<span class="constant">File</span>.open(filepath, <span class="string">'wb'</span>) { |f| f.write(params[<span class="symbol">:file</span>][<span class="symbol">:tempfile</span>].read) }
|
218
|
+
file = <span class="constant">GroupDocs::Storage::File</span>.upload!(filepath, {}, <span class="symbol">client_id:</span> settings.client_id, <span class="symbol">private_key:</span> settings.private_key)
|
219
|
+
document = file.to_document</pre></div></div>
|
220
|
+
|
221
|
+
</li>
|
222
|
+
|
223
|
+
|
224
|
+
<li id="section-11">
|
225
|
+
<div class="annotation">
|
226
|
+
|
227
|
+
<div class="pilwrap ">
|
228
|
+
<a class="pilcrow" href="#section-11">¶</a>
|
229
|
+
</div>
|
230
|
+
<p>create envelope</p>
|
231
|
+
|
232
|
+
</div>
|
233
|
+
|
234
|
+
<div class="content"><div class='highlight'><pre> envelope = <span class="constant">GroupDocs::Signature::Envelope</span>.new
|
235
|
+
envelope.name = <span class="string">'Envelope'</span>
|
236
|
+
envelope.email_subject = <span class="string">'Sing this!'</span>
|
237
|
+
envelope.create!</pre></div></div>
|
238
|
+
|
239
|
+
</li>
|
240
|
+
|
241
|
+
|
242
|
+
<li id="section-12">
|
243
|
+
<div class="annotation">
|
244
|
+
|
245
|
+
<div class="pilwrap ">
|
246
|
+
<a class="pilcrow" href="#section-12">¶</a>
|
247
|
+
</div>
|
248
|
+
<p>add document to envelope</p>
|
249
|
+
|
250
|
+
</div>
|
251
|
+
|
252
|
+
<div class="content"><div class='highlight'><pre> envelope.add_document! document</pre></div></div>
|
253
|
+
|
254
|
+
</li>
|
255
|
+
|
256
|
+
|
257
|
+
<li id="section-13">
|
258
|
+
<div class="annotation">
|
259
|
+
|
260
|
+
<div class="pilwrap ">
|
261
|
+
<a class="pilcrow" href="#section-13">¶</a>
|
262
|
+
</div>
|
263
|
+
<p>update document object after it's created</p>
|
264
|
+
|
265
|
+
</div>
|
266
|
+
|
267
|
+
<div class="content"><div class='highlight'><pre> document = envelope.documents!.first</pre></div></div>
|
268
|
+
|
269
|
+
</li>
|
270
|
+
|
271
|
+
|
272
|
+
<li id="section-14">
|
273
|
+
<div class="annotation">
|
274
|
+
|
275
|
+
<div class="pilwrap ">
|
276
|
+
<a class="pilcrow" href="#section-14">¶</a>
|
277
|
+
</div>
|
278
|
+
<p>add new recipient to envelope</p>
|
279
|
+
|
280
|
+
</div>
|
281
|
+
|
282
|
+
<div class="content"><div class='highlight'><pre> roles = <span class="constant">GroupDocs::Signature::Role</span>.get!
|
283
|
+
recipient = <span class="constant">GroupDocs::Signature::Recipient</span>.new
|
284
|
+
recipient.email = <span class="string">'john@smith.com'</span>
|
285
|
+
recipient.first_name = <span class="string">'John'</span>
|
286
|
+
recipient.last_name = <span class="string">'Smith'</span>
|
287
|
+
recipient.role_id = roles.detect { |role| role.name == <span class="string">'Signer'</span> }.id
|
288
|
+
envelope.add_recipient! recipient</pre></div></div>
|
289
|
+
|
290
|
+
</li>
|
291
|
+
|
292
|
+
|
293
|
+
<li id="section-15">
|
294
|
+
<div class="annotation">
|
295
|
+
|
296
|
+
<div class="pilwrap ">
|
297
|
+
<a class="pilcrow" href="#section-15">¶</a>
|
298
|
+
</div>
|
299
|
+
<p>update recipient object after it's created</p>
|
300
|
+
|
301
|
+
</div>
|
302
|
+
|
303
|
+
<div class="content"><div class='highlight'><pre> recipient = envelope.recipients!.first</pre></div></div>
|
304
|
+
|
305
|
+
</li>
|
306
|
+
|
307
|
+
|
308
|
+
<li id="section-16">
|
309
|
+
<div class="annotation">
|
310
|
+
|
311
|
+
<div class="pilwrap ">
|
312
|
+
<a class="pilcrow" href="#section-16">¶</a>
|
313
|
+
</div>
|
314
|
+
<p>You can add fields manually.</p>
|
315
|
+
<p>add city field to envelope
|
316
|
+
field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
|
317
|
+
field.name = 'City'
|
318
|
+
field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
|
319
|
+
envelope.add_field! field, document, recipient</p>
|
320
|
+
<p>add signature field to envelope
|
321
|
+
field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
322
|
+
field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
|
323
|
+
envelope.add_field! field, document, recipient</p>
|
324
|
+
<p>URL for callback
|
325
|
+
webhook = '<a href="http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign">http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign</a>'</p>
|
326
|
+
|
327
|
+
</div>
|
328
|
+
|
329
|
+
<div class="content"><div class='highlight'><pre> webhook = <span class="string">'http://77.81.243.48/?q=groupdocs_signature/signature_callback'</span></pre></div></div>
|
330
|
+
|
331
|
+
</li>
|
332
|
+
|
333
|
+
|
334
|
+
<li id="section-17">
|
335
|
+
<div class="annotation">
|
336
|
+
|
337
|
+
<div class="pilwrap ">
|
338
|
+
<a class="pilcrow" href="#section-17">¶</a>
|
339
|
+
</div>
|
340
|
+
<p>send envelope</p>
|
341
|
+
|
342
|
+
</div>
|
343
|
+
|
344
|
+
<div class="content"><div class='highlight'><pre> envelope.send! webhook</pre></div></div>
|
345
|
+
|
346
|
+
</li>
|
347
|
+
|
348
|
+
|
349
|
+
<li id="section-18">
|
350
|
+
<div class="annotation">
|
351
|
+
|
352
|
+
<div class="pilwrap ">
|
353
|
+
<a class="pilcrow" href="#section-18">¶</a>
|
354
|
+
</div>
|
355
|
+
<p>construct embedded signature url</p>
|
356
|
+
|
357
|
+
</div>
|
358
|
+
|
359
|
+
<div class="content"><div class='highlight'><pre> url = <span class="string">"https://stage-apps.groupdocs.com/signature/signembed/<span class="subst">#{envelope.id}</span>/<span class="subst">#{recipient.id}</span>"</span>
|
360
|
+
iframe = <span class="string">"<iframe src='<span class="subst">#{url}</span>' frameborder='0' width='720' height='600'></iframe>"</span>
|
361
|
+
|
362
|
+
<span class="keyword">rescue</span> <span class="constant">Exception</span> => e
|
363
|
+
err = e.message
|
364
|
+
<span class="keyword">end</span>
|
365
|
+
|
366
|
+
haml <span class="symbol">:envelope_sample</span>, <span class="symbol">:locals</span> => {<span class="symbol">:client_id</span> => settings.client_id, <span class="symbol">:private_key</span> => settings.private_key, <span class="symbol">:err</span> => err, <span class="symbol">:iframe</span> => iframe}
|
367
|
+
<span class="keyword">end</span></pre></div></div>
|
368
|
+
|
369
|
+
</li>
|
370
|
+
|
371
|
+
</ul>
|
372
|
+
</div>
|
373
|
+
</body>
|
374
|
+
</html>
|