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,28 +1,28 @@
1
- module GroupDocs
2
- module Api
3
- module Helpers
4
- module Path
5
-
6
- #
7
- # Make helper methods accessible as class methods as well
8
- #
9
- def self.included(klass)
10
- klass.extend self
11
- end
12
-
13
- private
14
-
15
- #
16
- # Prepares path.
17
- # @param [String] path
18
- # @return [String]
19
- # @api private
20
- #
21
- def prepare_path(path)
22
- path.sub(%r(^/), '').gsub(%r(//+), '/')
23
- end
24
-
25
- end # Path
26
- end # Helpers
27
- end # Api
28
- end # GroupDocs
1
+ module GroupDocs
2
+ module Api
3
+ module Helpers
4
+ module Path
5
+
6
+ #
7
+ # Make helper methods accessible as class methods as well
8
+ #
9
+ def self.included(klass)
10
+ klass.extend self
11
+ end
12
+
13
+ private
14
+
15
+ #
16
+ # Prepares path.
17
+ # @param [String] path
18
+ # @return [String]
19
+ # @api private
20
+ #
21
+ def prepare_path(path)
22
+ path.sub(%r(^/), '').gsub(%r(//+), '/')
23
+ end
24
+
25
+ end # Path
26
+ end # Helpers
27
+ end # Api
28
+ end # GroupDocs
@@ -1,99 +1,99 @@
1
- require 'json'
2
- require 'rest-client'
3
-
4
- module GroupDocs
5
- module Api
6
- module Helpers
7
- module REST
8
-
9
- DEFAULT_HEADERS = {
10
- :accept => 'application/json',
11
- :content_length => 0,
12
- :groupdocs_referrer => "ruby/#{VERSION}"
13
- }
14
-
15
- private
16
-
17
- #
18
- # Prepares headers, method and payload for request.
19
- #
20
- # @api private
21
- #
22
- def prepare_request
23
- if options[:headers].is_a?(Hash)
24
- options[:headers].merge!(DEFAULT_HEADERS)
25
- else
26
- options[:headers] = DEFAULT_HEADERS.dup
27
- end
28
-
29
- options[:method] = options[:method].to_s.downcase.to_sym
30
-
31
- if options[:request_body] && !options[:request_body].is_a?(Object::File)
32
- unless options[:plain]
33
- options[:request_body] = options[:request_body].to_json
34
- options[:headers][:content_type]= 'application/json'
35
- end
36
- options[:headers][:content_length] = options[:request_body].length
37
- end
38
- end
39
-
40
- #
41
- # Changed in release 1.5.8
42
- #
43
- # Sends request to API server.
44
- #
45
- # @api private
46
- #
47
- def send_request
48
-
49
- self.response = case options[:method]
50
- when :get, :download
51
- resource[options[:path]].get(options[:headers])
52
- when :post
53
- resource[options[:path]].post(options[:request_body], options[:headers])
54
- when :put
55
- resource[options[:path]].put(options[:request_body], options[:headers])
56
- when :delete
57
- if options[:request_body]
58
- url = GroupDocs.api_server + options[:path]
59
- RestClient::Request.execute(options.merge(
60
- :method => :delete,
61
- :url => url,
62
- :payload => options[:request_body],
63
- :headers => options[:headers]))
64
- else
65
- resource[options[:path]].delete(options[:headers])
66
- end
67
- else
68
- raise UnsupportedMethodError, "Unsupported HTTP method: #{options[:method].inspect}"
69
- end
70
- end
71
-
72
- #
73
- # Parses response from API server.
74
- #
75
- # @api private
76
- #
77
- def parse_response
78
- # for DOWNLOAD requests, just return response
79
- if options[:method] == :download
80
- response
81
- # for all other requests, parse JSON
82
- else
83
- json = JSON.parse(response, :symbolize_names => true)
84
- json[:status] == 'Ok' ? json[:result] : raise_bad_request_error(json)
85
- end
86
- end
87
-
88
- #
89
- # @raise [GroupDocs::BadResponseError]
90
- # @api private
91
- #
92
- def raise_bad_request_error(json)
93
- raise BadResponseError, json[:error_message]
94
- end
95
-
96
- end # REST
97
- end # Helpers
98
- end # Api
99
- end # GroupDocs
1
+ require 'json'
2
+ require 'rest-client'
3
+
4
+ module GroupDocs
5
+ module Api
6
+ module Helpers
7
+ module REST
8
+
9
+ DEFAULT_HEADERS = {
10
+ :accept => 'application/json',
11
+ :content_length => 0,
12
+ :groupdocs_referrer => "ruby/#{VERSION}"
13
+ }
14
+
15
+ private
16
+
17
+ #
18
+ # Prepares headers, method and payload for request.
19
+ #
20
+ # @api private
21
+ #
22
+ def prepare_request
23
+ if options[:headers].is_a?(Hash)
24
+ options[:headers].merge!(DEFAULT_HEADERS)
25
+ else
26
+ options[:headers] = DEFAULT_HEADERS.dup
27
+ end
28
+
29
+ options[:method] = options[:method].to_s.downcase.to_sym
30
+
31
+ if options[:request_body] && !options[:request_body].is_a?(Object::File)
32
+ unless options[:plain]
33
+ options[:request_body] = options[:request_body].to_json
34
+ options[:headers][:content_type]= 'application/json'
35
+ end
36
+ options[:headers][:content_length] = options[:request_body].length
37
+ end
38
+ end
39
+
40
+ #
41
+ # Changed in release 1.5.8
42
+ #
43
+ # Sends request to API server.
44
+ #
45
+ # @api private
46
+ #
47
+ def send_request
48
+
49
+ self.response = case options[:method]
50
+ when :get, :download
51
+ resource[options[:path]].get(options[:headers])
52
+ when :post
53
+ resource[options[:path]].post(options[:request_body], options[:headers])
54
+ when :put
55
+ resource[options[:path]].put(options[:request_body], options[:headers])
56
+ when :delete
57
+ if options[:request_body]
58
+ url = GroupDocs.api_server + options[:path]
59
+ RestClient::Request.execute(options.merge(
60
+ :method => :delete,
61
+ :url => url,
62
+ :payload => options[:request_body],
63
+ :headers => options[:headers]))
64
+ else
65
+ resource[options[:path]].delete(options[:headers])
66
+ end
67
+ else
68
+ raise UnsupportedMethodError, "Unsupported HTTP method: #{options[:method].inspect}"
69
+ end
70
+ end
71
+
72
+ #
73
+ # Parses response from API server.
74
+ #
75
+ # @api private
76
+ #
77
+ def parse_response
78
+ # for DOWNLOAD requests, just return response
79
+ if options[:method] == :download
80
+ response
81
+ # for all other requests, parse JSON
82
+ else
83
+ json = JSON.parse(response, :symbolize_names => true)
84
+ json[:status] == 'Ok' ? json[:result] : raise_bad_request_error(json)
85
+ end
86
+ end
87
+
88
+ #
89
+ # @raise [GroupDocs::BadResponseError]
90
+ # @api private
91
+ #
92
+ def raise_bad_request_error(json)
93
+ raise BadResponseError, json[:error_message]
94
+ end
95
+
96
+ end # REST
97
+ end # Helpers
98
+ end # Api
99
+ end # GroupDocs
@@ -1,22 +1,22 @@
1
- module GroupDocs
2
- module Api
3
- module Helpers
4
- module SignaturePublic
5
-
6
- private
7
-
8
- #
9
- # Returns corresponding URI fragment for (un)public call.
10
- #
11
- # @param [Boolean, nil] public_flag
12
- # @return [String]
13
- # @api private
14
- #
15
- def client_id(public_flag)
16
- !!public_flag ? 'public' : '{{client_id}}'
17
- end
18
-
19
- end # SignaturePublic
20
- end # Helpers
21
- end # Api
22
- end # GroupDocs
1
+ module GroupDocs
2
+ module Api
3
+ module Helpers
4
+ module SignaturePublic
5
+
6
+ private
7
+
8
+ #
9
+ # Returns corresponding URI fragment for (un)public call.
10
+ #
11
+ # @param [Boolean, nil] public_flag
12
+ # @return [String]
13
+ # @api private
14
+ #
15
+ def client_id(public_flag)
16
+ !!public_flag ? 'public' : '{{client_id}}'
17
+ end
18
+
19
+ end # SignaturePublic
20
+ end # Helpers
21
+ end # Api
22
+ end # GroupDocs
@@ -1,27 +1,27 @@
1
- module GroupDocs
2
- module Api
3
- module Helpers
4
- module Status
5
-
6
- private
7
-
8
- #
9
- # Converts status from/to human-readable format.
10
- #
11
- # @param [String, Symbol] status
12
- # @return [Symbol, String]
13
- # @raise [ArgumentError] if argument is not symbol/string
14
- # @api private
15
- #
16
- def parse_status(status)
17
- case status
18
- when Symbol then status.to_s.camelize
19
- when String then status.underscore.to_sym
20
- else raise ArgumentError, "Expected string/symbol, received: #{status.class}"
21
- end
22
- end
23
-
24
- end # Status
25
- end # Helpers
26
- end # Api
27
- end # GroupDocs
1
+ module GroupDocs
2
+ module Api
3
+ module Helpers
4
+ module Status
5
+
6
+ private
7
+
8
+ #
9
+ # Converts status from/to human-readable format.
10
+ #
11
+ # @param [String, Symbol] status
12
+ # @return [Symbol, String]
13
+ # @raise [ArgumentError] if argument is not symbol/string
14
+ # @api private
15
+ #
16
+ def parse_status(status)
17
+ case status
18
+ when Symbol then status.to_s.camelize
19
+ when String then status.underscore.to_sym
20
+ else raise ArgumentError, "Expected string/symbol, received: #{status.class}"
21
+ end
22
+ end
23
+
24
+ end # Status
25
+ end # Helpers
26
+ end # Api
27
+ end # GroupDocs
@@ -1,101 +1,101 @@
1
- require 'base64'
2
- require 'uri'
3
- require 'cgi'
4
-
5
- module GroupDocs
6
- module Api
7
- module Helpers
8
- module URL
9
-
10
- #
11
- # Appends path with parameters.
12
- #
13
- # @param [Hash] params
14
- #
15
- def add_params(params)
16
- params.each do |param, value|
17
- value = value.join(',') if value.is_a?(Array)
18
- options[:path] << "#{separator}#{param}=#{value}"
19
- end
20
- end
21
-
22
- private
23
-
24
- #
25
- # Normalizes path replacing two or more slashes with one.
26
- #
27
- # @api private
28
- #
29
- def normalize_path
30
- options[:path].gsub!(%r(//+), '/')
31
- end
32
-
33
- #
34
- # URL encodes path.
35
- #
36
- # @api private
37
- #
38
- def url_encode_path
39
- options[:path] = URI.escape(options[:path])
40
- # handle special symbols correctly
41
- options[:path].gsub!('[', '%5B')
42
- options[:path].gsub!(']', '%5D')
43
- options[:path].gsub!('+', '%2B')
44
- end
45
-
46
- #
47
- # Parses path replacing {{client_id}} with real one.
48
- #
49
- # @api private
50
- #
51
- def replace_client_id
52
- options[:path].sub!(/\{\{client_id\}\}/, client_id)
53
- end
54
-
55
-
56
- #
57
- # Adds signature to path.
58
- #
59
- # @api private
60
- #
61
- def sign_url
62
- # calculate a hash of the path with private key
63
- hash = OpenSSL::Digest.new('sha1') # Changed in release 1.5.9
64
- hash = OpenSSL::HMAC.digest(hash, private_key, options[:path])
65
- # convert hash to base64
66
- hash = Base64.strict_encode64(hash)
67
- # remove trailing '='
68
- hash.gsub!(/=*$/, '')
69
- # URL encode hash
70
- hash = CGI.escape(hash)
71
- # covert all hexademical characters to upper case
72
- hash.gsub!(/(%[A-Fa-f0-9]{1,2})/) { |group| group.upcase }
73
-
74
- options[:path] << "#{separator}signature=#{hash}"
75
- end
76
-
77
- #
78
- # Returns separator for GET parameters.
79
- #
80
- # @return [String] Either ? or &
81
- # @api private
82
- #
83
- def separator
84
- options[:path].include?('?') ? '&' : '?'
85
- end
86
-
87
- #
88
- # Prepends path with version number if it's set.
89
- #
90
- # @api private
91
- #
92
- def prepend_version
93
- if GroupDocs.api_version
94
- options[:path] = "/v#{GroupDocs.api_version}#{options[:path]}"
95
- end
96
- end
97
-
98
- end # URL
99
- end # Helpers
100
- end # Api
101
- end # GroupDocs
1
+ require 'base64'
2
+ require 'uri'
3
+ require 'cgi'
4
+
5
+ module GroupDocs
6
+ module Api
7
+ module Helpers
8
+ module URL
9
+
10
+ #
11
+ # Appends path with parameters.
12
+ #
13
+ # @param [Hash] params
14
+ #
15
+ def add_params(params)
16
+ params.each do |param, value|
17
+ value = value.join(',') if value.is_a?(Array)
18
+ options[:path] << "#{separator}#{param}=#{value}"
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ #
25
+ # Normalizes path replacing two or more slashes with one.
26
+ #
27
+ # @api private
28
+ #
29
+ def normalize_path
30
+ options[:path].gsub!(%r(//+), '/')
31
+ end
32
+
33
+ #
34
+ # URL encodes path.
35
+ #
36
+ # @api private
37
+ #
38
+ def url_encode_path
39
+ options[:path] = URI.escape(options[:path])
40
+ # handle special symbols correctly
41
+ options[:path].gsub!('[', '%5B')
42
+ options[:path].gsub!(']', '%5D')
43
+ options[:path].gsub!('+', '%2B')
44
+ end
45
+
46
+ #
47
+ # Parses path replacing {{client_id}} with real one.
48
+ #
49
+ # @api private
50
+ #
51
+ def replace_client_id
52
+ options[:path].sub!(/\{\{client_id\}\}/, client_id)
53
+ end
54
+
55
+
56
+ #
57
+ # Adds signature to path.
58
+ #
59
+ # @api private
60
+ #
61
+ def sign_url
62
+ # calculate a hash of the path with private key
63
+ hash = OpenSSL::Digest.new('sha1') # Changed in release 1.5.9
64
+ hash = OpenSSL::HMAC.digest(hash, private_key, options[:path])
65
+ # convert hash to base64
66
+ hash = Base64.strict_encode64(hash)
67
+ # remove trailing '='
68
+ hash.gsub!(/=*$/, '')
69
+ # URL encode hash
70
+ hash = CGI.escape(hash)
71
+ # covert all hexademical characters to upper case
72
+ hash.gsub!(/(%[A-Fa-f0-9]{1,2})/) { |group| group.upcase }
73
+
74
+ options[:path] << "#{separator}signature=#{hash}"
75
+ end
76
+
77
+ #
78
+ # Returns separator for GET parameters.
79
+ #
80
+ # @return [String] Either ? or &
81
+ # @api private
82
+ #
83
+ def separator
84
+ options[:path].include?('?') ? '&' : '?'
85
+ end
86
+
87
+ #
88
+ # Prepends path with version number if it's set.
89
+ #
90
+ # @api private
91
+ #
92
+ def prepend_version
93
+ if GroupDocs.api_version
94
+ options[:path] = "/v#{GroupDocs.api_version}#{options[:path]}"
95
+ end
96
+ end
97
+
98
+ end # URL
99
+ end # Helpers
100
+ end # Api
101
+ end # GroupDocs