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,137 +1,137 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
5
- <title>Powered by {{ @VERSION }}</title>
6
- <style type="text/css">
7
- {{ Web::minify('templates/',array('style.css'),FALSE) }}
8
- </style>
9
- </head>
10
- <body>
11
- <div class="header">
12
- <h4>On this site will rise another Web masterpiece powered by</h4>
13
- <h1>{{ @VERSION }}</h1>
14
- </div>
15
- <div class="content">
16
- <h3>Dynamic PHP Applications The Fast and Easy Way</h3>
17
- <p>The first thing you might want to do is visualize your directory structures. Fat-Free gives you total control over your Web site. Organize your folders in any way that pleases you. Decide where you want to store the following:</p>
18
- <ul>
19
- <li>HTML templates</li>
20
- <li>Graphics, Flash and media files</li>
21
- <li>Javascript and CSS files</li>
22
- <li>Fat-Free import files, code libraries, and PHP includes</li>
23
- <li>OOP classes</li>
24
- <li>Database (if you plan to use an embedded DB like SQLite)</li>
25
- <li>Configuration files</li>
26
- <li>Uploads/Downloads</li>
27
- <li>Fonts (optional)</li>
28
- </ul>
29
- <p>For security reasons, consider relocating the <code>lib/</code> folder to a path that's not Web-accessible. If you decide to move this folder, just change the line in <code>index.php</code> containing <code>require 'lib/base.php';</code> The <code>lib/</code> folder also contains framework plug-ins that extend F3's capabilities. You can change the default location of all plug-ins by moving the files to your desired subdirectory. Then, it's just a matter of pointing the <code>PLUGINS</code> global variable to the new location. You may delete the plug-ins that you don't need. You can always restore them later.</p>
30
- <p>The <code>IMPORTS</code> global variable should point to the location of Fat-Free import files, code libraries, and PHP includes. On the other hand, F3 can autoload your OOP classes for you. Just add the path to the <code>AUTOLOAD</code> variable. The rest of the above-listed items do not require configuration of a framework global variable, so you may store them anywhere.</p>
31
- <blockquote>
32
- <h4>Important</h4>
33
- <p>The distribution package contains a file named <code>htaccess</code>. It's saved that way in the archive because some ZIP extraction tools may not be configured to display hidden files like <code>.htaccess</code>. You should rename the file if you're using Apache.</p>
34
- </blockquote>
35
- <p>When you're ready to write your F3-enabled site, you can start editing the rest of the code contained in the <code>index.php</code> file that displayed this Web page. Developing PHP applications will never be the same!</p>
36
- <h3>PHP Dependencies</h3>
37
- <p>Some framework features will not be available if PHP is not configured with the modules needed by your application.</p>
38
- <table>
39
- <tr>
40
- <th>PHP Module</th>
41
- <th>Installed</th>
42
- <th>Required by</th>
43
- </tr>
44
- <repeat group="{{@modules}}" key="{{ @mod }}" value="{{ @dep }}" counter="{{ @counter }}">
45
- <tr class="{{ @counter%2?'odd':'even' }}">
46
- <td>{{ @mod }}</td>
47
- <td class="{{ extension_loaded(@mod)?'pass':'fail' }}">{{ extension_loaded(@mod)?'Yes':'No' }}</td>
48
- <td>{{ @dep }}</td>
49
- </tr>
50
- </repeat>
51
- </table>
52
- <h3>Need Help?</h3>
53
- <p>Technical support is available at: <code><a href="https://groups.google.com/forum/?fromgroups#!forum/f3-framework">https://groups.google.com/forum/?fromgroups#!forum/f3-framework</a></code>. If you need live support, you can talk to the development team and the rest of the Fat-Free community via IRC. We're on the FreeNode <code>#fatfree</code> channel (<code>chat.freenode.net</code>).</p>
54
- <p>The help file included in the distribution (<code>lib/f3.chm</code>) is at your disposal if you need to take a close look at the Fat-Free API. However, the online documentation at <code><a href="http://fatfree.sourceforge.net" onclick="window.open(this.href); return false;">http://fatfree.sourceforge.net</a></code> provides the latest and most comprehensive information about the framework.</p>
55
- <h3>Fair Licensing</h3>
56
- <p>If you intend to use this software for business or commercial gain: permissive and "closed-source" licensing terms are available. For academic and personal use, the PHP Fat-Free Framework and other files included in the distribution are subject to the terms of the GPL v3. You may not use the software, documentation, and samples except in compliance with the license.</p>
57
- <h3>Support F3</h3>
58
- <p>F3 is community-driven open-source software. Support the development of the Fat-Free Framework. Your contributions help keep this project alive.</p>
59
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
60
- <input type="hidden" name="cmd" value="_s-xclick">
61
- <input type="hidden" name="hosted_button_id" value="WPFRKQY9HDMML">
62
- <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
63
- <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
64
- </form>
65
- <p/>
66
- <p>The framework won't be what it is today without the help and support from the following people and organizations:</p>
67
- <ul style="column-count:3; column-gap:15px; -moz-column-count:3; -moz-column-gap:15px; -webkit-column-count:3; -webkit-column-gap:15px;">
68
- <li>GitHub</li>
69
- <li>Sascha Ohms</li>
70
- <li>Jermaine Maree</li>
71
- <li>Sergey Zaretsky</li>
72
- <li>Daniel Kloke</li>
73
- <li>Brian Nelson</li>
74
- <li>Roberts Lapins</li>
75
- <li>Boris Gurevich</li>
76
- <li>Eyðun Lamhauge</li>
77
- <li>Jose Maria Garrido Diaz</li>
78
- <li>Dawn Comfort</li>
79
- <li>Johan Viberg</li>
80
- <li>Povilas Musteikis</li>
81
- <li>Andrew Snook</li>
82
- <li>Jafar Amjad</li>
83
- <li>Taylor McCall</li>
84
- <li>Raymond Kirkland</li>
85
- <li>Yuriy Gerassimenko</li>
86
- <li>William Stam</li>
87
- <li>Sam George</li>
88
- <li>Steve Wasiura</li>
89
- <li>Andreas Ljunggren</li>
90
- <li>Sashank Tadepalli</li>
91
- <li>Chad Bishop</li>
92
- <li>Bradley Slavik</li>
93
- <li>Lee Blue</li>
94
- <li>Alexander Shatilo</li>
95
- <li>Justin Noel</li>
96
- <li>Ivan Kovac</li>
97
- <li>Tony's Internet Solutions</li>
98
- <li>Charles Stigler</li>
99
- <li>Attila van der Velde</li>
100
- <li>Indoblo Commerce Limited</li>
101
- <li>Jens Níemeyer</li>
102
- <li>Raghu Veer Dendukuri</li>
103
- <li>NovelLead B.V.</li>
104
- <li>Emir Alp</li>
105
- <li>Dominic Schwarz</li>
106
- <li>Sven Zahrend</li>
107
- <li>LucidStorm</li>
108
- <li>Nevatech</li>
109
- <li>Matt Wielgos</li>
110
- <li>Christian Knuth</li>
111
- <li>Maximilian Summe</li>
112
- <li>Caspar Frey</li>
113
- <li>G Holdings, LLC</li>
114
- <li>FocusHeart</li>
115
- <li>Philip Lawrence</li>
116
- <li>Peter Beverwyk</li>
117
- <li>Randal Hintz</li>
118
- <li>Franz Josef</li>
119
- <li>Biswajit Nayak</li>
120
- <li>R Mohan</li>
121
- <li>Michael Messner</li>
122
- <li>Florent Racineux</li>
123
- <li>Jason Borseth</li>
124
- <li>Dmitrij Chernov</li>
125
- <li>Marek Toman</li>
126
- <li>Simone Cociancich</li>
127
- <li>Tecnilógica</li>
128
- <li>Alan Holding</li>
129
- <li>Mirosystems</li>
130
- </ul>
131
- <p>Special thanks to the selfless others who expressed their desire to remain anonymous, yet share their time, contribute code, send donations, promote the framework to a wider audience, as well as provide encouragement and regular financial assistance. Their generosity is F3's prime motivation.</p>
132
- </div>
133
- <div class="footer">
134
- <h5>Fat-Free Framework is licensed under the terms of the GPL v3. Copyright &copy; 2009-2011 F3::Factory</h5>
135
- </div>
136
- </body>
137
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
5
+ <title>Powered by {{ @VERSION }}</title>
6
+ <style type="text/css">
7
+ {{ Web::minify('templates/',array('style.css'),FALSE) }}
8
+ </style>
9
+ </head>
10
+ <body>
11
+ <div class="header">
12
+ <h4>On this site will rise another Web masterpiece powered by</h4>
13
+ <h1>{{ @VERSION }}</h1>
14
+ </div>
15
+ <div class="content">
16
+ <h3>Dynamic PHP Applications The Fast and Easy Way</h3>
17
+ <p>The first thing you might want to do is visualize your directory structures. Fat-Free gives you total control over your Web site. Organize your folders in any way that pleases you. Decide where you want to store the following:</p>
18
+ <ul>
19
+ <li>HTML templates</li>
20
+ <li>Graphics, Flash and media files</li>
21
+ <li>Javascript and CSS files</li>
22
+ <li>Fat-Free import files, code libraries, and PHP includes</li>
23
+ <li>OOP classes</li>
24
+ <li>Database (if you plan to use an embedded DB like SQLite)</li>
25
+ <li>Configuration files</li>
26
+ <li>Uploads/Downloads</li>
27
+ <li>Fonts (optional)</li>
28
+ </ul>
29
+ <p>For security reasons, consider relocating the <code>lib/</code> folder to a path that's not Web-accessible. If you decide to move this folder, just change the line in <code>index.php</code> containing <code>require 'lib/base.php';</code> The <code>lib/</code> folder also contains framework plug-ins that extend F3's capabilities. You can change the default location of all plug-ins by moving the files to your desired subdirectory. Then, it's just a matter of pointing the <code>PLUGINS</code> global variable to the new location. You may delete the plug-ins that you don't need. You can always restore them later.</p>
30
+ <p>The <code>IMPORTS</code> global variable should point to the location of Fat-Free import files, code libraries, and PHP includes. On the other hand, F3 can autoload your OOP classes for you. Just add the path to the <code>AUTOLOAD</code> variable. The rest of the above-listed items do not require configuration of a framework global variable, so you may store them anywhere.</p>
31
+ <blockquote>
32
+ <h4>Important</h4>
33
+ <p>The distribution package contains a file named <code>htaccess</code>. It's saved that way in the archive because some ZIP extraction tools may not be configured to display hidden files like <code>.htaccess</code>. You should rename the file if you're using Apache.</p>
34
+ </blockquote>
35
+ <p>When you're ready to write your F3-enabled site, you can start editing the rest of the code contained in the <code>index.php</code> file that displayed this Web page. Developing PHP applications will never be the same!</p>
36
+ <h3>PHP Dependencies</h3>
37
+ <p>Some framework features will not be available if PHP is not configured with the modules needed by your application.</p>
38
+ <table>
39
+ <tr>
40
+ <th>PHP Module</th>
41
+ <th>Installed</th>
42
+ <th>Required by</th>
43
+ </tr>
44
+ <repeat group="{{@modules}}" key="{{ @mod }}" value="{{ @dep }}" counter="{{ @counter }}">
45
+ <tr class="{{ @counter%2?'odd':'even' }}">
46
+ <td>{{ @mod }}</td>
47
+ <td class="{{ extension_loaded(@mod)?'pass':'fail' }}">{{ extension_loaded(@mod)?'Yes':'No' }}</td>
48
+ <td>{{ @dep }}</td>
49
+ </tr>
50
+ </repeat>
51
+ </table>
52
+ <h3>Need Help?</h3>
53
+ <p>Technical support is available at: <code><a href="https://groups.google.com/forum/?fromgroups#!forum/f3-framework">https://groups.google.com/forum/?fromgroups#!forum/f3-framework</a></code>. If you need live support, you can talk to the development team and the rest of the Fat-Free community via IRC. We're on the FreeNode <code>#fatfree</code> channel (<code>chat.freenode.net</code>).</p>
54
+ <p>The help file included in the distribution (<code>lib/f3.chm</code>) is at your disposal if you need to take a close look at the Fat-Free API. However, the online documentation at <code><a href="http://fatfree.sourceforge.net" onclick="window.open(this.href); return false;">http://fatfree.sourceforge.net</a></code> provides the latest and most comprehensive information about the framework.</p>
55
+ <h3>Fair Licensing</h3>
56
+ <p>If you intend to use this software for business or commercial gain: permissive and "closed-source" licensing terms are available. For academic and personal use, the PHP Fat-Free Framework and other files included in the distribution are subject to the terms of the GPL v3. You may not use the software, documentation, and samples except in compliance with the license.</p>
57
+ <h3>Support F3</h3>
58
+ <p>F3 is community-driven open-source software. Support the development of the Fat-Free Framework. Your contributions help keep this project alive.</p>
59
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
60
+ <input type="hidden" name="cmd" value="_s-xclick">
61
+ <input type="hidden" name="hosted_button_id" value="WPFRKQY9HDMML">
62
+ <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
63
+ <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
64
+ </form>
65
+ <p/>
66
+ <p>The framework won't be what it is today without the help and support from the following people and organizations:</p>
67
+ <ul style="column-count:3; column-gap:15px; -moz-column-count:3; -moz-column-gap:15px; -webkit-column-count:3; -webkit-column-gap:15px;">
68
+ <li>GitHub</li>
69
+ <li>Sascha Ohms</li>
70
+ <li>Jermaine Maree</li>
71
+ <li>Sergey Zaretsky</li>
72
+ <li>Daniel Kloke</li>
73
+ <li>Brian Nelson</li>
74
+ <li>Roberts Lapins</li>
75
+ <li>Boris Gurevich</li>
76
+ <li>Eyðun Lamhauge</li>
77
+ <li>Jose Maria Garrido Diaz</li>
78
+ <li>Dawn Comfort</li>
79
+ <li>Johan Viberg</li>
80
+ <li>Povilas Musteikis</li>
81
+ <li>Andrew Snook</li>
82
+ <li>Jafar Amjad</li>
83
+ <li>Taylor McCall</li>
84
+ <li>Raymond Kirkland</li>
85
+ <li>Yuriy Gerassimenko</li>
86
+ <li>William Stam</li>
87
+ <li>Sam George</li>
88
+ <li>Steve Wasiura</li>
89
+ <li>Andreas Ljunggren</li>
90
+ <li>Sashank Tadepalli</li>
91
+ <li>Chad Bishop</li>
92
+ <li>Bradley Slavik</li>
93
+ <li>Lee Blue</li>
94
+ <li>Alexander Shatilo</li>
95
+ <li>Justin Noel</li>
96
+ <li>Ivan Kovac</li>
97
+ <li>Tony's Internet Solutions</li>
98
+ <li>Charles Stigler</li>
99
+ <li>Attila van der Velde</li>
100
+ <li>Indoblo Commerce Limited</li>
101
+ <li>Jens Níemeyer</li>
102
+ <li>Raghu Veer Dendukuri</li>
103
+ <li>NovelLead B.V.</li>
104
+ <li>Emir Alp</li>
105
+ <li>Dominic Schwarz</li>
106
+ <li>Sven Zahrend</li>
107
+ <li>LucidStorm</li>
108
+ <li>Nevatech</li>
109
+ <li>Matt Wielgos</li>
110
+ <li>Christian Knuth</li>
111
+ <li>Maximilian Summe</li>
112
+ <li>Caspar Frey</li>
113
+ <li>G Holdings, LLC</li>
114
+ <li>FocusHeart</li>
115
+ <li>Philip Lawrence</li>
116
+ <li>Peter Beverwyk</li>
117
+ <li>Randal Hintz</li>
118
+ <li>Franz Josef</li>
119
+ <li>Biswajit Nayak</li>
120
+ <li>R Mohan</li>
121
+ <li>Michael Messner</li>
122
+ <li>Florent Racineux</li>
123
+ <li>Jason Borseth</li>
124
+ <li>Dmitrij Chernov</li>
125
+ <li>Marek Toman</li>
126
+ <li>Simone Cociancich</li>
127
+ <li>Tecnilógica</li>
128
+ <li>Alan Holding</li>
129
+ <li>Mirosystems</li>
130
+ </ul>
131
+ <p>Special thanks to the selfless others who expressed their desire to remain anonymous, yet share their time, contribute code, send donations, promote the framework to a wider audience, as well as provide encouragement and regular financial assistance. Their generosity is F3's prime motivation.</p>
132
+ </div>
133
+ <div class="footer">
134
+ <h5>Fat-Free Framework is licensed under the terms of the GPL v3. Copyright &copy; 2009-2011 F3::Factory</h5>
135
+ </div>
136
+ </body>
137
+ </html>
@@ -1,56 +1,56 @@
1
- # GET request
2
- get '/annotation-sample' do
3
- haml :annotation_sample
4
- end
5
-
6
- # POST request
7
- post '/annotation-sample' do
8
- set :client_id, params[:client_id]
9
- set :private_key, params[:private_key]
10
-
11
- set :email, params[:email]
12
- set :first_name, params[:first_name]
13
- set :last_name, params[:last_name]
14
- set :file_name, params[:file_name]
15
-
16
- begin
17
- raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.file_name.empty?
18
-
19
- GroupDocs.configure do |groupdocs|
20
- groupdocs.client_id = params[:client_id]
21
- groupdocs.private_key = params[:private_key]
22
- groupdocs.api_server = 'https://api.groupdocs.com'
23
- end
24
- # get document metadata
25
- metadata = GroupDocs::Document.metadata!(settings.file_name)
26
- document = GroupDocs::Storage::File.new(id: metadata.id, guid: metadata.guid).to_document
27
-
28
- # create new user
29
- user = GroupDocs::User.new
30
- user.nickname = settings.email
31
- user.primary_email = settings.email
32
- user.first_name = settings.first_name
33
- user.last_name = settings.last_name
34
- user = GroupDocs::User.update_account!(user)
35
-
36
- # add collaborator
37
- document.add_collaborator! user unless document.collaborators!.any? { |c| c.guid == user.guid }
38
-
39
- # build url
40
- annotation = true # looks like "IsAnnotation" is some helper method so I stub it here
41
- url = if annotation
42
- "/document-annotation2/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
43
- else
44
- "/document-viewer/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
45
- end
46
-
47
- # you can sign document
48
- #url = GroupDocs::Api::Request.new(path: url).prepare_and_sign_url
49
-
50
- iframe = "<iframe src='https://apps.groupdocs.com#{url}' frameborder='0' width='720' height='600'></iframe>"
51
- rescue Exception => e
52
- err = e.message
53
- end
54
-
55
- haml :annotation_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :file_name => settings.file_name, :email => settings.email, :first_name => settings.first_name, :last_name => settings.last_name, :iframe => iframe}
56
- end
1
+ # GET request
2
+ get '/annotation-sample' do
3
+ haml :annotation_sample
4
+ end
5
+
6
+ # POST request
7
+ post '/annotation-sample' do
8
+ set :client_id, params[:client_id]
9
+ set :private_key, params[:private_key]
10
+
11
+ set :email, params[:email]
12
+ set :first_name, params[:first_name]
13
+ set :last_name, params[:last_name]
14
+ set :file_name, params[:file_name]
15
+
16
+ begin
17
+ raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.file_name.empty?
18
+
19
+ GroupDocs.configure do |groupdocs|
20
+ groupdocs.client_id = params[:client_id]
21
+ groupdocs.private_key = params[:private_key]
22
+ groupdocs.api_server = 'https://api.groupdocs.com'
23
+ end
24
+ # get document metadata
25
+ metadata = GroupDocs::Document.metadata!(settings.file_name)
26
+ document = GroupDocs::Storage::File.new(id: metadata.id, guid: metadata.guid).to_document
27
+
28
+ # create new user
29
+ user = GroupDocs::User.new
30
+ user.nickname = settings.email
31
+ user.primary_email = settings.email
32
+ user.first_name = settings.first_name
33
+ user.last_name = settings.last_name
34
+ user = GroupDocs::User.update_account!(user)
35
+
36
+ # add collaborator
37
+ document.add_collaborator! user unless document.collaborators!.any? { |c| c.guid == user.guid }
38
+
39
+ # build url
40
+ annotation = true # looks like "IsAnnotation" is some helper method so I stub it here
41
+ url = if annotation
42
+ "/document-annotation2/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
43
+ else
44
+ "/document-viewer/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
45
+ end
46
+
47
+ # you can sign document
48
+ #url = GroupDocs::Api::Request.new(path: url).prepare_and_sign_url
49
+
50
+ iframe = "<iframe src='https://apps.groupdocs.com#{url}' frameborder='0' width='720' height='600'></iframe>"
51
+ rescue Exception => e
52
+ err = e.message
53
+ end
54
+
55
+ haml :annotation_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :file_name => settings.file_name, :email => settings.email, :first_name => settings.first_name, :last_name => settings.last_name, :iframe => iframe}
56
+ end
@@ -1,133 +1,133 @@
1
- # GET request
2
- get '/envelope-sample' do
3
- haml :envelope_sample
4
- end
5
-
6
- # POST request to handle callback when document was signed
7
- post '/envelope-sample/sign' do
8
- # Content Type of callback is application/json
9
- data = JSON.parse(request.body.read)
10
- begin
11
- raise 'Empty params!' if data.empty?
12
- #create empty file and write data as "key: value" to it
13
- out_file = File.new('signed', 'w')
14
- data.each do |key, value|
15
- out_file.write("#{key}: #{value} \n")
16
- end
17
- out_file.close
18
- rescue Exception => e
19
- err = e.message
20
- end
21
- end
22
-
23
-
24
- # POST request to handle callback and download envelop when document was signed
25
- post '/envelope-sample/sign-and-download' do
26
- data = JSON.parse(request.body.read)
27
- begin
28
- raise 'Empty params!' if data.empty?
29
- GroupDocs.configure do |groupdocs|
30
- groupdocs.client_id = '' # Your client Client ID here
31
- groupdocs.private_key = '' # Your API Key here
32
- groupdocs.api_server = 'https://api.groupdocs.com'
33
- end
34
- data.each do |key, value|
35
- if key == 'SourceId'
36
- # Create envelop with id and name as SourceId parameter from callback
37
- envelope = GroupDocs::Signature::Envelope.new id: value,
38
- name: value
39
- # download signed documents as archive
40
- envelope.signed_documents! '.'
41
- end
42
- end
43
- rescue Exception => e
44
- err = e.message
45
- end
46
- end
47
-
48
- # GET request to check if envelop was signed
49
- get '/envelope-sample/check' do
50
- if File.exist?('signed')
51
- File.readlines('signed').each do |line|
52
- end
53
- else
54
- 'Have not signed yet'
55
- end
56
- end
57
-
58
- # POST request
59
- post '/envelope-sample' do
60
- set :client_id, params[:client_id]
61
- set :private_key, params[:private_key]
62
-
63
- begin
64
- raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty?
65
-
66
- GroupDocs.configure do |groupdocs|
67
- groupdocs.client_id = params[:client_id]
68
- groupdocs.private_key = params[:private_key]
69
- groupdocs.api_server = 'https://stage-api.groupdocs.com'
70
- end
71
-
72
- # upload document
73
- filepath = "#{Dir.tmpdir}/#{params[:file][:filename]}"
74
- File.open(filepath, 'wb') { |f| f.write(params[:file][:tempfile].read) }
75
- file = GroupDocs::Storage::File.upload!(filepath, {}, client_id: settings.client_id, private_key: settings.private_key)
76
- document = file.to_document
77
-
78
- # create envelope
79
- envelope = GroupDocs::Signature::Envelope.new
80
- envelope.name = 'Envelope'
81
- envelope.email_subject = 'Sing this!'
82
- envelope.create!
83
-
84
- # add document to envelope
85
- envelope.add_document! document
86
-
87
- # update document object after it's created
88
- document = envelope.documents!.first
89
-
90
- # add new recipient to envelope
91
- roles = GroupDocs::Signature::Role.get!
92
- recipient = GroupDocs::Signature::Recipient.new
93
- recipient.email = 'john@smith.com'
94
- recipient.first_name = 'John'
95
- recipient.last_name = 'Smith'
96
- recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
97
- envelope.add_recipient! recipient
98
-
99
- # update recipient object after it's created
100
- recipient = envelope.recipients!.first
101
-
102
- #
103
- # You can add fields manually.
104
- #
105
-
106
- # add city field to envelope
107
- #field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
108
- #field.name = 'City'
109
- #field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
110
- #envelope.add_field! field, document, recipient
111
-
112
- # add signature field to envelope
113
- #field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
114
- #field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
115
- #envelope.add_field! field, document, recipient
116
-
117
- # URL for callback
118
- #webhook = 'http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign'
119
- webhook = 'http://77.81.243.48/?q=groupdocs_signature/signature_callback'
120
-
121
- # send envelope
122
- envelope.send! webhook
123
-
124
- # construct embedded signature url
125
- url = "https://stage-apps.groupdocs.com/signature/signembed/#{envelope.id}/#{recipient.id}"
126
- iframe = "<iframe src='#{url}' frameborder='0' width='720' height='600'></iframe>"
127
-
128
- rescue Exception => e
129
- err = e.message
130
- end
131
-
132
- haml :envelope_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :iframe => iframe}
133
- end
1
+ # GET request
2
+ get '/envelope-sample' do
3
+ haml :envelope_sample
4
+ end
5
+
6
+ # POST request to handle callback when document was signed
7
+ post '/envelope-sample/sign' do
8
+ # Content Type of callback is application/json
9
+ data = JSON.parse(request.body.read)
10
+ begin
11
+ raise 'Empty params!' if data.empty?
12
+ #create empty file and write data as "key: value" to it
13
+ out_file = File.new('signed', 'w')
14
+ data.each do |key, value|
15
+ out_file.write("#{key}: #{value} \n")
16
+ end
17
+ out_file.close
18
+ rescue Exception => e
19
+ err = e.message
20
+ end
21
+ end
22
+
23
+
24
+ # POST request to handle callback and download envelop when document was signed
25
+ post '/envelope-sample/sign-and-download' do
26
+ data = JSON.parse(request.body.read)
27
+ begin
28
+ raise 'Empty params!' if data.empty?
29
+ GroupDocs.configure do |groupdocs|
30
+ groupdocs.client_id = '' # Your client Client ID here
31
+ groupdocs.private_key = '' # Your API Key here
32
+ groupdocs.api_server = 'https://api.groupdocs.com'
33
+ end
34
+ data.each do |key, value|
35
+ if key == 'SourceId'
36
+ # Create envelop with id and name as SourceId parameter from callback
37
+ envelope = GroupDocs::Signature::Envelope.new id: value,
38
+ name: value
39
+ # download signed documents as archive
40
+ envelope.signed_documents! '.'
41
+ end
42
+ end
43
+ rescue Exception => e
44
+ err = e.message
45
+ end
46
+ end
47
+
48
+ # GET request to check if envelop was signed
49
+ get '/envelope-sample/check' do
50
+ if File.exist?('signed')
51
+ File.readlines('signed').each do |line|
52
+ end
53
+ else
54
+ 'Have not signed yet'
55
+ end
56
+ end
57
+
58
+ # POST request
59
+ post '/envelope-sample' do
60
+ set :client_id, params[:client_id]
61
+ set :private_key, params[:private_key]
62
+
63
+ begin
64
+ raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty?
65
+
66
+ GroupDocs.configure do |groupdocs|
67
+ groupdocs.client_id = params[:client_id]
68
+ groupdocs.private_key = params[:private_key]
69
+ groupdocs.api_server = 'https://stage-api.groupdocs.com'
70
+ end
71
+
72
+ # upload document
73
+ filepath = "#{Dir.tmpdir}/#{params[:file][:filename]}"
74
+ File.open(filepath, 'wb') { |f| f.write(params[:file][:tempfile].read) }
75
+ file = GroupDocs::Storage::File.upload!(filepath, {}, client_id: settings.client_id, private_key: settings.private_key)
76
+ document = file.to_document
77
+
78
+ # create envelope
79
+ envelope = GroupDocs::Signature::Envelope.new
80
+ envelope.name = 'Envelope'
81
+ envelope.email_subject = 'Sing this!'
82
+ envelope.create!
83
+
84
+ # add document to envelope
85
+ envelope.add_document! document
86
+
87
+ # update document object after it's created
88
+ document = envelope.documents!.first
89
+
90
+ # add new recipient to envelope
91
+ roles = GroupDocs::Signature::Role.get!
92
+ recipient = GroupDocs::Signature::Recipient.new
93
+ recipient.email = 'john@smith.com'
94
+ recipient.first_name = 'John'
95
+ recipient.last_name = 'Smith'
96
+ recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
97
+ envelope.add_recipient! recipient
98
+
99
+ # update recipient object after it's created
100
+ recipient = envelope.recipients!.first
101
+
102
+ #
103
+ # You can add fields manually.
104
+ #
105
+
106
+ # add city field to envelope
107
+ #field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
108
+ #field.name = 'City'
109
+ #field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
110
+ #envelope.add_field! field, document, recipient
111
+
112
+ # add signature field to envelope
113
+ #field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
114
+ #field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
115
+ #envelope.add_field! field, document, recipient
116
+
117
+ # URL for callback
118
+ #webhook = 'http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign'
119
+ webhook = 'http://77.81.243.48/?q=groupdocs_signature/signature_callback'
120
+
121
+ # send envelope
122
+ envelope.send! webhook
123
+
124
+ # construct embedded signature url
125
+ url = "https://stage-apps.groupdocs.com/signature/signembed/#{envelope.id}/#{recipient.id}"
126
+ iframe = "<iframe src='#{url}' frameborder='0' width='720' height='600'></iframe>"
127
+
128
+ rescue Exception => e
129
+ err = e.message
130
+ end
131
+
132
+ haml :envelope_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :iframe => iframe}
133
+ end