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,44 +1,44 @@
1
- require 'groupdocs/storage/folder'
2
- require 'groupdocs/storage/file'
3
- require 'groupdocs/storage/package'
4
- require 'groupdocs/storage/provider'
5
-
6
-
7
- module GroupDocs
8
- module Storage
9
-
10
- #
11
- # Changed in release 2.2.0
12
- #
13
- # Returns hash of information about user's storage.
14
- #
15
- # @example
16
- # GroupDocs::Storage.info!
17
- # #=> { total_space: "1024 MB", available_space: "1020 MB", document_credits: 5000, available_credits: 4964 }
18
- #
19
- # @param [Hash] access Access credentials
20
- # @option access [String] :client_id
21
- # @option access [String] :private_key
22
- # @return [Hash]
23
- #
24
- def self.info!(access = {})
25
- json = Api::Request.new do |request|
26
- request[:access] = access
27
- request[:method] = :GET
28
- request[:path] = '/storage/{{client_id}}'
29
- end.execute!
30
-
31
- {
32
- :total_space => "#{json[:total_space] / 1048576} MB",
33
- :available_space => "#{json[:avail_space] / 1048576} MB",
34
- :document_credits => json[:doc_credits],
35
- :available_credits => json[:avail_credits],
36
- :maxViewingFileSize => json[:maxViewingFileSize],
37
- :total_documents => json[:total_documents],
38
- :available_documents => json[:avail_documents],
39
- :used_documents => json[:used_documents]
40
- }
41
- end
42
-
43
- end # Storage
44
- end # GroupDocs
1
+ require 'groupdocs/storage/folder'
2
+ require 'groupdocs/storage/file'
3
+ require 'groupdocs/storage/package'
4
+ require 'groupdocs/storage/provider'
5
+
6
+
7
+ module GroupDocs
8
+ module Storage
9
+
10
+ #
11
+ # Changed in release 2.2.0
12
+ #
13
+ # Returns hash of information about user's storage.
14
+ #
15
+ # @example
16
+ # GroupDocs::Storage.info!
17
+ # #=> { total_space: "1024 MB", available_space: "1020 MB", document_credits: 5000, available_credits: 4964 }
18
+ #
19
+ # @param [Hash] access Access credentials
20
+ # @option access [String] :client_id
21
+ # @option access [String] :private_key
22
+ # @return [Hash]
23
+ #
24
+ def self.info!(access = {})
25
+ json = Api::Request.new do |request|
26
+ request[:access] = access
27
+ request[:method] = :GET
28
+ request[:path] = '/storage/{{client_id}}'
29
+ end.execute!
30
+
31
+ {
32
+ :total_space => "#{json[:total_space] / 1048576} MB",
33
+ :available_space => "#{json[:avail_space] / 1048576} MB",
34
+ :document_credits => json[:doc_credits],
35
+ :available_credits => json[:avail_credits],
36
+ :maxViewingFileSize => json[:maxViewingFileSize],
37
+ :total_documents => json[:total_documents],
38
+ :available_documents => json[:avail_documents],
39
+ :used_documents => json[:used_documents]
40
+ }
41
+ end
42
+
43
+ end # Storage
44
+ end # GroupDocs
@@ -1,432 +1,432 @@
1
- module GroupDocs
2
- module Storage
3
- class File < Api::Entity
4
-
5
- include Api::Helpers::AccessMode
6
- include Api::Helpers::Path
7
-
8
- DOCUMENT_TYPES = %w(Undefined Cells Words Slides Pdf Html Image)
9
-
10
- #
11
- # Uploads file to API server.
12
- #
13
- # @example Upload file to root directory
14
- # GroupDocs::Storage::File.upload!('resume.pdf')
15
- #
16
- # @example Upload file to specific directory
17
- # GroupDocs::Storage::File.upload!('resume.pdf', path: 'folder1')
18
- #
19
- # @example Upload and rename file
20
- # GroupDocs::Storage::File.upload!('resume.pdf', name: 'cv.pdf')
21
- #
22
- # @example Upload file with description
23
- # GroupDocs::Storage::File.upload!('resume.pdf', description: 'Resume')
24
- #
25
- # @example Upload file with callback URL
26
- # GroupDocs::Storage::File.upload!('resume.pdf', callbackUrl: 'http://google.com')
27
- #
28
- # @param [String] filepath Path to file to be uploaded
29
- # @param [Hash] options
30
- # @option options [String] path Folder path to upload to
31
- # @option options [String] name Name of file to be renamed
32
- # @option options [String] :description File description
33
- # @option options [String] :callbackUrl will be called after file is uploaded
34
- # @param [Hash] access Access credentials
35
- # @option access [String] :client_id
36
- # @option access [String] :private_key
37
- # @return [GroupDocs::Storage::File]
38
- #
39
- def self.upload!(filepath, options = {}, access = {})
40
- options[:path] ||= ''
41
- options[:name] ||= Object::File.basename(filepath)
42
- path = prepare_path("#{options[:path]}/#{options[:name]}")
43
- api = Api::Request.new do |request|
44
- request[:access] = access
45
- request[:method] = :POST
46
- request[:path] = "/storage/{{client_id}}/folders/#{path}"
47
- request[:request_body] = Object::File.new(filepath, 'rb')
48
- end
49
- api.add_params(:description => options[:description]) if options[:description]
50
- json = api.execute!
51
-
52
- Storage::File.new(json)
53
- end
54
-
55
-
56
- #
57
- # Get shared file.
58
- #
59
- # @param [String] path Path save new file which receive in response
60
- # @param [String] name Name new file
61
- # @param [String] file_path
62
- # @param [String] user_email
63
- #
64
- def self.get_shared_file!(path, name, user_email, file_path)
65
- response = Api::Request.new do |request|
66
- request[:access] = access
67
- request[:method] = :GET
68
- request[:path] = "/storage/shared/#{user_email}/#{file_path}"
69
- end.execute!
70
-
71
- filepath = "#{path}/#{name}"
72
- Object::File.open(filepath, 'wb') do |file|
73
- file.write(response)
74
- end
75
-
76
- filepath
77
- end
78
-
79
- #
80
- # Uploads web page as file.
81
- #
82
- # @param [String] url
83
- # @param [Hash] access Access credentials
84
- # @option access [String] :client_id
85
- # @option access [String] :private_key
86
- # @return [GroupDocs::Storage::File]
87
- #
88
- def self.upload_web!(url, access = {})
89
- api = Api::Request.new do |request|
90
- request[:access] = access
91
- request[:method] = :POST
92
- request[:path] = '/storage/{{client_id}}/urls'
93
- end
94
- api.add_params(:url => url)
95
- json = api.execute!
96
-
97
- Storage::File.new(json)
98
- end
99
-
100
- # Updated in release 2.2.0
101
- #
102
- # Uploads google page as file.
103
- #
104
- # @param [Hash] options
105
- # @option url [String]
106
- # @option description [String]
107
- # @option accessToken [String]
108
- # @param [Hash] access Access credentials
109
- # @option access [String] :client_id
110
- # @option access [String] :private_key
111
- # @return [GroupDocs::Storage::File]
112
- #
113
- def self.upload_google!(options = {}, access = {})
114
- api = Api::Request.new do |request|
115
- request[:access] = access
116
- request[:method] = :POST
117
- request[:path] = "/storage/{{client_id}}/google/files/"
118
- end
119
-
120
- api.add_params(options)
121
- json = api.execute!
122
-
123
- Storage::File.new(json)
124
- end
125
-
126
- #
127
- # Uploads and unzip as file.
128
- #
129
- # @param [String] path
130
- # @param [Hash] options
131
- # @option description [String]
132
- # @option archiveType [String]
133
- # @param [Hash] access Access credentials
134
- # @option access [String] :client_id
135
- # @option access [String] :private_key
136
- # @return [GroupDocs::Storage::File]
137
- #
138
- def self.decompress!(filepath, options = {}, access = {})
139
- options[:path] ||= ''
140
- options[:name] ||= Object::File.basename(filepath)
141
- path = prepare_path("#{options[:path]}/#{options[:name]}")
142
-
143
- api = Api::Request.new do |request|
144
- request[:access] = access
145
- request[:method] = :POST
146
- request[:path] = "/storage/{{client_id}}/decompress/#{path}/"
147
- request[:request_body] = Object::File.new(filepath, 'rb')
148
- end
149
- api.add_params(:archiveType => options[:archiveType]) if options[:archiveType]
150
- json = api.execute!
151
-
152
- json[:files].map do |file|
153
- File.new(file)
154
- end
155
- end
156
-
157
- # @attr [Integer] id
158
- attr_accessor :id
159
- # @attr [String] guid
160
- attr_accessor :guid
161
- # @attr [Integer] size
162
- attr_accessor :size
163
- # @attr [Boolean] known
164
- attr_accessor :known
165
- # @attr [String] thumbnail
166
- attr_accessor :thumbnail
167
- # @attr [Time] created_on
168
- attr_accessor :created_on
169
- # @attr [Time] modified_on
170
- attr_accessor :modified_on
171
- # @attr [String] url
172
- attr_accessor :url
173
- # @attr [String] name
174
- attr_accessor :name
175
- # @attr [Integer] version
176
- attr_accessor :version
177
- # @attr [Symbol] type
178
- attr_accessor :type
179
- # @attr [Symbol] file_type
180
- attr_accessor :file_type
181
- # @attr [Symbol] access
182
- attr_accessor :access
183
- # @attr [String] path
184
- attr_accessor :path
185
- # @attr [String] local_path
186
- attr_accessor :local_path
187
-
188
- # Compatibility with response JSON
189
- alias_method :adj_name=, :name=
190
-
191
- #
192
- # Updates type with machine-readable format.
193
- #
194
- # @param [Symbol] type
195
- # @raise [ArgumentError] if type is unknown
196
- #
197
- def type=(type)
198
- if type.is_a?(Symbol)
199
- type = type.to_s.capitalize
200
- DOCUMENT_TYPES.include?(type) or raise ArgumentError, "Unknown type: #{type.inspect}"
201
- end
202
-
203
- @type = type
204
- end
205
-
206
- #
207
- # Returns type in human-readable format.
208
- #
209
- # @return [Symbol]
210
- #
211
- def type
212
- @type.downcase.to_sym
213
- end
214
-
215
- #
216
- # Returns file type in human-readable format.
217
- #
218
- # @return [Symbol]
219
- #
220
- def file_type
221
- @file_type.downcase.to_sym
222
- end
223
-
224
- #
225
- # Converts timestamp which is return by API server to Time object.
226
- #
227
- # @return [Time]
228
- #
229
- def created_on
230
- Time.at(@created_on / 1000)
231
- end
232
-
233
- #
234
- # Converts access mode to human-readable format.
235
- #
236
- # @return [Symbol]
237
- #
238
- def access
239
- parse_access_mode(@access)
240
- end
241
-
242
- #
243
- # Converts timestamp which is return by API server to Time object.
244
- #
245
- # @return [Time]
246
- #
247
- def modified_on
248
- Time.at(@modified_on / 1000)
249
- end
250
-
251
- #
252
- # Downloads file to given path.
253
- #
254
- # @param [String] path Directory to download file to
255
- # @param [Hash] access Access credentials
256
- # @option access [String] :client_id
257
- # @option access [String] :private_key
258
- # @return [String] Path to downloaded file
259
- #
260
- def download!(path, access = {})
261
- response = Api::Request.new do |request|
262
- request[:access] = access
263
- request[:method] = :DOWNLOAD
264
- request[:path] = "/storage/{{client_id}}/files/#{guid}"
265
- end.execute!
266
-
267
- filepath = "#{path}/#{name}"
268
- Object::File.open(filepath, 'wb') do |file|
269
- file.write(response)
270
- end
271
-
272
- filepath
273
- end
274
-
275
- #
276
- # Moves file to given path.
277
- #
278
- # @param [String] path
279
- # @param [Hash] options
280
- # @option options [String] name
281
- # @param [Hash] access Access credentials
282
- # @option access [String] :client_id
283
- # @option access [String] :private_key
284
- # @return [GroupDocs::Storage::File] Moved to file
285
- #
286
- def move!(path, options = {}, access = {})
287
- options[:name] ||= name
288
- path = prepare_path("#{path}/#{options[:name]}")
289
-
290
- json = Api::Request.new do |request|
291
- request[:access] = access
292
- request[:method] = :PUT
293
- request[:headers] = { :'Groupdocs-Move' => id }
294
- request[:path] = "/storage/{{client_id}}/files/#{path}"
295
- end.execute!
296
-
297
- Storage::File.new(json[:dst_file])
298
- end
299
-
300
- #
301
- # Renames file to new one.
302
- #
303
- # @param [String] name New file name
304
- # @param [Hash] access Access credentials
305
- # @option access [String] :client_id
306
- # @option access [String] :private_key
307
- # @return [GroupDocs::Storage::File] Renamed file
308
- #
309
- def rename!(name, access = {})
310
- move!(path, { :name => name }, access)
311
- end
312
-
313
- #
314
- # Moves file to given path.
315
- #
316
- # @param [String] path
317
- # @param [Hash] options
318
- # @option options [String] name
319
- # @param [Hash] access Access credentials
320
- # @option access [String] :client_id
321
- # @option access [String] :private_key
322
- # @return [GroupDocs::Storage::File] Copied to file
323
- #
324
- def copy!(path, options = {}, access = {})
325
- options[:name] ||= name
326
- path = prepare_path("#{path}/#{options[:name]}")
327
-
328
- json = Api::Request.new do |request|
329
- request[:access] = access
330
- request[:method] = :PUT
331
- request[:headers] = { :'Groupdocs-Copy' => id }
332
- request[:path] = "/storage/{{client_id}}/files/#{path}"
333
- end.execute!
334
-
335
- Storage::File.new(json[:dst_file])
336
- end
337
-
338
- #
339
- # Compresses file on server to given archive type.
340
- #
341
- # @param [Hash] access Access credentials
342
- # @option access [String] :client_id
343
- # @option access [String] :private_key
344
- # @return [GroupDocs::Storage::File] Archive file
345
- #
346
- def compress!(access = {})
347
- json = Api::Request.new do |request|
348
- request[:access] = access
349
- request[:method] = :POST
350
- request[:path] = "/storage/{{client_id}}/files/#{id}/archive/zip"
351
- end.execute!
352
-
353
- # add filename for further file operations
354
- json[:name] = "#{name}.zip"
355
- Storage::File.new(json)
356
- end
357
-
358
- #
359
- # Deletes file from server.
360
- #
361
- # @param [Hash] access Access credentials
362
- # @option access [String] :client_id
363
- # @option access [String] :private_key
364
- #
365
- def delete!(access = {})
366
- Api::Request.new do |request|
367
- request[:access] = access
368
- request[:method] = :DELETE
369
- request[:path] = "/storage/{{client_id}}/files/#{guid}"
370
- end.execute!
371
- end
372
-
373
- #
374
- # Moves file to trash on server.
375
- #
376
- # @param [Hash] access Access credentials
377
- # @option access [String] :client_id
378
- # @option access [String] :private_key
379
- #
380
- def move_to_trash!(access = {})
381
- Api::Request.new do |request|
382
- request[:access] = access
383
- request[:method] = :PUT
384
- request[:path] = "/storage/{{client_id}}/trash/#{path}/#{name}"
385
- end.execute!
386
- end
387
-
388
- #
389
- # Restore file from trash on server.
390
- #
391
- # @param [Hash] access Access credentials
392
- # @option access [String] :client_id
393
- # @option access [String] :private_key
394
- #
395
- def restore_to_trash!(path, access = {})
396
- Api::Request.new do |request|
397
- request[:access] = access
398
- request[:method] = :DELETE
399
- request[:path] = "/storage/{{client_id}}/trash/#{path}"
400
- end.execute!
401
- end
402
-
403
- #
404
- # Converts file to GroupDocs::Document.
405
- #
406
- # @return [GroupDocs::Document]
407
- #
408
- def to_document
409
- Document.new(:file => self)
410
- end
411
-
412
- #
413
- # Added in release 1.5.8
414
- #
415
- # Cancel file upload
416
- #
417
- # @param [String] path File path (name)
418
- # @param [Hash] access Access credentials
419
- # @option access [String] :client_id
420
- # @option access [String] :private_key
421
- #
422
- def upload_cancel!(path, access = {})
423
- Api::Request.new do |request|
424
- request[:access] = access
425
- request[:method] = :GET
426
- request[:path] = "/storage/{{client_id}}/cancelUpload/#{id}/#{path}"
427
- end.execute!
428
- end
429
-
430
- end # File
431
- end # Storage
432
- end # GroupDocs
1
+ module GroupDocs
2
+ module Storage
3
+ class File < Api::Entity
4
+
5
+ include Api::Helpers::AccessMode
6
+ include Api::Helpers::Path
7
+
8
+ DOCUMENT_TYPES = %w(Undefined Cells Words Slides Pdf Html Image)
9
+
10
+ #
11
+ # Uploads file to API server.
12
+ #
13
+ # @example Upload file to root directory
14
+ # GroupDocs::Storage::File.upload!('resume.pdf')
15
+ #
16
+ # @example Upload file to specific directory
17
+ # GroupDocs::Storage::File.upload!('resume.pdf', path: 'folder1')
18
+ #
19
+ # @example Upload and rename file
20
+ # GroupDocs::Storage::File.upload!('resume.pdf', name: 'cv.pdf')
21
+ #
22
+ # @example Upload file with description
23
+ # GroupDocs::Storage::File.upload!('resume.pdf', description: 'Resume')
24
+ #
25
+ # @example Upload file with callback URL
26
+ # GroupDocs::Storage::File.upload!('resume.pdf', callbackUrl: 'http://google.com')
27
+ #
28
+ # @param [String] filepath Path to file to be uploaded
29
+ # @param [Hash] options
30
+ # @option options [String] path Folder path to upload to
31
+ # @option options [String] name Name of file to be renamed
32
+ # @option options [String] :description File description
33
+ # @option options [String] :callbackUrl will be called after file is uploaded
34
+ # @param [Hash] access Access credentials
35
+ # @option access [String] :client_id
36
+ # @option access [String] :private_key
37
+ # @return [GroupDocs::Storage::File]
38
+ #
39
+ def self.upload!(filepath, options = {}, access = {})
40
+ options[:path] ||= ''
41
+ options[:name] ||= Object::File.basename(filepath)
42
+ path = prepare_path("#{options[:path]}/#{options[:name]}")
43
+ api = Api::Request.new do |request|
44
+ request[:access] = access
45
+ request[:method] = :POST
46
+ request[:path] = "/storage/{{client_id}}/folders/#{path}"
47
+ request[:request_body] = Object::File.new(filepath, 'rb')
48
+ end
49
+ api.add_params(:description => options[:description]) if options[:description]
50
+ json = api.execute!
51
+
52
+ Storage::File.new(json)
53
+ end
54
+
55
+
56
+ #
57
+ # Get shared file.
58
+ #
59
+ # @param [String] path Path save new file which receive in response
60
+ # @param [String] name Name new file
61
+ # @param [String] file_path
62
+ # @param [String] user_email
63
+ #
64
+ def self.get_shared_file!(path, name, user_email, file_path)
65
+ response = Api::Request.new do |request|
66
+ request[:access] = access
67
+ request[:method] = :GET
68
+ request[:path] = "/storage/shared/#{user_email}/#{file_path}"
69
+ end.execute!
70
+
71
+ filepath = "#{path}/#{name}"
72
+ Object::File.open(filepath, 'wb') do |file|
73
+ file.write(response)
74
+ end
75
+
76
+ filepath
77
+ end
78
+
79
+ #
80
+ # Uploads web page as file.
81
+ #
82
+ # @param [String] url
83
+ # @param [Hash] access Access credentials
84
+ # @option access [String] :client_id
85
+ # @option access [String] :private_key
86
+ # @return [GroupDocs::Storage::File]
87
+ #
88
+ def self.upload_web!(url, access = {})
89
+ api = Api::Request.new do |request|
90
+ request[:access] = access
91
+ request[:method] = :POST
92
+ request[:path] = '/storage/{{client_id}}/urls'
93
+ end
94
+ api.add_params(:url => url)
95
+ json = api.execute!
96
+
97
+ Storage::File.new(json)
98
+ end
99
+
100
+ # Updated in release 2.2.0
101
+ #
102
+ # Uploads google page as file.
103
+ #
104
+ # @param [Hash] options
105
+ # @option url [String]
106
+ # @option description [String]
107
+ # @option accessToken [String]
108
+ # @param [Hash] access Access credentials
109
+ # @option access [String] :client_id
110
+ # @option access [String] :private_key
111
+ # @return [GroupDocs::Storage::File]
112
+ #
113
+ def self.upload_google!(options = {}, access = {})
114
+ api = Api::Request.new do |request|
115
+ request[:access] = access
116
+ request[:method] = :POST
117
+ request[:path] = "/storage/{{client_id}}/google/files/"
118
+ end
119
+
120
+ api.add_params(options)
121
+ json = api.execute!
122
+
123
+ Storage::File.new(json)
124
+ end
125
+
126
+ #
127
+ # Uploads and unzip as file.
128
+ #
129
+ # @param [String] path
130
+ # @param [Hash] options
131
+ # @option description [String]
132
+ # @option archiveType [String]
133
+ # @param [Hash] access Access credentials
134
+ # @option access [String] :client_id
135
+ # @option access [String] :private_key
136
+ # @return [GroupDocs::Storage::File]
137
+ #
138
+ def self.decompress!(filepath, options = {}, access = {})
139
+ options[:path] ||= ''
140
+ options[:name] ||= Object::File.basename(filepath)
141
+ path = prepare_path("#{options[:path]}/#{options[:name]}")
142
+
143
+ api = Api::Request.new do |request|
144
+ request[:access] = access
145
+ request[:method] = :POST
146
+ request[:path] = "/storage/{{client_id}}/decompress/#{path}/"
147
+ request[:request_body] = Object::File.new(filepath, 'rb')
148
+ end
149
+ api.add_params(:archiveType => options[:archiveType]) if options[:archiveType]
150
+ json = api.execute!
151
+
152
+ json[:files].map do |file|
153
+ File.new(file)
154
+ end
155
+ end
156
+
157
+ # @attr [Integer] id
158
+ attr_accessor :id
159
+ # @attr [String] guid
160
+ attr_accessor :guid
161
+ # @attr [Integer] size
162
+ attr_accessor :size
163
+ # @attr [Boolean] known
164
+ attr_accessor :known
165
+ # @attr [String] thumbnail
166
+ attr_accessor :thumbnail
167
+ # @attr [Time] created_on
168
+ attr_accessor :created_on
169
+ # @attr [Time] modified_on
170
+ attr_accessor :modified_on
171
+ # @attr [String] url
172
+ attr_accessor :url
173
+ # @attr [String] name
174
+ attr_accessor :name
175
+ # @attr [Integer] version
176
+ attr_accessor :version
177
+ # @attr [Symbol] type
178
+ attr_accessor :type
179
+ # @attr [Symbol] file_type
180
+ attr_accessor :file_type
181
+ # @attr [Symbol] access
182
+ attr_accessor :access
183
+ # @attr [String] path
184
+ attr_accessor :path
185
+ # @attr [String] local_path
186
+ attr_accessor :local_path
187
+
188
+ # Compatibility with response JSON
189
+ alias_method :adj_name=, :name=
190
+
191
+ #
192
+ # Updates type with machine-readable format.
193
+ #
194
+ # @param [Symbol] type
195
+ # @raise [ArgumentError] if type is unknown
196
+ #
197
+ def type=(type)
198
+ if type.is_a?(Symbol)
199
+ type = type.to_s.capitalize
200
+ DOCUMENT_TYPES.include?(type) or raise ArgumentError, "Unknown type: #{type.inspect}"
201
+ end
202
+
203
+ @type = type
204
+ end
205
+
206
+ #
207
+ # Returns type in human-readable format.
208
+ #
209
+ # @return [Symbol]
210
+ #
211
+ def type
212
+ @type.downcase.to_sym
213
+ end
214
+
215
+ #
216
+ # Returns file type in human-readable format.
217
+ #
218
+ # @return [Symbol]
219
+ #
220
+ def file_type
221
+ @file_type.downcase.to_sym
222
+ end
223
+
224
+ #
225
+ # Converts timestamp which is return by API server to Time object.
226
+ #
227
+ # @return [Time]
228
+ #
229
+ def created_on
230
+ Time.at(@created_on / 1000)
231
+ end
232
+
233
+ #
234
+ # Converts access mode to human-readable format.
235
+ #
236
+ # @return [Symbol]
237
+ #
238
+ def access
239
+ parse_access_mode(@access)
240
+ end
241
+
242
+ #
243
+ # Converts timestamp which is return by API server to Time object.
244
+ #
245
+ # @return [Time]
246
+ #
247
+ def modified_on
248
+ Time.at(@modified_on / 1000)
249
+ end
250
+
251
+ #
252
+ # Downloads file to given path.
253
+ #
254
+ # @param [String] path Directory to download file to
255
+ # @param [Hash] access Access credentials
256
+ # @option access [String] :client_id
257
+ # @option access [String] :private_key
258
+ # @return [String] Path to downloaded file
259
+ #
260
+ def download!(path, access = {})
261
+ response = Api::Request.new do |request|
262
+ request[:access] = access
263
+ request[:method] = :DOWNLOAD
264
+ request[:path] = "/storage/{{client_id}}/files/#{guid}"
265
+ end.execute!
266
+
267
+ filepath = "#{path}/#{name}"
268
+ Object::File.open(filepath, 'wb') do |file|
269
+ file.write(response)
270
+ end
271
+
272
+ filepath
273
+ end
274
+
275
+ #
276
+ # Moves file to given path.
277
+ #
278
+ # @param [String] path
279
+ # @param [Hash] options
280
+ # @option options [String] name
281
+ # @param [Hash] access Access credentials
282
+ # @option access [String] :client_id
283
+ # @option access [String] :private_key
284
+ # @return [GroupDocs::Storage::File] Moved to file
285
+ #
286
+ def move!(path, options = {}, access = {})
287
+ options[:name] ||= name
288
+ path = prepare_path("#{path}/#{options[:name]}")
289
+
290
+ json = Api::Request.new do |request|
291
+ request[:access] = access
292
+ request[:method] = :PUT
293
+ request[:headers] = { :'Groupdocs-Move' => id }
294
+ request[:path] = "/storage/{{client_id}}/files/#{path}"
295
+ end.execute!
296
+
297
+ Storage::File.new(json[:dst_file])
298
+ end
299
+
300
+ #
301
+ # Renames file to new one.
302
+ #
303
+ # @param [String] name New file name
304
+ # @param [Hash] access Access credentials
305
+ # @option access [String] :client_id
306
+ # @option access [String] :private_key
307
+ # @return [GroupDocs::Storage::File] Renamed file
308
+ #
309
+ def rename!(name, access = {})
310
+ move!(path, { :name => name }, access)
311
+ end
312
+
313
+ #
314
+ # Moves file to given path.
315
+ #
316
+ # @param [String] path
317
+ # @param [Hash] options
318
+ # @option options [String] name
319
+ # @param [Hash] access Access credentials
320
+ # @option access [String] :client_id
321
+ # @option access [String] :private_key
322
+ # @return [GroupDocs::Storage::File] Copied to file
323
+ #
324
+ def copy!(path, options = {}, access = {})
325
+ options[:name] ||= name
326
+ path = prepare_path("#{path}/#{options[:name]}")
327
+
328
+ json = Api::Request.new do |request|
329
+ request[:access] = access
330
+ request[:method] = :PUT
331
+ request[:headers] = { :'Groupdocs-Copy' => id }
332
+ request[:path] = "/storage/{{client_id}}/files/#{path}"
333
+ end.execute!
334
+
335
+ Storage::File.new(json[:dst_file])
336
+ end
337
+
338
+ #
339
+ # Compresses file on server to given archive type.
340
+ #
341
+ # @param [Hash] access Access credentials
342
+ # @option access [String] :client_id
343
+ # @option access [String] :private_key
344
+ # @return [GroupDocs::Storage::File] Archive file
345
+ #
346
+ def compress!(access = {})
347
+ json = Api::Request.new do |request|
348
+ request[:access] = access
349
+ request[:method] = :POST
350
+ request[:path] = "/storage/{{client_id}}/files/#{id}/archive/zip"
351
+ end.execute!
352
+
353
+ # add filename for further file operations
354
+ json[:name] = "#{name}.zip"
355
+ Storage::File.new(json)
356
+ end
357
+
358
+ #
359
+ # Deletes file from server.
360
+ #
361
+ # @param [Hash] access Access credentials
362
+ # @option access [String] :client_id
363
+ # @option access [String] :private_key
364
+ #
365
+ def delete!(access = {})
366
+ Api::Request.new do |request|
367
+ request[:access] = access
368
+ request[:method] = :DELETE
369
+ request[:path] = "/storage/{{client_id}}/files/#{guid}"
370
+ end.execute!
371
+ end
372
+
373
+ #
374
+ # Moves file to trash on server.
375
+ #
376
+ # @param [Hash] access Access credentials
377
+ # @option access [String] :client_id
378
+ # @option access [String] :private_key
379
+ #
380
+ def move_to_trash!(access = {})
381
+ Api::Request.new do |request|
382
+ request[:access] = access
383
+ request[:method] = :PUT
384
+ request[:path] = "/storage/{{client_id}}/trash/#{path}/#{name}"
385
+ end.execute!
386
+ end
387
+
388
+ #
389
+ # Restore file from trash on server.
390
+ #
391
+ # @param [Hash] access Access credentials
392
+ # @option access [String] :client_id
393
+ # @option access [String] :private_key
394
+ #
395
+ def restore_to_trash!(path, access = {})
396
+ Api::Request.new do |request|
397
+ request[:access] = access
398
+ request[:method] = :DELETE
399
+ request[:path] = "/storage/{{client_id}}/trash/#{path}"
400
+ end.execute!
401
+ end
402
+
403
+ #
404
+ # Converts file to GroupDocs::Document.
405
+ #
406
+ # @return [GroupDocs::Document]
407
+ #
408
+ def to_document
409
+ Document.new(:file => self)
410
+ end
411
+
412
+ #
413
+ # Added in release 1.5.8
414
+ #
415
+ # Cancel file upload
416
+ #
417
+ # @param [String] path File path (name)
418
+ # @param [Hash] access Access credentials
419
+ # @option access [String] :client_id
420
+ # @option access [String] :private_key
421
+ #
422
+ def upload_cancel!(path, access = {})
423
+ Api::Request.new do |request|
424
+ request[:access] = access
425
+ request[:method] = :GET
426
+ request[:path] = "/storage/{{client_id}}/cancelUpload/#{id}/#{path}"
427
+ end.execute!
428
+ end
429
+
430
+ end # File
431
+ end # Storage
432
+ end # GroupDocs