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,288 +1,288 @@
1
- module GroupDocs
2
- module Storage
3
- class Folder < Api::Entity
4
-
5
- include Api::Helpers::AccessMode
6
- include Api::Helpers::Path
7
-
8
- #
9
- # Creates folder on server.
10
- #
11
- # @param [String] path Path of folder to create starting with "/"
12
- # @param [Hash] access Access credentials
13
- # @option access [String] :client_id
14
- # @option access [String] :private_key
15
- # @return [GroupDocs::Storage::Folder] Created folder
16
- #
17
- def self.create!(path, access = {})
18
- path = prepare_path(path)
19
-
20
- json = Api::Request.new do |request|
21
- request[:access] = access
22
- request[:method] = :POST
23
- request[:path] = "/storage/{{client_id}}/paths/#{path}"
24
- end.execute!
25
-
26
- Storage::Folder.new(json)
27
- end
28
-
29
- #
30
- # Returns a list of all directories and files in the path.
31
- #
32
- # @param [String] path Path of directory to list starting from root ('/')
33
- # @param [Hash] options Hash of options
34
- # @option options [Integer] :page Page to start with
35
- # @option options [Integer] :count How many items to list
36
- # @option options [String] :order_by Field name to sort by
37
- # @option options [Boolean] :order_asc Set to true to return in ascending order
38
- # @param [Hash] access Access credentials
39
- # @option access [String] :client_id
40
- # @option access [String] :private_key
41
- # @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]
42
- #
43
- def self.list!(path = '', options = {}, access = {})
44
- path = prepare_path(path)
45
- new(:path => path).list!(options, access)
46
- end
47
-
48
- # @attr [Integer] id
49
- attr_accessor :id
50
- # @attr [Integer] size
51
- attr_accessor :size
52
- # @attr [Integer] folder_count
53
- attr_accessor :folder_count
54
- # @attr [Integer] file_count
55
- attr_accessor :file_count
56
- # @attr [Time] created_on
57
- attr_accessor :created_on
58
- # @attr [Time] modified_on
59
- attr_accessor :modified_on
60
- # @attr [String] url
61
- attr_accessor :url
62
- # @attr [String] name
63
- attr_accessor :name
64
- # @attr [String] path
65
- attr_accessor :path
66
- # @attr [Integer] version
67
- attr_accessor :version
68
- # @attr [Integer] type
69
- attr_accessor :type
70
- # @attr [Symbol] access
71
- attr_accessor :access
72
-
73
- #
74
- # Converts timestamp which is return by API server to Time object.
75
- #
76
- # @return [Time]
77
- #
78
- def created_on
79
- Time.at(@created_on / 1000)
80
- end
81
-
82
- #
83
- # Converts timestamp which is return by API server to Time object.
84
- #
85
- # @return [Time]
86
- #
87
- def modified_on
88
- Time.at(@modified_on / 1000)
89
- end
90
-
91
- #
92
- # Converts access mode to human-readable format.
93
- #
94
- # @return [Symbol]
95
- #
96
- def access
97
- parse_access_mode(@access)
98
- end
99
-
100
- #
101
- # Returns an array of files and folders.
102
- #
103
- # @param [Hash] options Hash of options
104
- # @option options [Integer] :page Page to start with
105
- # @option options [Integer] :count How many items to list
106
- # @option options [String] :order_by Field name to sort by
107
- # @option options [Boolean] :order_asc Set to true to return in ascending order
108
- # @option options [String] :filter Filter by name
109
- # @option options [Array<Symbol>] :file_types Array of file types to return
110
- # @option options [Boolean] :extended Set to true to return extended information
111
- # @param [Hash] access Access credentials
112
- # @option access [String] :client_id
113
- # @option access [String] :private_key
114
- # @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]
115
- #
116
- def list!(options = {}, access = {})
117
- if options[:order_by]
118
- options[:order_by] = options[:order_by].camelize
119
- end
120
-
121
- full_path = prepare_path("#{path}/#{name}")
122
-
123
- api = Api::Request.new do |request|
124
- request[:access] = access
125
- request[:method] = :GET
126
- request[:path] = "/storage/{{client_id}}/folders/#{full_path}"
127
- end
128
- api.add_params(options)
129
- json = api.execute!
130
-
131
- folders = json[:folders].map do |folder|
132
- folder.merge!(:path => full_path)
133
- Storage::Folder.new(folder)
134
- end
135
- files = json[:files].map do |file|
136
- file.merge!(:path => full_path)
137
- Storage::File.new(file)
138
- end
139
-
140
- folders + files
141
- end
142
-
143
- #
144
- # Moves folder contents to given path.
145
- #
146
- # @param [String] destination Destination to move contents to
147
- # @param [Hash] access Access credentials
148
- # @option access [String] :client_id
149
- # @option access [String] :private_key
150
- # @return [String] Moved to folder path
151
- #
152
- def move!(destination, access = {})
153
- src_path = prepare_path(path)
154
- dst_path = prepare_path("#{destination}/#{name}")
155
-
156
- Api::Request.new do |request|
157
- request[:access] = access
158
- request[:method] = :PUT
159
- request[:headers] = { :'Groupdocs-Move' => src_path }
160
- request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
161
- end.execute!
162
-
163
- dst_path
164
- end
165
-
166
- #
167
- # Copies folder contents to given path.
168
- #
169
- # @param [String] destination_path Destination to copy contents to
170
- # @param [Hash] access Access credentials
171
- # @option access [String] :client_id
172
- # @option access [String] :private_key
173
- # @return [String] Copied to folder path
174
- #
175
- def copy!(destination, access = {})
176
- src_path = prepare_path(path)
177
- dst_path = prepare_path("#{destination}/#{name}")
178
-
179
- Api::Request.new do |request|
180
- request[:access] = access
181
- request[:method] = :PUT
182
- request[:headers] = { :'Groupdocs-Copy' => src_path }
183
- request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
184
- end.execute!
185
-
186
- dst_path
187
- end
188
-
189
- #
190
- # Creates folder on server.
191
- #
192
- # Note that it doesn't update self and instead returns new instance.
193
- #
194
- # @example
195
- # folder = GroupDocs::Storage::Folder.new(name: 'Folder')
196
- # folder = folder.create!
197
- #
198
- # @param [Hash] access Access credentials
199
- # @option access [String] :client_id
200
- # @option access [String] :private_key
201
- # @return [GroupDocs::Storage::Folder] Created folder
202
- #
203
- def create!(access = {})
204
- self.class.create! prepare_path("#{path}/#{name}"), access
205
- end
206
-
207
- #
208
- # Deletes folder from server.
209
- #
210
- # @param [Hash] access Access credentials
211
- # @option access [String] :client_id
212
- # @option access [String] :private_key
213
- #
214
- def delete!(access = {})
215
- Api::Request.new do |request|
216
- request[:access] = access
217
- request[:method] = :DELETE
218
- request[:path] = "/storage/{{client_id}}/folders/#{prepare_path("#{path}/#{name}")}"
219
- end.execute!
220
- end
221
-
222
- #
223
- # Returns an array of users a folder is shared with.
224
- #
225
- # @param [Hash] access Access credentials
226
- # @option access [String] :client_id
227
- # @option access [String] :private_key
228
- # @return [Array<GroupDocs::User>]
229
- #
230
- def sharers!(access = {})
231
- json = Api::Request.new do |request|
232
- request[:access] = access
233
- request[:method] = :GET
234
- request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
235
- end.execute!
236
-
237
- json[:shared_users].map do |user|
238
- User.new(user)
239
- end
240
- end
241
-
242
- #
243
- # Sets folder sharers to given emails.
244
- #
245
- # If empty array or nil passed, clears sharers.
246
- #
247
- # @param [Array] emails List of email addresses to share with
248
- # @param [Hash] access Access credentials
249
- # @option access [String] :client_id
250
- # @option access [String] :private_key
251
- # @return [Array<GroupDocs::User>]
252
- #
253
- def sharers_set!(emails, access = {})
254
- if emails.nil? || emails.empty?
255
- sharers_clear!(access)
256
- else
257
- json = Api::Request.new do |request|
258
- request[:access] = access
259
- request[:method] = :PUT
260
- request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
261
- request[:request_body] = emails
262
- end.execute!
263
-
264
- json[:shared_users].map do |user|
265
- User.new(user)
266
- end
267
- end
268
- end
269
-
270
- #
271
- # Clears sharers list.
272
- #
273
- # @param [Hash] access Access credentials
274
- # @option access [String] :client_id
275
- # @option access [String] :private_key
276
- # @return nil
277
- #
278
- def sharers_clear!(access = {})
279
- Api::Request.new do |request|
280
- request[:access] = access
281
- request[:method] = :DELETE
282
- request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
283
- end.execute![:shared_users]
284
- end
285
-
286
- end # Folder
287
- end # Storage
288
- end # GroupDocs
1
+ module GroupDocs
2
+ module Storage
3
+ class Folder < Api::Entity
4
+
5
+ include Api::Helpers::AccessMode
6
+ include Api::Helpers::Path
7
+
8
+ #
9
+ # Creates folder on server.
10
+ #
11
+ # @param [String] path Path of folder to create starting with "/"
12
+ # @param [Hash] access Access credentials
13
+ # @option access [String] :client_id
14
+ # @option access [String] :private_key
15
+ # @return [GroupDocs::Storage::Folder] Created folder
16
+ #
17
+ def self.create!(path, access = {})
18
+ path = prepare_path(path)
19
+
20
+ json = Api::Request.new do |request|
21
+ request[:access] = access
22
+ request[:method] = :POST
23
+ request[:path] = "/storage/{{client_id}}/paths/#{path}"
24
+ end.execute!
25
+
26
+ Storage::Folder.new(json)
27
+ end
28
+
29
+ #
30
+ # Returns a list of all directories and files in the path.
31
+ #
32
+ # @param [String] path Path of directory to list starting from root ('/')
33
+ # @param [Hash] options Hash of options
34
+ # @option options [Integer] :page Page to start with
35
+ # @option options [Integer] :count How many items to list
36
+ # @option options [String] :order_by Field name to sort by
37
+ # @option options [Boolean] :order_asc Set to true to return in ascending order
38
+ # @param [Hash] access Access credentials
39
+ # @option access [String] :client_id
40
+ # @option access [String] :private_key
41
+ # @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]
42
+ #
43
+ def self.list!(path = '', options = {}, access = {})
44
+ path = prepare_path(path)
45
+ new(:path => path).list!(options, access)
46
+ end
47
+
48
+ # @attr [Integer] id
49
+ attr_accessor :id
50
+ # @attr [Integer] size
51
+ attr_accessor :size
52
+ # @attr [Integer] folder_count
53
+ attr_accessor :folder_count
54
+ # @attr [Integer] file_count
55
+ attr_accessor :file_count
56
+ # @attr [Time] created_on
57
+ attr_accessor :created_on
58
+ # @attr [Time] modified_on
59
+ attr_accessor :modified_on
60
+ # @attr [String] url
61
+ attr_accessor :url
62
+ # @attr [String] name
63
+ attr_accessor :name
64
+ # @attr [String] path
65
+ attr_accessor :path
66
+ # @attr [Integer] version
67
+ attr_accessor :version
68
+ # @attr [Integer] type
69
+ attr_accessor :type
70
+ # @attr [Symbol] access
71
+ attr_accessor :access
72
+
73
+ #
74
+ # Converts timestamp which is return by API server to Time object.
75
+ #
76
+ # @return [Time]
77
+ #
78
+ def created_on
79
+ Time.at(@created_on / 1000)
80
+ end
81
+
82
+ #
83
+ # Converts timestamp which is return by API server to Time object.
84
+ #
85
+ # @return [Time]
86
+ #
87
+ def modified_on
88
+ Time.at(@modified_on / 1000)
89
+ end
90
+
91
+ #
92
+ # Converts access mode to human-readable format.
93
+ #
94
+ # @return [Symbol]
95
+ #
96
+ def access
97
+ parse_access_mode(@access)
98
+ end
99
+
100
+ #
101
+ # Returns an array of files and folders.
102
+ #
103
+ # @param [Hash] options Hash of options
104
+ # @option options [Integer] :page Page to start with
105
+ # @option options [Integer] :count How many items to list
106
+ # @option options [String] :order_by Field name to sort by
107
+ # @option options [Boolean] :order_asc Set to true to return in ascending order
108
+ # @option options [String] :filter Filter by name
109
+ # @option options [Array<Symbol>] :file_types Array of file types to return
110
+ # @option options [Boolean] :extended Set to true to return extended information
111
+ # @param [Hash] access Access credentials
112
+ # @option access [String] :client_id
113
+ # @option access [String] :private_key
114
+ # @return [Array<GroupDocs::Storage::Folder, GroupDocs::Storage::File>]
115
+ #
116
+ def list!(options = {}, access = {})
117
+ if options[:order_by]
118
+ options[:order_by] = options[:order_by].camelize
119
+ end
120
+
121
+ full_path = prepare_path("#{path}/#{name}")
122
+
123
+ api = Api::Request.new do |request|
124
+ request[:access] = access
125
+ request[:method] = :GET
126
+ request[:path] = "/storage/{{client_id}}/folders/#{full_path}"
127
+ end
128
+ api.add_params(options)
129
+ json = api.execute!
130
+
131
+ folders = json[:folders].map do |folder|
132
+ folder.merge!(:path => full_path)
133
+ Storage::Folder.new(folder)
134
+ end
135
+ files = json[:files].map do |file|
136
+ file.merge!(:path => full_path)
137
+ Storage::File.new(file)
138
+ end
139
+
140
+ folders + files
141
+ end
142
+
143
+ #
144
+ # Moves folder contents to given path.
145
+ #
146
+ # @param [String] destination Destination to move contents to
147
+ # @param [Hash] access Access credentials
148
+ # @option access [String] :client_id
149
+ # @option access [String] :private_key
150
+ # @return [String] Moved to folder path
151
+ #
152
+ def move!(destination, access = {})
153
+ src_path = prepare_path(path)
154
+ dst_path = prepare_path("#{destination}/#{name}")
155
+
156
+ Api::Request.new do |request|
157
+ request[:access] = access
158
+ request[:method] = :PUT
159
+ request[:headers] = { :'Groupdocs-Move' => src_path }
160
+ request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
161
+ end.execute!
162
+
163
+ dst_path
164
+ end
165
+
166
+ #
167
+ # Copies folder contents to given path.
168
+ #
169
+ # @param [String] destination_path Destination to copy contents to
170
+ # @param [Hash] access Access credentials
171
+ # @option access [String] :client_id
172
+ # @option access [String] :private_key
173
+ # @return [String] Copied to folder path
174
+ #
175
+ def copy!(destination, access = {})
176
+ src_path = prepare_path(path)
177
+ dst_path = prepare_path("#{destination}/#{name}")
178
+
179
+ Api::Request.new do |request|
180
+ request[:access] = access
181
+ request[:method] = :PUT
182
+ request[:headers] = { :'Groupdocs-Copy' => src_path }
183
+ request[:path] = "/storage/{{client_id}}/folders/#{dst_path}"
184
+ end.execute!
185
+
186
+ dst_path
187
+ end
188
+
189
+ #
190
+ # Creates folder on server.
191
+ #
192
+ # Note that it doesn't update self and instead returns new instance.
193
+ #
194
+ # @example
195
+ # folder = GroupDocs::Storage::Folder.new(name: 'Folder')
196
+ # folder = folder.create!
197
+ #
198
+ # @param [Hash] access Access credentials
199
+ # @option access [String] :client_id
200
+ # @option access [String] :private_key
201
+ # @return [GroupDocs::Storage::Folder] Created folder
202
+ #
203
+ def create!(access = {})
204
+ self.class.create! prepare_path("#{path}/#{name}"), access
205
+ end
206
+
207
+ #
208
+ # Deletes folder from server.
209
+ #
210
+ # @param [Hash] access Access credentials
211
+ # @option access [String] :client_id
212
+ # @option access [String] :private_key
213
+ #
214
+ def delete!(access = {})
215
+ Api::Request.new do |request|
216
+ request[:access] = access
217
+ request[:method] = :DELETE
218
+ request[:path] = "/storage/{{client_id}}/folders/#{prepare_path("#{path}/#{name}")}"
219
+ end.execute!
220
+ end
221
+
222
+ #
223
+ # Returns an array of users a folder is shared with.
224
+ #
225
+ # @param [Hash] access Access credentials
226
+ # @option access [String] :client_id
227
+ # @option access [String] :private_key
228
+ # @return [Array<GroupDocs::User>]
229
+ #
230
+ def sharers!(access = {})
231
+ json = Api::Request.new do |request|
232
+ request[:access] = access
233
+ request[:method] = :GET
234
+ request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
235
+ end.execute!
236
+
237
+ json[:shared_users].map do |user|
238
+ User.new(user)
239
+ end
240
+ end
241
+
242
+ #
243
+ # Sets folder sharers to given emails.
244
+ #
245
+ # If empty array or nil passed, clears sharers.
246
+ #
247
+ # @param [Array] emails List of email addresses to share with
248
+ # @param [Hash] access Access credentials
249
+ # @option access [String] :client_id
250
+ # @option access [String] :private_key
251
+ # @return [Array<GroupDocs::User>]
252
+ #
253
+ def sharers_set!(emails, access = {})
254
+ if emails.nil? || emails.empty?
255
+ sharers_clear!(access)
256
+ else
257
+ json = Api::Request.new do |request|
258
+ request[:access] = access
259
+ request[:method] = :PUT
260
+ request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
261
+ request[:request_body] = emails
262
+ end.execute!
263
+
264
+ json[:shared_users].map do |user|
265
+ User.new(user)
266
+ end
267
+ end
268
+ end
269
+
270
+ #
271
+ # Clears sharers list.
272
+ #
273
+ # @param [Hash] access Access credentials
274
+ # @option access [String] :client_id
275
+ # @option access [String] :private_key
276
+ # @return nil
277
+ #
278
+ def sharers_clear!(access = {})
279
+ Api::Request.new do |request|
280
+ request[:access] = access
281
+ request[:method] = :DELETE
282
+ request[:path] = "/doc/{{client_id}}/folders/#{id}/sharers"
283
+ end.execute![:shared_users]
284
+ end
285
+
286
+ end # Folder
287
+ end # Storage
288
+ end # GroupDocs