groupdocs 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -9
  3. data/CHANGELOG.md +482 -477
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +21 -21
  6. data/README.md +94 -94
  7. data/Rakefile +9 -9
  8. data/examples/README.md +12 -12
  9. data/examples/api-samples/Gemfile +5 -5
  10. data/examples/api-samples/Gemfile.lock +49 -49
  11. data/examples/api-samples/README.md +23 -23
  12. data/examples/api-samples/public/css/style.css +229 -229
  13. data/examples/api-samples/public/docs/annotation-sample.html +167 -167
  14. data/examples/api-samples/public/docs/docco.css +500 -500
  15. data/examples/api-samples/public/docs/envelope-sample.html +374 -374
  16. data/examples/api-samples/public/docs/sample01.html +181 -181
  17. data/examples/api-samples/public/docs/sample02.html +199 -199
  18. data/examples/api-samples/public/docs/sample03.html +318 -318
  19. data/examples/api-samples/public/docs/sample04.html +217 -217
  20. data/examples/api-samples/public/docs/sample05.html +296 -296
  21. data/examples/api-samples/public/docs/sample06.html +347 -347
  22. data/examples/api-samples/public/docs/sample07.html +209 -209
  23. data/examples/api-samples/public/docs/sample08.html +277 -277
  24. data/examples/api-samples/public/docs/sample09.html +314 -314
  25. data/examples/api-samples/public/docs/sample10.html +270 -270
  26. data/examples/api-samples/public/docs/sample11.html +462 -462
  27. data/examples/api-samples/public/docs/sample12.html +199 -199
  28. data/examples/api-samples/public/docs/sample13.html +201 -201
  29. data/examples/api-samples/public/docs/sample14.html +204 -204
  30. data/examples/api-samples/public/docs/sample15.html +182 -182
  31. data/examples/api-samples/public/docs/sample16.html +234 -234
  32. data/examples/api-samples/public/docs/sample17.html +309 -309
  33. data/examples/api-samples/public/docs/sample18.html +721 -721
  34. data/examples/api-samples/public/docs/sample19.html +631 -631
  35. data/examples/api-samples/public/docs/sample20.html +230 -230
  36. data/examples/api-samples/public/docs/sample21.html +790 -790
  37. data/examples/api-samples/public/docs/sample22.html +408 -408
  38. data/examples/api-samples/public/docs/sample25.html +550 -550
  39. data/examples/api-samples/public/templates/base-simple_source.html +191 -191
  40. data/examples/api-samples/public/templates/testdocument.html +100 -100
  41. data/examples/api-samples/public/templates/welcome.htm +137 -137
  42. data/examples/api-samples/samples/annotation-sample.rb +56 -56
  43. data/examples/api-samples/samples/envelope-sample.rb +133 -133
  44. data/examples/api-samples/samples/sample01.rb +44 -44
  45. data/examples/api-samples/samples/sample02.rb +50 -50
  46. data/examples/api-samples/samples/sample03.rb +79 -79
  47. data/examples/api-samples/samples/sample04.rb +54 -54
  48. data/examples/api-samples/samples/sample05.rb +83 -83
  49. data/examples/api-samples/samples/sample06.rb +86 -86
  50. data/examples/api-samples/samples/sample07.rb +59 -59
  51. data/examples/api-samples/samples/sample08.rb +76 -76
  52. data/examples/api-samples/samples/sample09.rb +85 -85
  53. data/examples/api-samples/samples/sample10.rb +70 -70
  54. data/examples/api-samples/samples/sample11.rb +132 -132
  55. data/examples/api-samples/samples/sample12.rb +48 -48
  56. data/examples/api-samples/samples/sample13.rb +49 -49
  57. data/examples/api-samples/samples/sample14.rb +54 -54
  58. data/examples/api-samples/samples/sample15.rb +43 -43
  59. data/examples/api-samples/samples/sample16.rb +57 -57
  60. data/examples/api-samples/samples/sample17.rb +70 -70
  61. data/examples/api-samples/samples/sample18.rb +190 -190
  62. data/examples/api-samples/samples/sample19.rb +188 -188
  63. data/examples/api-samples/samples/sample20.rb +68 -68
  64. data/examples/api-samples/samples/sample21.rb +212 -212
  65. data/examples/api-samples/samples/sample22.rb +109 -109
  66. data/examples/api-samples/samples/sample25.rb +127 -127
  67. data/examples/api-samples/views/_others_samples.haml +233 -233
  68. data/examples/api-samples/views/annotation_sample.haml +63 -63
  69. data/examples/api-samples/views/envelope_sample.haml +72 -72
  70. data/examples/api-samples/views/index.haml +235 -235
  71. data/examples/api-samples/views/layout.haml +3 -3
  72. data/examples/api-samples/views/sample01.haml +63 -63
  73. data/examples/api-samples/views/sample02.haml +52 -52
  74. data/examples/api-samples/views/sample03.haml +87 -87
  75. data/examples/api-samples/views/sample04.haml +55 -55
  76. data/examples/api-samples/views/sample05.haml +86 -86
  77. data/examples/api-samples/views/sample06.haml +58 -58
  78. data/examples/api-samples/views/sample07.haml +52 -52
  79. data/examples/api-samples/views/sample08.haml +100 -100
  80. data/examples/api-samples/views/sample09.haml +95 -95
  81. data/examples/api-samples/views/sample10.haml +93 -93
  82. data/examples/api-samples/views/sample11.haml +140 -140
  83. data/examples/api-samples/views/sample12.haml +68 -68
  84. data/examples/api-samples/views/sample13.haml +64 -64
  85. data/examples/api-samples/views/sample14.haml +60 -60
  86. data/examples/api-samples/views/sample15.haml +51 -51
  87. data/examples/api-samples/views/sample16.haml +50 -50
  88. data/examples/api-samples/views/sample17.haml +54 -54
  89. data/examples/api-samples/views/sample18.haml +143 -143
  90. data/examples/api-samples/views/sample19.haml +92 -92
  91. data/examples/api-samples/views/sample20.haml +54 -54
  92. data/examples/api-samples/views/sample21.haml +123 -123
  93. data/examples/api-samples/views/sample22.haml +106 -106
  94. data/examples/api-samples/views/sample25.haml +101 -101
  95. data/examples/api-samples/views/sample31.haml +2 -2
  96. data/examples/api-samples/web.rb +20 -20
  97. data/examples/viewer/Gemfile +5 -5
  98. data/examples/viewer/app.rb +52 -52
  99. data/groupdocs.gemspec +31 -31
  100. data/lib/groupdocs.rb +62 -62
  101. data/lib/groupdocs/api.rb +6 -6
  102. data/lib/groupdocs/api/entity.rb +112 -112
  103. data/lib/groupdocs/api/helpers.rb +11 -11
  104. data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
  105. data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
  106. data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
  107. data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
  108. data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
  109. data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
  110. data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
  111. data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
  112. data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
  113. data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
  114. data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
  115. data/lib/groupdocs/api/request.rb +91 -91
  116. data/lib/groupdocs/datasource.rb +249 -249
  117. data/lib/groupdocs/datasource/field.rb +39 -39
  118. data/lib/groupdocs/document.rb +1550 -1550
  119. data/lib/groupdocs/document/annotation.rb +421 -421
  120. data/lib/groupdocs/document/annotation/reply.rb +173 -173
  121. data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
  122. data/lib/groupdocs/document/change.rb +56 -56
  123. data/lib/groupdocs/document/field.rb +53 -53
  124. data/lib/groupdocs/document/metadata.rb +32 -32
  125. data/lib/groupdocs/document/rectangle.rb +18 -18
  126. data/lib/groupdocs/document/view.rb +36 -36
  127. data/lib/groupdocs/errors.rb +8 -8
  128. data/lib/groupdocs/job.rb +468 -468
  129. data/lib/groupdocs/questionnaire.rb +530 -530
  130. data/lib/groupdocs/questionnaire/collector.rb +335 -335
  131. data/lib/groupdocs/questionnaire/execution.rb +181 -181
  132. data/lib/groupdocs/questionnaire/page.rb +43 -43
  133. data/lib/groupdocs/questionnaire/question.rb +108 -108
  134. data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
  135. data/lib/groupdocs/signature.rb +380 -380
  136. data/lib/groupdocs/signature/contact.rb +181 -181
  137. data/lib/groupdocs/signature/envelope.rb +747 -747
  138. data/lib/groupdocs/signature/envelope/log.rb +20 -20
  139. data/lib/groupdocs/signature/field.rb +286 -286
  140. data/lib/groupdocs/signature/field/location.rb +71 -71
  141. data/lib/groupdocs/signature/form.rb +804 -804
  142. data/lib/groupdocs/signature/list.rb +92 -92
  143. data/lib/groupdocs/signature/recipient.rb +79 -79
  144. data/lib/groupdocs/signature/role.rb +54 -54
  145. data/lib/groupdocs/signature/shared.rb +6 -6
  146. data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
  147. data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
  148. data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
  149. data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
  150. data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
  151. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
  152. data/lib/groupdocs/signature/template.rb +124 -124
  153. data/lib/groupdocs/storage.rb +44 -44
  154. data/lib/groupdocs/storage/file.rb +432 -432
  155. data/lib/groupdocs/storage/folder.rb +288 -288
  156. data/lib/groupdocs/storage/package.rb +48 -48
  157. data/lib/groupdocs/storage/provider.rb +32 -32
  158. data/lib/groupdocs/subscription.rb +323 -323
  159. data/lib/groupdocs/subscription/limit.rb +20 -20
  160. data/lib/groupdocs/user.rb +955 -930
  161. data/lib/groupdocs/version.rb +3 -3
  162. data/spec/groupdocs/api/entity_spec.rb +55 -55
  163. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
  164. data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
  165. data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
  166. data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
  167. data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
  168. data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
  169. data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
  170. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
  171. data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
  172. data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
  173. data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
  174. data/spec/groupdocs/api/request_spec.rb +112 -112
  175. data/spec/groupdocs/datasource/field_spec.rb +29 -29
  176. data/spec/groupdocs/datasource_spec.rb +145 -145
  177. data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
  178. data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
  179. data/spec/groupdocs/document/annotation_spec.rb +234 -234
  180. data/spec/groupdocs/document/change_spec.rb +39 -39
  181. data/spec/groupdocs/document/field_spec.rb +28 -28
  182. data/spec/groupdocs/document/metadata_spec.rb +21 -21
  183. data/spec/groupdocs/document/rectangle_spec.rb +14 -14
  184. data/spec/groupdocs/document/view_spec.rb +33 -33
  185. data/spec/groupdocs/document_spec.rb +859 -859
  186. data/spec/groupdocs/errors_spec.rb +7 -7
  187. data/spec/groupdocs/job_spec.rb +323 -323
  188. data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
  189. data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
  190. data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
  191. data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
  192. data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
  193. data/spec/groupdocs/questionnaire_spec.rb +295 -295
  194. data/spec/groupdocs/signature/contact_spec.rb +142 -142
  195. data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
  196. data/spec/groupdocs/signature/envelope_spec.rb +384 -384
  197. data/spec/groupdocs/signature/field/location_spec.rb +40 -40
  198. data/spec/groupdocs/signature/field_spec.rb +235 -235
  199. data/spec/groupdocs/signature/form_spec.rb +205 -205
  200. data/spec/groupdocs/signature/list_spec.rb +87 -87
  201. data/spec/groupdocs/signature/recipient_spec.rb +26 -26
  202. data/spec/groupdocs/signature/role_spec.rb +47 -47
  203. data/spec/groupdocs/signature/template_spec.rb +80 -80
  204. data/spec/groupdocs/signature_spec.rb +194 -194
  205. data/spec/groupdocs/storage/file_spec.rb +303 -303
  206. data/spec/groupdocs/storage/folder_spec.rb +270 -270
  207. data/spec/groupdocs/storage/package_spec.rb +38 -38
  208. data/spec/groupdocs/storage/provider_spec.rb +21 -21
  209. data/spec/groupdocs/storage_spec.rb +27 -27
  210. data/spec/groupdocs/subscription/limit_spec.rb +16 -16
  211. data/spec/groupdocs/subscription_spec.rb +74 -74
  212. data/spec/groupdocs/user_spec.rb +257 -257
  213. data/spec/groupdocs_spec.rb +63 -63
  214. data/spec/spec_helper.rb +73 -73
  215. data/spec/support/json/annotation_access_set.json +11 -11
  216. data/spec/support/json/annotation_collaborators_get.json +16 -16
  217. data/spec/support/json/annotation_collaborators_set.json +16 -16
  218. data/spec/support/json/annotation_create.json +12 -12
  219. data/spec/support/json/annotation_list.json +32 -32
  220. data/spec/support/json/annotation_marker_move.json +10 -10
  221. data/spec/support/json/annotation_move.json +8 -8
  222. data/spec/support/json/annotation_remove.json +9 -9
  223. data/spec/support/json/annotation_replies_create.json +9 -9
  224. data/spec/support/json/annotation_replies_get.json +25 -25
  225. data/spec/support/json/annotation_reviewers_get.json +18 -18
  226. data/spec/support/json/comparison_changes.json +46 -46
  227. data/spec/support/json/comparison_compare.json +8 -8
  228. data/spec/support/json/comparison_document.json +10 -10
  229. data/spec/support/json/contact_add.json +12 -12
  230. data/spec/support/json/contacts_get.json +19 -19
  231. data/spec/support/json/contacts_import.json +8 -8
  232. data/spec/support/json/datasource_add.json +8 -8
  233. data/spec/support/json/datasource_get.json +22 -22
  234. data/spec/support/json/datasource_remove.json +8 -8
  235. data/spec/support/json/datasource_update.json +8 -8
  236. data/spec/support/json/delete_account.json +9 -9
  237. data/spec/support/json/document_access_info_get.json +14 -14
  238. data/spec/support/json/document_convert.json +8 -8
  239. data/spec/support/json/document_datasource.json +10 -10
  240. data/spec/support/json/document_fields.json +34 -34
  241. data/spec/support/json/document_formats.json +8 -8
  242. data/spec/support/json/document_metadata.json +15 -15
  243. data/spec/support/json/document_page_images_get.json +20 -20
  244. data/spec/support/json/document_questionnaire_create.json +9 -9
  245. data/spec/support/json/document_questionnaires.json +23 -23
  246. data/spec/support/json/document_sharers_remove.json +8 -8
  247. data/spec/support/json/document_sharers_set.json +16 -16
  248. data/spec/support/json/document_thumbnails.json +24 -24
  249. data/spec/support/json/document_views.json +32 -32
  250. data/spec/support/json/envelope_get.json +46 -46
  251. data/spec/support/json/envelope_logs.json +16 -16
  252. data/spec/support/json/envelope_recipient_add.json +26 -26
  253. data/spec/support/json/envelopes_all.json +48 -48
  254. data/spec/support/json/envelopes_resources.json +31 -31
  255. data/spec/support/json/file_compress.json +8 -8
  256. data/spec/support/json/file_copy.json +14 -14
  257. data/spec/support/json/file_delete.json +5 -5
  258. data/spec/support/json/file_move.json +14 -14
  259. data/spec/support/json/file_upload.json +8 -8
  260. data/spec/support/json/folder_create.json +8 -8
  261. data/spec/support/json/folder_delete.json +5 -5
  262. data/spec/support/json/folder_list.json +22 -22
  263. data/spec/support/json/folder_move.json +8 -8
  264. data/spec/support/json/folder_sharers_get.json +16 -16
  265. data/spec/support/json/folder_sharers_remove.json +8 -8
  266. data/spec/support/json/folder_sharers_set.json +16 -16
  267. data/spec/support/json/form_get.json +21 -21
  268. data/spec/support/json/forms_all.json +23 -23
  269. data/spec/support/json/job_add_url.json +8 -8
  270. data/spec/support/json/job_create.json +8 -8
  271. data/spec/support/json/job_documents.json +40 -40
  272. data/spec/support/json/job_file_add.json +8 -8
  273. data/spec/support/json/job_get.json +30 -30
  274. data/spec/support/json/job_update.json +7 -7
  275. data/spec/support/json/jobs_get.json +58 -58
  276. data/spec/support/json/list_add.json +12 -12
  277. data/spec/support/json/lists_get.json +19 -19
  278. data/spec/support/json/package_create.json +7 -7
  279. data/spec/support/json/questionnaire_collector.json +17 -17
  280. data/spec/support/json/questionnaire_collectors.json +38 -38
  281. data/spec/support/json/questionnaire_collectors_add.json +10 -10
  282. data/spec/support/json/questionnaire_create.json +10 -10
  283. data/spec/support/json/questionnaire_datasources.json +26 -26
  284. data/spec/support/json/questionnaire_execution_add.json +9 -9
  285. data/spec/support/json/questionnaire_execution_status_set.json +8 -8
  286. data/spec/support/json/questionnaire_execution_update.json +8 -8
  287. data/spec/support/json/questionnaire_executions.json +28 -28
  288. data/spec/support/json/questionnaire_get.json +17 -17
  289. data/spec/support/json/questionnaire_remove.json +8 -8
  290. data/spec/support/json/questionnaire_update.json +8 -8
  291. data/spec/support/json/questionnaires_get.json +40 -40
  292. data/spec/support/json/sign_documents.json +16 -16
  293. data/spec/support/json/signature_create.json +12 -12
  294. data/spec/support/json/signature_field_add.json +25 -25
  295. data/spec/support/json/signature_fields_get.json +27 -27
  296. data/spec/support/json/signature_roles_get.json +17 -17
  297. data/spec/support/json/signatures_get.json +19 -19
  298. data/spec/support/json/storage_info.json +10 -10
  299. data/spec/support/json/subscription_plan_get.json +9 -9
  300. data/spec/support/json/subscription_plans_get.json +17 -17
  301. data/spec/support/json/template_get.json +35 -35
  302. data/spec/support/json/template_get_documents.json +15 -15
  303. data/spec/support/json/template_get_recipients.json +20 -20
  304. data/spec/support/json/templates_all.json +37 -37
  305. data/spec/support/json/templates_get.json +21 -21
  306. data/spec/support/json/update_account.json +10 -10
  307. data/spec/support/json/user_area.json +67 -67
  308. data/spec/support/json/user_embed_key.json +38 -38
  309. data/spec/support/json/user_get_embed_key.json +67 -67
  310. data/spec/support/json/user_login.json +67 -67
  311. data/spec/support/json/user_profile_get.json +24 -24
  312. data/spec/support/json/user_providers.json +31 -31
  313. data/spec/support/json/user_roles.json +25 -25
  314. data/spec/support/json/user_users_get.json +27 -27
  315. data/spec/support/shared_examples/api/entity.rb +39 -39
  316. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
  317. data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
  318. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
  319. data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
  320. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
  321. data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
  322. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
  323. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
  324. metadata +35 -55
@@ -1,631 +1,631 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <title>sample19.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>sample19.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">&#182;</a>
29
- </div>
30
- <p>GET request</p>
31
-
32
- </div>
33
-
34
- <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample-19-how-to-compare-documents'</span> <span class="hljs-keyword">do</span>
35
- haml <span class="hljs-symbol">:sample19</span>
36
- <span class="hljs-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">&#182;</a>
46
- </div>
47
- <p>POST request</p>
48
-
49
- </div>
50
-
51
- <div class="content"><div class='highlight'><pre>post <span class="hljs-string">'/sample19/compere_callback'</span> <span class="hljs-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">&#182;</a>
61
- </div>
62
- <p>Set download path</p>
63
-
64
- </div>
65
-
66
- <div class="content"><div class='highlight'><pre> downloads_path = <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span></pre></div></div>
67
-
68
- </li>
69
-
70
-
71
- <li id="section-4">
72
- <div class="annotation">
73
-
74
- <div class="pilwrap ">
75
- <a class="pilcrow" href="#section-4">&#182;</a>
76
- </div>
77
- <p>Get callback request</p>
78
-
79
- </div>
80
-
81
- <div class="content"><div class='highlight'><pre> data = <span class="hljs-constant">JSON</span>.parse(request.body.read)
82
- <span class="hljs-keyword">begin</span>
83
- raise <span class="hljs-string">'Empty params!'</span> <span class="hljs-keyword">if</span> data.empty?
84
- source_id = <span class="hljs-keyword">nil</span>
85
- client_id = <span class="hljs-keyword">nil</span>
86
- private_key = <span class="hljs-keyword">nil</span></pre></div></div>
87
-
88
- </li>
89
-
90
-
91
- <li id="section-5">
92
- <div class="annotation">
93
-
94
- <div class="pilwrap ">
95
- <a class="pilcrow" href="#section-5">&#182;</a>
96
- </div>
97
- <p>Get value of SourceId</p>
98
-
99
- </div>
100
-
101
- <div class="content"><div class='highlight'><pre> data.each <span class="hljs-keyword">do</span> |key, value|
102
- <span class="hljs-keyword">if</span> key == <span class="hljs-string">'SourceId'</span>
103
- source_id = value
104
- <span class="hljs-keyword">end</span>
105
- <span class="hljs-keyword">end</span></pre></div></div>
106
-
107
- </li>
108
-
109
-
110
- <li id="section-6">
111
- <div class="annotation">
112
-
113
- <div class="pilwrap ">
114
- <a class="pilcrow" href="#section-6">&#182;</a>
115
- </div>
116
- <p>Get private key and client_id from file user_info.txt</p>
117
-
118
- </div>
119
-
120
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> <span class="hljs-constant">File</span>.exist?(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>)
121
- contents = <span class="hljs-constant">File</span>.read(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>)
122
- contents = contents.split(<span class="hljs-string">' '</span>)
123
- client_id = contents.first
124
- private_key = contents.last
125
- <span class="hljs-keyword">end</span></pre></div></div>
126
-
127
- </li>
128
-
129
-
130
- <li id="section-7">
131
- <div class="annotation">
132
-
133
- <div class="pilwrap ">
134
- <a class="pilcrow" href="#section-7">&#182;</a>
135
- </div>
136
- <p>Create Job instance</p>
137
-
138
- </div>
139
-
140
- <div class="content"><div class='highlight'><pre> job = <span class="hljs-constant">GroupDocs::Job</span>.new({<span class="hljs-symbol">:id</span> =&gt; source_id})</pre></div></div>
141
-
142
- </li>
143
-
144
-
145
- <li id="section-8">
146
- <div class="annotation">
147
-
148
- <div class="pilwrap ">
149
- <a class="pilcrow" href="#section-8">&#182;</a>
150
- </div>
151
- <p>Get document by job id</p>
152
-
153
- </div>
154
-
155
- <div class="content"><div class='highlight'><pre> documents = job.documents!({<span class="hljs-symbol">:client_id</span> =&gt; client_id, <span class="hljs-symbol">:private_key</span> =&gt; private_key})</pre></div></div>
156
-
157
- </li>
158
-
159
-
160
- <li id="section-9">
161
- <div class="annotation">
162
-
163
- <div class="pilwrap ">
164
- <a class="pilcrow" href="#section-9">&#182;</a>
165
- </div>
166
- <p>Download converted file</p>
167
-
168
- </div>
169
-
170
- <div class="content"><div class='highlight'><pre> documents[<span class="hljs-symbol">:inputs</span>].first.outputs.first.download!(downloads_path, {<span class="hljs-symbol">:client_id</span> =&gt; client_id, <span class="hljs-symbol">:private_key</span> =&gt; private_key})
171
-
172
- <span class="hljs-keyword">rescue</span> <span class="hljs-constant">Exception</span> =&gt; e
173
- err = e.message
174
- <span class="hljs-keyword">end</span>
175
- <span class="hljs-keyword">end</span></pre></div></div>
176
-
177
- </li>
178
-
179
-
180
- <li id="section-10">
181
- <div class="annotation">
182
-
183
- <div class="pilwrap ">
184
- <a class="pilcrow" href="#section-10">&#182;</a>
185
- </div>
186
- <p>GET request</p>
187
-
188
- </div>
189
-
190
- <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample19/check'</span> <span class="hljs-keyword">do</span></pre></div></div>
191
-
192
- </li>
193
-
194
-
195
- <li id="section-11">
196
- <div class="annotation">
197
-
198
- <div class="pilwrap ">
199
- <a class="pilcrow" href="#section-11">&#182;</a>
200
- </div>
201
- <p>Check is there download directory</p>
202
-
203
- </div>
204
-
205
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">unless</span> <span class="hljs-constant">File</span>.directory?(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span>)
206
- <span class="hljs-keyword">return</span> <span class="hljs-string">'Directory was not found.'</span>
207
- <span class="hljs-keyword">end</span></pre></div></div>
208
-
209
- </li>
210
-
211
-
212
- <li id="section-12">
213
- <div class="annotation">
214
-
215
- <div class="pilwrap ">
216
- <a class="pilcrow" href="#section-12">&#182;</a>
217
- </div>
218
- <p>Get file name from download directory</p>
219
-
220
- </div>
221
-
222
- <div class="content"><div class='highlight'><pre> name = <span class="hljs-keyword">nil</span>
223
- <span class="hljs-constant">Dir</span>.entries(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span>).each <span class="hljs-keyword">do</span> |file|
224
- name = file <span class="hljs-keyword">if</span> file != <span class="hljs-string">'.'</span> &amp;&amp; file != <span class="hljs-string">'..'</span>
225
- <span class="hljs-keyword">end</span>
226
-
227
- name
228
- <span class="hljs-keyword">end</span></pre></div></div>
229
-
230
- </li>
231
-
232
-
233
- <li id="section-13">
234
- <div class="annotation">
235
-
236
- <div class="pilwrap ">
237
- <a class="pilcrow" href="#section-13">&#182;</a>
238
- </div>
239
- <p>GET request</p>
240
-
241
- </div>
242
-
243
- <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample19/downloads/:filename'</span> <span class="hljs-keyword">do</span> |filename|</pre></div></div>
244
-
245
- </li>
246
-
247
-
248
- <li id="section-14">
249
- <div class="annotation">
250
-
251
- <div class="pilwrap ">
252
- <a class="pilcrow" href="#section-14">&#182;</a>
253
- </div>
254
- <p>Send file with header to download it</p>
255
-
256
- </div>
257
-
258
- <div class="content"><div class='highlight'><pre> send_file <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads/<span class="hljs-subst">#{filename}</span>"</span>, <span class="hljs-symbol">:filename</span> =&gt; filename, <span class="hljs-symbol">:type</span> =&gt; <span class="hljs-string">'Application/octet-stream'</span>
259
- <span class="hljs-keyword">end</span></pre></div></div>
260
-
261
- </li>
262
-
263
-
264
- <li id="section-15">
265
- <div class="annotation">
266
-
267
- <div class="pilwrap ">
268
- <a class="pilcrow" href="#section-15">&#182;</a>
269
- </div>
270
- <p>POST request</p>
271
-
272
- </div>
273
-
274
- <div class="content"><div class='highlight'><pre>post <span class="hljs-string">'/sample-19-how-to-compare-documents'</span> <span class="hljs-keyword">do</span></pre></div></div>
275
-
276
- </li>
277
-
278
-
279
- <li id="section-16">
280
- <div class="annotation">
281
-
282
- <div class="pilwrap ">
283
- <a class="pilcrow" href="#section-16">&#182;</a>
284
- </div>
285
- <p>Set variables</p>
286
-
287
- </div>
288
-
289
- <div class="content"><div class='highlight'><pre> set <span class="hljs-symbol">:client_id</span>, params[<span class="hljs-symbol">:clientId</span>]
290
- set <span class="hljs-symbol">:private_key</span>, params[<span class="hljs-symbol">:privateKey</span>]
291
- set <span class="hljs-symbol">:sourceFileId</span>, params[<span class="hljs-symbol">:sourceFileId</span>]
292
- set <span class="hljs-symbol">:targetFileId</span>, params[<span class="hljs-symbol">:targetFileId</span>]
293
- set <span class="hljs-symbol">:callback</span>, params[<span class="hljs-symbol">:callback</span>]
294
- set <span class="hljs-symbol">:base_path</span>, params[<span class="hljs-symbol">:basePath</span>]</pre></div></div>
295
-
296
- </li>
297
-
298
-
299
- <li id="section-17">
300
- <div class="annotation">
301
-
302
- <div class="pilwrap ">
303
- <a class="pilcrow" href="#section-17">&#182;</a>
304
- </div>
305
- <p>Set download path</p>
306
-
307
- </div>
308
-
309
- <div class="content"><div class='highlight'><pre> downloads_path = <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span></pre></div></div>
310
-
311
- </li>
312
-
313
-
314
- <li id="section-18">
315
- <div class="annotation">
316
-
317
- <div class="pilwrap ">
318
- <a class="pilcrow" href="#section-18">&#182;</a>
319
- </div>
320
- <p>Remove all files from download directory or create folder if it not there</p>
321
-
322
- </div>
323
-
324
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> <span class="hljs-constant">File</span>.directory?(downloads_path)
325
- <span class="hljs-constant">Dir</span>.foreach(downloads_path) { |f| fn = <span class="hljs-constant">File</span>.join(downloads_path, f); <span class="hljs-constant">File</span>.delete(fn) <span class="hljs-keyword">if</span> f != <span class="hljs-string">'.'</span> &amp;&amp; f != <span class="hljs-string">'..'</span> }
326
- <span class="hljs-keyword">else</span>
327
- <span class="hljs-constant">Dir::</span>mkdir(downloads_path)
328
- <span class="hljs-keyword">end</span>
329
-
330
- <span class="hljs-keyword">begin</span></pre></div></div>
331
-
332
- </li>
333
-
334
-
335
- <li id="section-19">
336
- <div class="annotation">
337
-
338
- <div class="pilwrap ">
339
- <a class="pilcrow" href="#section-19">&#182;</a>
340
- </div>
341
- <p>Check required variables</p>
342
-
343
- </div>
344
-
345
- <div class="content"><div class='highlight'><pre> raise <span class="hljs-string">'Please enter all required parameters'</span> <span class="hljs-keyword">if</span> settings.client_id.empty? <span class="hljs-keyword">or</span> settings.private_key.empty? <span class="hljs-keyword">or</span> settings.sourceFileId.empty? <span class="hljs-keyword">or</span> settings.targetFileId.empty?</pre></div></div>
346
-
347
- </li>
348
-
349
-
350
- <li id="section-20">
351
- <div class="annotation">
352
-
353
- <div class="pilwrap ">
354
- <a class="pilcrow" href="#section-20">&#182;</a>
355
- </div>
356
- <p>Prepare base path</p>
357
-
358
- </div>
359
-
360
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> settings.base_path.empty?
361
- base_path = <span class="hljs-string">'https://api.groupdocs.com'</span>
362
- <span class="hljs-keyword">elsif</span> settings.base_path.match(<span class="hljs-string">'/v2.0'</span>)
363
- base_path = settings.base_path.split(<span class="hljs-string">'/v2.0'</span>)[<span class="hljs-number">0</span>]
364
- <span class="hljs-keyword">else</span>
365
- base_path = settings.base_path
366
- <span class="hljs-keyword">end</span></pre></div></div>
367
-
368
- </li>
369
-
370
-
371
- <li id="section-21">
372
- <div class="annotation">
373
-
374
- <div class="pilwrap ">
375
- <a class="pilcrow" href="#section-21">&#182;</a>
376
- </div>
377
- <p>Configure your access to API server</p>
378
-
379
- </div>
380
-
381
- <div class="content"><div class='highlight'><pre> <span class="hljs-constant">GroupDocs</span>.configure <span class="hljs-keyword">do</span> |groupdocs|
382
- groupdocs.client_id = settings.client_id
383
- groupdocs.private_key = settings.private_key</pre></div></div>
384
-
385
- </li>
386
-
387
-
388
- <li id="section-22">
389
- <div class="annotation">
390
-
391
- <div class="pilwrap ">
392
- <a class="pilcrow" href="#section-22">&#182;</a>
393
- </div>
394
- <p>Optionally specify API server and version</p>
395
-
396
- </div>
397
-
398
- <div class="content"><div class='highlight'><pre> groupdocs.api_server = base_path <span class="hljs-comment"># default is 'https://api.groupdocs.com'</span>
399
- <span class="hljs-keyword">end</span></pre></div></div>
400
-
401
- </li>
402
-
403
-
404
- <li id="section-23">
405
- <div class="annotation">
406
-
407
- <div class="pilwrap ">
408
- <a class="pilcrow" href="#section-23">&#182;</a>
409
- </div>
410
- <p>Write client and private key to the file for callback job</p>
411
-
412
- </div>
413
-
414
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> settings.callback
415
- out_file = <span class="hljs-constant">File</span>.new(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>, <span class="hljs-string">'w'</span>)</pre></div></div>
416
-
417
- </li>
418
-
419
-
420
- <li id="section-24">
421
- <div class="annotation">
422
-
423
- <div class="pilwrap ">
424
- <a class="pilcrow" href="#section-24">&#182;</a>
425
- </div>
426
- <p>White space is required</p>
427
-
428
- </div>
429
-
430
- <div class="content"><div class='highlight'><pre> out_file.write(<span class="hljs-string">"<span class="hljs-subst">#{settings.client_id}</span> "</span>)
431
- out_file.write(<span class="hljs-string">"<span class="hljs-subst">#{settings.private_key}</span>"</span>)
432
- out_file.close
433
- <span class="hljs-keyword">end</span></pre></div></div>
434
-
435
- </li>
436
-
437
-
438
- <li id="section-25">
439
- <div class="annotation">
440
-
441
- <div class="pilwrap ">
442
- <a class="pilcrow" href="#section-25">&#182;</a>
443
- </div>
444
- <p>Make a request to API using client_id and private_key</p>
445
-
446
- </div>
447
-
448
- <div class="content"><div class='highlight'><pre> files_list = <span class="hljs-constant">GroupDocs::Storage::Folder</span>.list!(<span class="hljs-string">'/'</span>, {})
449
-
450
- source_document = <span class="hljs-string">''</span>
451
- target_document = <span class="hljs-string">''</span></pre></div></div>
452
-
453
- </li>
454
-
455
-
456
- <li id="section-26">
457
- <div class="annotation">
458
-
459
- <div class="pilwrap ">
460
- <a class="pilcrow" href="#section-26">&#182;</a>
461
- </div>
462
- <p>Get source and target documents by file ID</p>
463
-
464
- </div>
465
-
466
- <div class="content"><div class='highlight'><pre> files_list.each <span class="hljs-keyword">do</span> |element|
467
- <span class="hljs-keyword">if</span> element.respond_to?(<span class="hljs-string">'guid'</span>) == <span class="hljs-keyword">true</span> <span class="hljs-keyword">and</span> element.guid == settings.sourceFileId
468
- source_document = element
469
- <span class="hljs-keyword">else</span>
470
- source_document = <span class="hljs-constant">GroupDocs::Storage::File</span>.new(<span class="hljs-symbol">guid:</span> settings.sourceFileId)
471
- <span class="hljs-keyword">end</span>
472
- <span class="hljs-keyword">if</span> element.respond_to?(<span class="hljs-string">'guid'</span>) == <span class="hljs-keyword">true</span> <span class="hljs-keyword">and</span> element.guid == settings.targetFileId
473
- target_document = element
474
- <span class="hljs-keyword">else</span>
475
- target_document = <span class="hljs-constant">GroupDocs::Storage::File</span>.new(<span class="hljs-symbol">guid:</span> settings.targetFileId)
476
- <span class="hljs-keyword">end</span>
477
- <span class="hljs-keyword">end</span>
478
-
479
- <span class="hljs-keyword">unless</span> source_document.instance_of? <span class="hljs-constant">String</span> <span class="hljs-keyword">and</span> target_document.instance_of? <span class="hljs-constant">String</span>
480
-
481
- info = source_document.to_document.compare!(target_document.to_document, settings.callback)
482
-
483
- i = <span class="hljs-number">0</span>
484
-
485
- <span class="hljs-keyword">while</span> i&lt;<span class="hljs-number">5</span> <span class="hljs-keyword">do</span>
486
- sleep(<span class="hljs-number">5</span>)
487
- job = <span class="hljs-constant">GroupDocs::Job</span>.get!(info.id)
488
- <span class="hljs-keyword">break</span> <span class="hljs-keyword">if</span> job.status == <span class="hljs-symbol">:archived</span>
489
- i += <span class="hljs-number">1</span>
490
- <span class="hljs-keyword">end</span></pre></div></div>
491
-
492
- </li>
493
-
494
-
495
- <li id="section-27">
496
- <div class="annotation">
497
-
498
- <div class="pilwrap ">
499
- <a class="pilcrow" href="#section-27">&#182;</a>
500
- </div>
501
- <p>Get job by ID</p>
502
-
503
- </div>
504
-
505
- <div class="content"><div class='highlight'><pre> job = <span class="hljs-constant">GroupDocs::Job</span>.new(<span class="hljs-symbol">id:</span> info.id)</pre></div></div>
506
-
507
- </li>
508
-
509
-
510
- <li id="section-28">
511
- <div class="annotation">
512
-
513
- <div class="pilwrap ">
514
- <a class="pilcrow" href="#section-28">&#182;</a>
515
- </div>
516
- <p>Get all job documents</p>
517
-
518
- </div>
519
-
520
- <div class="content"><div class='highlight'><pre> documents = job.documents!()</pre></div></div>
521
-
522
- </li>
523
-
524
-
525
- <li id="section-29">
526
- <div class="annotation">
527
-
528
- <div class="pilwrap ">
529
- <a class="pilcrow" href="#section-29">&#182;</a>
530
- </div>
531
- <p>Get compared file giud</p>
532
-
533
- </div>
534
-
535
- <div class="content"><div class='highlight'><pre> guid = documents[<span class="hljs-symbol">:outputs</span>].first.file.guid
536
- embedkey = <span class="hljs-constant">GroupDocs::User</span>.get_embed_key!(<span class="hljs-string">'comparison'</span>)</pre></div></div>
537
-
538
- </li>
539
-
540
-
541
- <li id="section-30">
542
- <div class="annotation">
543
-
544
- <div class="pilwrap ">
545
- <a class="pilcrow" href="#section-30">&#182;</a>
546
- </div>
547
- <p>Prepare to sign url</p>
548
-
549
- </div>
550
-
551
- <div class="content"><div class='highlight'><pre> iframe = <span class="hljs-string">"/document-comparison2/embed/<span class="hljs-subst">#{embedkey}</span>/<span class="hljs-subst">#{guid}</span>"</span></pre></div></div>
552
-
553
- </li>
554
-
555
-
556
- <li id="section-31">
557
- <div class="annotation">
558
-
559
- <div class="pilwrap ">
560
- <a class="pilcrow" href="#section-31">&#182;</a>
561
- </div>
562
- <p>Construct result string</p>
563
-
564
- </div>
565
-
566
- <div class="content"><div class='highlight'><pre> url = <span class="hljs-constant">GroupDocs::Api::Request</span>.new(<span class="hljs-symbol">:path</span> =&gt; iframe).prepare_and_sign_url</pre></div></div>
567
-
568
- </li>
569
-
570
-
571
- <li id="section-32">
572
- <div class="annotation">
573
-
574
- <div class="pilwrap ">
575
- <a class="pilcrow" href="#section-32">&#182;</a>
576
- </div>
577
- <p>Generate iframe URL</p>
578
-
579
- </div>
580
-
581
- <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">case</span> settings.base_path
582
- <span class="hljs-keyword">when</span> <span class="hljs-string">'https://stage-api-groupdocs.dynabic.com'</span>
583
- iframe = <span class="hljs-string">"https://stage-api-groupdocs.dynabic.com<span class="hljs-subst">#{url}</span>"</span>
584
- <span class="hljs-keyword">when</span> <span class="hljs-string">'https://dev-api-groupdocs.dynabic.com'</span>
585
- iframe = <span class="hljs-string">"https://dev-apps.groupdocs.com<span class="hljs-subst">#{url}</span>"</span>
586
- <span class="hljs-keyword">else</span>
587
- iframe = <span class="hljs-string">"https://apps.groupdocs.com<span class="hljs-subst">#{url}</span>"</span>
588
- <span class="hljs-keyword">end</span></pre></div></div>
589
-
590
- </li>
591
-
592
-
593
- <li id="section-33">
594
- <div class="annotation">
595
-
596
- <div class="pilwrap ">
597
- <a class="pilcrow" href="#section-33">&#182;</a>
598
- </div>
599
- <p>Construct result iframe</p>
600
-
601
- </div>
602
-
603
- <div class="content"><div class='highlight'><pre> iframe = <span class="hljs-string">"&lt;iframe id='downloadframe' src='<span class="hljs-subst">#{iframe}</span>' width='800' height='1000'&gt;&lt;/iframe&gt;"</span>
604
- <span class="hljs-keyword">end</span>
605
-
606
- <span class="hljs-keyword">rescue</span> <span class="hljs-constant">Exception</span> =&gt; e
607
- err = e.message
608
- <span class="hljs-keyword">end</span></pre></div></div>
609
-
610
- </li>
611
-
612
-
613
- <li id="section-34">
614
- <div class="annotation">
615
-
616
- <div class="pilwrap ">
617
- <a class="pilcrow" href="#section-34">&#182;</a>
618
- </div>
619
- <p>Set variables for template</p>
620
-
621
- </div>
622
-
623
- <div class="content"><div class='highlight'><pre> haml <span class="hljs-symbol">:sample19</span>, <span class="hljs-symbol">:locals</span> =&gt; {<span class="hljs-symbol">:userId</span> =&gt; settings.client_id, <span class="hljs-symbol">:privateKey</span> =&gt; settings.private_key, <span class="hljs-symbol">:sourceFileId</span> =&gt; settings.sourceFileId, <span class="hljs-symbol">:targetFileId</span> =&gt; settings.targetFileId, <span class="hljs-symbol">:callback</span> =&gt; settings.callback, <span class="hljs-symbol">:iframe</span> =&gt; iframe, <span class="hljs-symbol">:err</span> =&gt; err}
624
- <span class="hljs-keyword">end</span></pre></div></div>
625
-
626
- </li>
627
-
628
- </ul>
629
- </div>
630
- </body>
631
- </html>
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <title>sample19.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>sample19.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">&#182;</a>
29
+ </div>
30
+ <p>GET request</p>
31
+
32
+ </div>
33
+
34
+ <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample-19-how-to-compare-documents'</span> <span class="hljs-keyword">do</span>
35
+ haml <span class="hljs-symbol">:sample19</span>
36
+ <span class="hljs-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">&#182;</a>
46
+ </div>
47
+ <p>POST request</p>
48
+
49
+ </div>
50
+
51
+ <div class="content"><div class='highlight'><pre>post <span class="hljs-string">'/sample19/compere_callback'</span> <span class="hljs-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">&#182;</a>
61
+ </div>
62
+ <p>Set download path</p>
63
+
64
+ </div>
65
+
66
+ <div class="content"><div class='highlight'><pre> downloads_path = <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span></pre></div></div>
67
+
68
+ </li>
69
+
70
+
71
+ <li id="section-4">
72
+ <div class="annotation">
73
+
74
+ <div class="pilwrap ">
75
+ <a class="pilcrow" href="#section-4">&#182;</a>
76
+ </div>
77
+ <p>Get callback request</p>
78
+
79
+ </div>
80
+
81
+ <div class="content"><div class='highlight'><pre> data = <span class="hljs-constant">JSON</span>.parse(request.body.read)
82
+ <span class="hljs-keyword">begin</span>
83
+ raise <span class="hljs-string">'Empty params!'</span> <span class="hljs-keyword">if</span> data.empty?
84
+ source_id = <span class="hljs-keyword">nil</span>
85
+ client_id = <span class="hljs-keyword">nil</span>
86
+ private_key = <span class="hljs-keyword">nil</span></pre></div></div>
87
+
88
+ </li>
89
+
90
+
91
+ <li id="section-5">
92
+ <div class="annotation">
93
+
94
+ <div class="pilwrap ">
95
+ <a class="pilcrow" href="#section-5">&#182;</a>
96
+ </div>
97
+ <p>Get value of SourceId</p>
98
+
99
+ </div>
100
+
101
+ <div class="content"><div class='highlight'><pre> data.each <span class="hljs-keyword">do</span> |key, value|
102
+ <span class="hljs-keyword">if</span> key == <span class="hljs-string">'SourceId'</span>
103
+ source_id = value
104
+ <span class="hljs-keyword">end</span>
105
+ <span class="hljs-keyword">end</span></pre></div></div>
106
+
107
+ </li>
108
+
109
+
110
+ <li id="section-6">
111
+ <div class="annotation">
112
+
113
+ <div class="pilwrap ">
114
+ <a class="pilcrow" href="#section-6">&#182;</a>
115
+ </div>
116
+ <p>Get private key and client_id from file user_info.txt</p>
117
+
118
+ </div>
119
+
120
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> <span class="hljs-constant">File</span>.exist?(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>)
121
+ contents = <span class="hljs-constant">File</span>.read(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>)
122
+ contents = contents.split(<span class="hljs-string">' '</span>)
123
+ client_id = contents.first
124
+ private_key = contents.last
125
+ <span class="hljs-keyword">end</span></pre></div></div>
126
+
127
+ </li>
128
+
129
+
130
+ <li id="section-7">
131
+ <div class="annotation">
132
+
133
+ <div class="pilwrap ">
134
+ <a class="pilcrow" href="#section-7">&#182;</a>
135
+ </div>
136
+ <p>Create Job instance</p>
137
+
138
+ </div>
139
+
140
+ <div class="content"><div class='highlight'><pre> job = <span class="hljs-constant">GroupDocs::Job</span>.new({<span class="hljs-symbol">:id</span> =&gt; source_id})</pre></div></div>
141
+
142
+ </li>
143
+
144
+
145
+ <li id="section-8">
146
+ <div class="annotation">
147
+
148
+ <div class="pilwrap ">
149
+ <a class="pilcrow" href="#section-8">&#182;</a>
150
+ </div>
151
+ <p>Get document by job id</p>
152
+
153
+ </div>
154
+
155
+ <div class="content"><div class='highlight'><pre> documents = job.documents!({<span class="hljs-symbol">:client_id</span> =&gt; client_id, <span class="hljs-symbol">:private_key</span> =&gt; private_key})</pre></div></div>
156
+
157
+ </li>
158
+
159
+
160
+ <li id="section-9">
161
+ <div class="annotation">
162
+
163
+ <div class="pilwrap ">
164
+ <a class="pilcrow" href="#section-9">&#182;</a>
165
+ </div>
166
+ <p>Download converted file</p>
167
+
168
+ </div>
169
+
170
+ <div class="content"><div class='highlight'><pre> documents[<span class="hljs-symbol">:inputs</span>].first.outputs.first.download!(downloads_path, {<span class="hljs-symbol">:client_id</span> =&gt; client_id, <span class="hljs-symbol">:private_key</span> =&gt; private_key})
171
+
172
+ <span class="hljs-keyword">rescue</span> <span class="hljs-constant">Exception</span> =&gt; e
173
+ err = e.message
174
+ <span class="hljs-keyword">end</span>
175
+ <span class="hljs-keyword">end</span></pre></div></div>
176
+
177
+ </li>
178
+
179
+
180
+ <li id="section-10">
181
+ <div class="annotation">
182
+
183
+ <div class="pilwrap ">
184
+ <a class="pilcrow" href="#section-10">&#182;</a>
185
+ </div>
186
+ <p>GET request</p>
187
+
188
+ </div>
189
+
190
+ <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample19/check'</span> <span class="hljs-keyword">do</span></pre></div></div>
191
+
192
+ </li>
193
+
194
+
195
+ <li id="section-11">
196
+ <div class="annotation">
197
+
198
+ <div class="pilwrap ">
199
+ <a class="pilcrow" href="#section-11">&#182;</a>
200
+ </div>
201
+ <p>Check is there download directory</p>
202
+
203
+ </div>
204
+
205
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">unless</span> <span class="hljs-constant">File</span>.directory?(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span>)
206
+ <span class="hljs-keyword">return</span> <span class="hljs-string">'Directory was not found.'</span>
207
+ <span class="hljs-keyword">end</span></pre></div></div>
208
+
209
+ </li>
210
+
211
+
212
+ <li id="section-12">
213
+ <div class="annotation">
214
+
215
+ <div class="pilwrap ">
216
+ <a class="pilcrow" href="#section-12">&#182;</a>
217
+ </div>
218
+ <p>Get file name from download directory</p>
219
+
220
+ </div>
221
+
222
+ <div class="content"><div class='highlight'><pre> name = <span class="hljs-keyword">nil</span>
223
+ <span class="hljs-constant">Dir</span>.entries(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span>).each <span class="hljs-keyword">do</span> |file|
224
+ name = file <span class="hljs-keyword">if</span> file != <span class="hljs-string">'.'</span> &amp;&amp; file != <span class="hljs-string">'..'</span>
225
+ <span class="hljs-keyword">end</span>
226
+
227
+ name
228
+ <span class="hljs-keyword">end</span></pre></div></div>
229
+
230
+ </li>
231
+
232
+
233
+ <li id="section-13">
234
+ <div class="annotation">
235
+
236
+ <div class="pilwrap ">
237
+ <a class="pilcrow" href="#section-13">&#182;</a>
238
+ </div>
239
+ <p>GET request</p>
240
+
241
+ </div>
242
+
243
+ <div class="content"><div class='highlight'><pre>get <span class="hljs-string">'/sample19/downloads/:filename'</span> <span class="hljs-keyword">do</span> |filename|</pre></div></div>
244
+
245
+ </li>
246
+
247
+
248
+ <li id="section-14">
249
+ <div class="annotation">
250
+
251
+ <div class="pilwrap ">
252
+ <a class="pilcrow" href="#section-14">&#182;</a>
253
+ </div>
254
+ <p>Send file with header to download it</p>
255
+
256
+ </div>
257
+
258
+ <div class="content"><div class='highlight'><pre> send_file <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads/<span class="hljs-subst">#{filename}</span>"</span>, <span class="hljs-symbol">:filename</span> =&gt; filename, <span class="hljs-symbol">:type</span> =&gt; <span class="hljs-string">'Application/octet-stream'</span>
259
+ <span class="hljs-keyword">end</span></pre></div></div>
260
+
261
+ </li>
262
+
263
+
264
+ <li id="section-15">
265
+ <div class="annotation">
266
+
267
+ <div class="pilwrap ">
268
+ <a class="pilcrow" href="#section-15">&#182;</a>
269
+ </div>
270
+ <p>POST request</p>
271
+
272
+ </div>
273
+
274
+ <div class="content"><div class='highlight'><pre>post <span class="hljs-string">'/sample-19-how-to-compare-documents'</span> <span class="hljs-keyword">do</span></pre></div></div>
275
+
276
+ </li>
277
+
278
+
279
+ <li id="section-16">
280
+ <div class="annotation">
281
+
282
+ <div class="pilwrap ">
283
+ <a class="pilcrow" href="#section-16">&#182;</a>
284
+ </div>
285
+ <p>Set variables</p>
286
+
287
+ </div>
288
+
289
+ <div class="content"><div class='highlight'><pre> set <span class="hljs-symbol">:client_id</span>, params[<span class="hljs-symbol">:clientId</span>]
290
+ set <span class="hljs-symbol">:private_key</span>, params[<span class="hljs-symbol">:privateKey</span>]
291
+ set <span class="hljs-symbol">:sourceFileId</span>, params[<span class="hljs-symbol">:sourceFileId</span>]
292
+ set <span class="hljs-symbol">:targetFileId</span>, params[<span class="hljs-symbol">:targetFileId</span>]
293
+ set <span class="hljs-symbol">:callback</span>, params[<span class="hljs-symbol">:callback</span>]
294
+ set <span class="hljs-symbol">:base_path</span>, params[<span class="hljs-symbol">:basePath</span>]</pre></div></div>
295
+
296
+ </li>
297
+
298
+
299
+ <li id="section-17">
300
+ <div class="annotation">
301
+
302
+ <div class="pilwrap ">
303
+ <a class="pilcrow" href="#section-17">&#182;</a>
304
+ </div>
305
+ <p>Set download path</p>
306
+
307
+ </div>
308
+
309
+ <div class="content"><div class='highlight'><pre> downloads_path = <span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/downloads"</span></pre></div></div>
310
+
311
+ </li>
312
+
313
+
314
+ <li id="section-18">
315
+ <div class="annotation">
316
+
317
+ <div class="pilwrap ">
318
+ <a class="pilcrow" href="#section-18">&#182;</a>
319
+ </div>
320
+ <p>Remove all files from download directory or create folder if it not there</p>
321
+
322
+ </div>
323
+
324
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> <span class="hljs-constant">File</span>.directory?(downloads_path)
325
+ <span class="hljs-constant">Dir</span>.foreach(downloads_path) { |f| fn = <span class="hljs-constant">File</span>.join(downloads_path, f); <span class="hljs-constant">File</span>.delete(fn) <span class="hljs-keyword">if</span> f != <span class="hljs-string">'.'</span> &amp;&amp; f != <span class="hljs-string">'..'</span> }
326
+ <span class="hljs-keyword">else</span>
327
+ <span class="hljs-constant">Dir::</span>mkdir(downloads_path)
328
+ <span class="hljs-keyword">end</span>
329
+
330
+ <span class="hljs-keyword">begin</span></pre></div></div>
331
+
332
+ </li>
333
+
334
+
335
+ <li id="section-19">
336
+ <div class="annotation">
337
+
338
+ <div class="pilwrap ">
339
+ <a class="pilcrow" href="#section-19">&#182;</a>
340
+ </div>
341
+ <p>Check required variables</p>
342
+
343
+ </div>
344
+
345
+ <div class="content"><div class='highlight'><pre> raise <span class="hljs-string">'Please enter all required parameters'</span> <span class="hljs-keyword">if</span> settings.client_id.empty? <span class="hljs-keyword">or</span> settings.private_key.empty? <span class="hljs-keyword">or</span> settings.sourceFileId.empty? <span class="hljs-keyword">or</span> settings.targetFileId.empty?</pre></div></div>
346
+
347
+ </li>
348
+
349
+
350
+ <li id="section-20">
351
+ <div class="annotation">
352
+
353
+ <div class="pilwrap ">
354
+ <a class="pilcrow" href="#section-20">&#182;</a>
355
+ </div>
356
+ <p>Prepare base path</p>
357
+
358
+ </div>
359
+
360
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> settings.base_path.empty?
361
+ base_path = <span class="hljs-string">'https://api.groupdocs.com'</span>
362
+ <span class="hljs-keyword">elsif</span> settings.base_path.match(<span class="hljs-string">'/v2.0'</span>)
363
+ base_path = settings.base_path.split(<span class="hljs-string">'/v2.0'</span>)[<span class="hljs-number">0</span>]
364
+ <span class="hljs-keyword">else</span>
365
+ base_path = settings.base_path
366
+ <span class="hljs-keyword">end</span></pre></div></div>
367
+
368
+ </li>
369
+
370
+
371
+ <li id="section-21">
372
+ <div class="annotation">
373
+
374
+ <div class="pilwrap ">
375
+ <a class="pilcrow" href="#section-21">&#182;</a>
376
+ </div>
377
+ <p>Configure your access to API server</p>
378
+
379
+ </div>
380
+
381
+ <div class="content"><div class='highlight'><pre> <span class="hljs-constant">GroupDocs</span>.configure <span class="hljs-keyword">do</span> |groupdocs|
382
+ groupdocs.client_id = settings.client_id
383
+ groupdocs.private_key = settings.private_key</pre></div></div>
384
+
385
+ </li>
386
+
387
+
388
+ <li id="section-22">
389
+ <div class="annotation">
390
+
391
+ <div class="pilwrap ">
392
+ <a class="pilcrow" href="#section-22">&#182;</a>
393
+ </div>
394
+ <p>Optionally specify API server and version</p>
395
+
396
+ </div>
397
+
398
+ <div class="content"><div class='highlight'><pre> groupdocs.api_server = base_path <span class="hljs-comment"># default is 'https://api.groupdocs.com'</span>
399
+ <span class="hljs-keyword">end</span></pre></div></div>
400
+
401
+ </li>
402
+
403
+
404
+ <li id="section-23">
405
+ <div class="annotation">
406
+
407
+ <div class="pilwrap ">
408
+ <a class="pilcrow" href="#section-23">&#182;</a>
409
+ </div>
410
+ <p>Write client and private key to the file for callback job</p>
411
+
412
+ </div>
413
+
414
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">if</span> settings.callback
415
+ out_file = <span class="hljs-constant">File</span>.new(<span class="hljs-string">"<span class="hljs-subst">#{<span class="hljs-constant">File</span>.dirname(__FILE_<span class="hljs-number">_</span>)}</span>/../public/user_info.txt"</span>, <span class="hljs-string">'w'</span>)</pre></div></div>
416
+
417
+ </li>
418
+
419
+
420
+ <li id="section-24">
421
+ <div class="annotation">
422
+
423
+ <div class="pilwrap ">
424
+ <a class="pilcrow" href="#section-24">&#182;</a>
425
+ </div>
426
+ <p>White space is required</p>
427
+
428
+ </div>
429
+
430
+ <div class="content"><div class='highlight'><pre> out_file.write(<span class="hljs-string">"<span class="hljs-subst">#{settings.client_id}</span> "</span>)
431
+ out_file.write(<span class="hljs-string">"<span class="hljs-subst">#{settings.private_key}</span>"</span>)
432
+ out_file.close
433
+ <span class="hljs-keyword">end</span></pre></div></div>
434
+
435
+ </li>
436
+
437
+
438
+ <li id="section-25">
439
+ <div class="annotation">
440
+
441
+ <div class="pilwrap ">
442
+ <a class="pilcrow" href="#section-25">&#182;</a>
443
+ </div>
444
+ <p>Make a request to API using client_id and private_key</p>
445
+
446
+ </div>
447
+
448
+ <div class="content"><div class='highlight'><pre> files_list = <span class="hljs-constant">GroupDocs::Storage::Folder</span>.list!(<span class="hljs-string">'/'</span>, {})
449
+
450
+ source_document = <span class="hljs-string">''</span>
451
+ target_document = <span class="hljs-string">''</span></pre></div></div>
452
+
453
+ </li>
454
+
455
+
456
+ <li id="section-26">
457
+ <div class="annotation">
458
+
459
+ <div class="pilwrap ">
460
+ <a class="pilcrow" href="#section-26">&#182;</a>
461
+ </div>
462
+ <p>Get source and target documents by file ID</p>
463
+
464
+ </div>
465
+
466
+ <div class="content"><div class='highlight'><pre> files_list.each <span class="hljs-keyword">do</span> |element|
467
+ <span class="hljs-keyword">if</span> element.respond_to?(<span class="hljs-string">'guid'</span>) == <span class="hljs-keyword">true</span> <span class="hljs-keyword">and</span> element.guid == settings.sourceFileId
468
+ source_document = element
469
+ <span class="hljs-keyword">else</span>
470
+ source_document = <span class="hljs-constant">GroupDocs::Storage::File</span>.new(<span class="hljs-symbol">guid:</span> settings.sourceFileId)
471
+ <span class="hljs-keyword">end</span>
472
+ <span class="hljs-keyword">if</span> element.respond_to?(<span class="hljs-string">'guid'</span>) == <span class="hljs-keyword">true</span> <span class="hljs-keyword">and</span> element.guid == settings.targetFileId
473
+ target_document = element
474
+ <span class="hljs-keyword">else</span>
475
+ target_document = <span class="hljs-constant">GroupDocs::Storage::File</span>.new(<span class="hljs-symbol">guid:</span> settings.targetFileId)
476
+ <span class="hljs-keyword">end</span>
477
+ <span class="hljs-keyword">end</span>
478
+
479
+ <span class="hljs-keyword">unless</span> source_document.instance_of? <span class="hljs-constant">String</span> <span class="hljs-keyword">and</span> target_document.instance_of? <span class="hljs-constant">String</span>
480
+
481
+ info = source_document.to_document.compare!(target_document.to_document, settings.callback)
482
+
483
+ i = <span class="hljs-number">0</span>
484
+
485
+ <span class="hljs-keyword">while</span> i&lt;<span class="hljs-number">5</span> <span class="hljs-keyword">do</span>
486
+ sleep(<span class="hljs-number">5</span>)
487
+ job = <span class="hljs-constant">GroupDocs::Job</span>.get!(info.id)
488
+ <span class="hljs-keyword">break</span> <span class="hljs-keyword">if</span> job.status == <span class="hljs-symbol">:archived</span>
489
+ i += <span class="hljs-number">1</span>
490
+ <span class="hljs-keyword">end</span></pre></div></div>
491
+
492
+ </li>
493
+
494
+
495
+ <li id="section-27">
496
+ <div class="annotation">
497
+
498
+ <div class="pilwrap ">
499
+ <a class="pilcrow" href="#section-27">&#182;</a>
500
+ </div>
501
+ <p>Get job by ID</p>
502
+
503
+ </div>
504
+
505
+ <div class="content"><div class='highlight'><pre> job = <span class="hljs-constant">GroupDocs::Job</span>.new(<span class="hljs-symbol">id:</span> info.id)</pre></div></div>
506
+
507
+ </li>
508
+
509
+
510
+ <li id="section-28">
511
+ <div class="annotation">
512
+
513
+ <div class="pilwrap ">
514
+ <a class="pilcrow" href="#section-28">&#182;</a>
515
+ </div>
516
+ <p>Get all job documents</p>
517
+
518
+ </div>
519
+
520
+ <div class="content"><div class='highlight'><pre> documents = job.documents!()</pre></div></div>
521
+
522
+ </li>
523
+
524
+
525
+ <li id="section-29">
526
+ <div class="annotation">
527
+
528
+ <div class="pilwrap ">
529
+ <a class="pilcrow" href="#section-29">&#182;</a>
530
+ </div>
531
+ <p>Get compared file giud</p>
532
+
533
+ </div>
534
+
535
+ <div class="content"><div class='highlight'><pre> guid = documents[<span class="hljs-symbol">:outputs</span>].first.file.guid
536
+ embedkey = <span class="hljs-constant">GroupDocs::User</span>.get_embed_key!(<span class="hljs-string">'comparison'</span>)</pre></div></div>
537
+
538
+ </li>
539
+
540
+
541
+ <li id="section-30">
542
+ <div class="annotation">
543
+
544
+ <div class="pilwrap ">
545
+ <a class="pilcrow" href="#section-30">&#182;</a>
546
+ </div>
547
+ <p>Prepare to sign url</p>
548
+
549
+ </div>
550
+
551
+ <div class="content"><div class='highlight'><pre> iframe = <span class="hljs-string">"/document-comparison2/embed/<span class="hljs-subst">#{embedkey}</span>/<span class="hljs-subst">#{guid}</span>"</span></pre></div></div>
552
+
553
+ </li>
554
+
555
+
556
+ <li id="section-31">
557
+ <div class="annotation">
558
+
559
+ <div class="pilwrap ">
560
+ <a class="pilcrow" href="#section-31">&#182;</a>
561
+ </div>
562
+ <p>Construct result string</p>
563
+
564
+ </div>
565
+
566
+ <div class="content"><div class='highlight'><pre> url = <span class="hljs-constant">GroupDocs::Api::Request</span>.new(<span class="hljs-symbol">:path</span> =&gt; iframe).prepare_and_sign_url</pre></div></div>
567
+
568
+ </li>
569
+
570
+
571
+ <li id="section-32">
572
+ <div class="annotation">
573
+
574
+ <div class="pilwrap ">
575
+ <a class="pilcrow" href="#section-32">&#182;</a>
576
+ </div>
577
+ <p>Generate iframe URL</p>
578
+
579
+ </div>
580
+
581
+ <div class="content"><div class='highlight'><pre> <span class="hljs-keyword">case</span> settings.base_path
582
+ <span class="hljs-keyword">when</span> <span class="hljs-string">'https://stage-api-groupdocs.dynabic.com'</span>
583
+ iframe = <span class="hljs-string">"https://stage-api-groupdocs.dynabic.com<span class="hljs-subst">#{url}</span>"</span>
584
+ <span class="hljs-keyword">when</span> <span class="hljs-string">'https://dev-api-groupdocs.dynabic.com'</span>
585
+ iframe = <span class="hljs-string">"https://dev-apps.groupdocs.com<span class="hljs-subst">#{url}</span>"</span>
586
+ <span class="hljs-keyword">else</span>
587
+ iframe = <span class="hljs-string">"https://apps.groupdocs.com<span class="hljs-subst">#{url}</span>"</span>
588
+ <span class="hljs-keyword">end</span></pre></div></div>
589
+
590
+ </li>
591
+
592
+
593
+ <li id="section-33">
594
+ <div class="annotation">
595
+
596
+ <div class="pilwrap ">
597
+ <a class="pilcrow" href="#section-33">&#182;</a>
598
+ </div>
599
+ <p>Construct result iframe</p>
600
+
601
+ </div>
602
+
603
+ <div class="content"><div class='highlight'><pre> iframe = <span class="hljs-string">"&lt;iframe id='downloadframe' src='<span class="hljs-subst">#{iframe}</span>' width='800' height='1000'&gt;&lt;/iframe&gt;"</span>
604
+ <span class="hljs-keyword">end</span>
605
+
606
+ <span class="hljs-keyword">rescue</span> <span class="hljs-constant">Exception</span> =&gt; e
607
+ err = e.message
608
+ <span class="hljs-keyword">end</span></pre></div></div>
609
+
610
+ </li>
611
+
612
+
613
+ <li id="section-34">
614
+ <div class="annotation">
615
+
616
+ <div class="pilwrap ">
617
+ <a class="pilcrow" href="#section-34">&#182;</a>
618
+ </div>
619
+ <p>Set variables for template</p>
620
+
621
+ </div>
622
+
623
+ <div class="content"><div class='highlight'><pre> haml <span class="hljs-symbol">:sample19</span>, <span class="hljs-symbol">:locals</span> =&gt; {<span class="hljs-symbol">:userId</span> =&gt; settings.client_id, <span class="hljs-symbol">:privateKey</span> =&gt; settings.private_key, <span class="hljs-symbol">:sourceFileId</span> =&gt; settings.sourceFileId, <span class="hljs-symbol">:targetFileId</span> =&gt; settings.targetFileId, <span class="hljs-symbol">:callback</span> =&gt; settings.callback, <span class="hljs-symbol">:iframe</span> =&gt; iframe, <span class="hljs-symbol">:err</span> =&gt; err}
624
+ <span class="hljs-keyword">end</span></pre></div></div>
625
+
626
+ </li>
627
+
628
+ </ul>
629
+ </div>
630
+ </body>
631
+ </html>