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.
- checksums.yaml +7 -0
- data/.travis.yml +9 -9
- data/CHANGELOG.md +482 -477
- data/Gemfile +3 -3
- data/LICENSE.txt +21 -21
- data/README.md +94 -94
- data/Rakefile +9 -9
- data/examples/README.md +12 -12
- data/examples/api-samples/Gemfile +5 -5
- data/examples/api-samples/Gemfile.lock +49 -49
- data/examples/api-samples/README.md +23 -23
- data/examples/api-samples/public/css/style.css +229 -229
- data/examples/api-samples/public/docs/annotation-sample.html +167 -167
- data/examples/api-samples/public/docs/docco.css +500 -500
- data/examples/api-samples/public/docs/envelope-sample.html +374 -374
- data/examples/api-samples/public/docs/sample01.html +181 -181
- data/examples/api-samples/public/docs/sample02.html +199 -199
- data/examples/api-samples/public/docs/sample03.html +318 -318
- data/examples/api-samples/public/docs/sample04.html +217 -217
- data/examples/api-samples/public/docs/sample05.html +296 -296
- data/examples/api-samples/public/docs/sample06.html +347 -347
- data/examples/api-samples/public/docs/sample07.html +209 -209
- data/examples/api-samples/public/docs/sample08.html +277 -277
- data/examples/api-samples/public/docs/sample09.html +314 -314
- data/examples/api-samples/public/docs/sample10.html +270 -270
- data/examples/api-samples/public/docs/sample11.html +462 -462
- data/examples/api-samples/public/docs/sample12.html +199 -199
- data/examples/api-samples/public/docs/sample13.html +201 -201
- data/examples/api-samples/public/docs/sample14.html +204 -204
- data/examples/api-samples/public/docs/sample15.html +182 -182
- data/examples/api-samples/public/docs/sample16.html +234 -234
- data/examples/api-samples/public/docs/sample17.html +309 -309
- data/examples/api-samples/public/docs/sample18.html +721 -721
- data/examples/api-samples/public/docs/sample19.html +631 -631
- data/examples/api-samples/public/docs/sample20.html +230 -230
- data/examples/api-samples/public/docs/sample21.html +790 -790
- data/examples/api-samples/public/docs/sample22.html +408 -408
- data/examples/api-samples/public/docs/sample25.html +550 -550
- data/examples/api-samples/public/templates/base-simple_source.html +191 -191
- data/examples/api-samples/public/templates/testdocument.html +100 -100
- data/examples/api-samples/public/templates/welcome.htm +137 -137
- data/examples/api-samples/samples/annotation-sample.rb +56 -56
- data/examples/api-samples/samples/envelope-sample.rb +133 -133
- data/examples/api-samples/samples/sample01.rb +44 -44
- data/examples/api-samples/samples/sample02.rb +50 -50
- data/examples/api-samples/samples/sample03.rb +79 -79
- data/examples/api-samples/samples/sample04.rb +54 -54
- data/examples/api-samples/samples/sample05.rb +83 -83
- data/examples/api-samples/samples/sample06.rb +86 -86
- data/examples/api-samples/samples/sample07.rb +59 -59
- data/examples/api-samples/samples/sample08.rb +76 -76
- data/examples/api-samples/samples/sample09.rb +85 -85
- data/examples/api-samples/samples/sample10.rb +70 -70
- data/examples/api-samples/samples/sample11.rb +132 -132
- data/examples/api-samples/samples/sample12.rb +48 -48
- data/examples/api-samples/samples/sample13.rb +49 -49
- data/examples/api-samples/samples/sample14.rb +54 -54
- data/examples/api-samples/samples/sample15.rb +43 -43
- data/examples/api-samples/samples/sample16.rb +57 -57
- data/examples/api-samples/samples/sample17.rb +70 -70
- data/examples/api-samples/samples/sample18.rb +190 -190
- data/examples/api-samples/samples/sample19.rb +188 -188
- data/examples/api-samples/samples/sample20.rb +68 -68
- data/examples/api-samples/samples/sample21.rb +212 -212
- data/examples/api-samples/samples/sample22.rb +109 -109
- data/examples/api-samples/samples/sample25.rb +127 -127
- data/examples/api-samples/views/_others_samples.haml +233 -233
- data/examples/api-samples/views/annotation_sample.haml +63 -63
- data/examples/api-samples/views/envelope_sample.haml +72 -72
- data/examples/api-samples/views/index.haml +235 -235
- data/examples/api-samples/views/layout.haml +3 -3
- data/examples/api-samples/views/sample01.haml +63 -63
- data/examples/api-samples/views/sample02.haml +52 -52
- data/examples/api-samples/views/sample03.haml +87 -87
- data/examples/api-samples/views/sample04.haml +55 -55
- data/examples/api-samples/views/sample05.haml +86 -86
- data/examples/api-samples/views/sample06.haml +58 -58
- data/examples/api-samples/views/sample07.haml +52 -52
- data/examples/api-samples/views/sample08.haml +100 -100
- data/examples/api-samples/views/sample09.haml +95 -95
- data/examples/api-samples/views/sample10.haml +93 -93
- data/examples/api-samples/views/sample11.haml +140 -140
- data/examples/api-samples/views/sample12.haml +68 -68
- data/examples/api-samples/views/sample13.haml +64 -64
- data/examples/api-samples/views/sample14.haml +60 -60
- data/examples/api-samples/views/sample15.haml +51 -51
- data/examples/api-samples/views/sample16.haml +50 -50
- data/examples/api-samples/views/sample17.haml +54 -54
- data/examples/api-samples/views/sample18.haml +143 -143
- data/examples/api-samples/views/sample19.haml +92 -92
- data/examples/api-samples/views/sample20.haml +54 -54
- data/examples/api-samples/views/sample21.haml +123 -123
- data/examples/api-samples/views/sample22.haml +106 -106
- data/examples/api-samples/views/sample25.haml +101 -101
- data/examples/api-samples/views/sample31.haml +2 -2
- data/examples/api-samples/web.rb +20 -20
- data/examples/viewer/Gemfile +5 -5
- data/examples/viewer/app.rb +52 -52
- data/groupdocs.gemspec +31 -31
- data/lib/groupdocs.rb +62 -62
- data/lib/groupdocs/api.rb +6 -6
- data/lib/groupdocs/api/entity.rb +112 -112
- data/lib/groupdocs/api/helpers.rb +11 -11
- data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
- data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
- data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
- data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
- data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
- data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
- data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
- data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
- data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
- data/lib/groupdocs/api/request.rb +91 -91
- data/lib/groupdocs/datasource.rb +249 -249
- data/lib/groupdocs/datasource/field.rb +39 -39
- data/lib/groupdocs/document.rb +1550 -1550
- data/lib/groupdocs/document/annotation.rb +421 -421
- data/lib/groupdocs/document/annotation/reply.rb +173 -173
- data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
- data/lib/groupdocs/document/change.rb +56 -56
- data/lib/groupdocs/document/field.rb +53 -53
- data/lib/groupdocs/document/metadata.rb +32 -32
- data/lib/groupdocs/document/rectangle.rb +18 -18
- data/lib/groupdocs/document/view.rb +36 -36
- data/lib/groupdocs/errors.rb +8 -8
- data/lib/groupdocs/job.rb +468 -468
- data/lib/groupdocs/questionnaire.rb +530 -530
- data/lib/groupdocs/questionnaire/collector.rb +335 -335
- data/lib/groupdocs/questionnaire/execution.rb +181 -181
- data/lib/groupdocs/questionnaire/page.rb +43 -43
- data/lib/groupdocs/questionnaire/question.rb +108 -108
- data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
- data/lib/groupdocs/signature.rb +380 -380
- data/lib/groupdocs/signature/contact.rb +181 -181
- data/lib/groupdocs/signature/envelope.rb +747 -747
- data/lib/groupdocs/signature/envelope/log.rb +20 -20
- data/lib/groupdocs/signature/field.rb +286 -286
- data/lib/groupdocs/signature/field/location.rb +71 -71
- data/lib/groupdocs/signature/form.rb +804 -804
- data/lib/groupdocs/signature/list.rb +92 -92
- data/lib/groupdocs/signature/recipient.rb +79 -79
- data/lib/groupdocs/signature/role.rb +54 -54
- data/lib/groupdocs/signature/shared.rb +6 -6
- data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
- data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
- data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
- data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
- data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
- data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
- data/lib/groupdocs/signature/template.rb +124 -124
- data/lib/groupdocs/storage.rb +44 -44
- data/lib/groupdocs/storage/file.rb +432 -432
- data/lib/groupdocs/storage/folder.rb +288 -288
- data/lib/groupdocs/storage/package.rb +48 -48
- data/lib/groupdocs/storage/provider.rb +32 -32
- data/lib/groupdocs/subscription.rb +323 -323
- data/lib/groupdocs/subscription/limit.rb +20 -20
- data/lib/groupdocs/user.rb +955 -930
- data/lib/groupdocs/version.rb +3 -3
- data/spec/groupdocs/api/entity_spec.rb +55 -55
- data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
- data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
- data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
- data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
- data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
- data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
- data/spec/groupdocs/api/request_spec.rb +112 -112
- data/spec/groupdocs/datasource/field_spec.rb +29 -29
- data/spec/groupdocs/datasource_spec.rb +145 -145
- data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
- data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
- data/spec/groupdocs/document/annotation_spec.rb +234 -234
- data/spec/groupdocs/document/change_spec.rb +39 -39
- data/spec/groupdocs/document/field_spec.rb +28 -28
- data/spec/groupdocs/document/metadata_spec.rb +21 -21
- data/spec/groupdocs/document/rectangle_spec.rb +14 -14
- data/spec/groupdocs/document/view_spec.rb +33 -33
- data/spec/groupdocs/document_spec.rb +859 -859
- data/spec/groupdocs/errors_spec.rb +7 -7
- data/spec/groupdocs/job_spec.rb +323 -323
- data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
- data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
- data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
- data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
- data/spec/groupdocs/questionnaire_spec.rb +295 -295
- data/spec/groupdocs/signature/contact_spec.rb +142 -142
- data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
- data/spec/groupdocs/signature/envelope_spec.rb +384 -384
- data/spec/groupdocs/signature/field/location_spec.rb +40 -40
- data/spec/groupdocs/signature/field_spec.rb +235 -235
- data/spec/groupdocs/signature/form_spec.rb +205 -205
- data/spec/groupdocs/signature/list_spec.rb +87 -87
- data/spec/groupdocs/signature/recipient_spec.rb +26 -26
- data/spec/groupdocs/signature/role_spec.rb +47 -47
- data/spec/groupdocs/signature/template_spec.rb +80 -80
- data/spec/groupdocs/signature_spec.rb +194 -194
- data/spec/groupdocs/storage/file_spec.rb +303 -303
- data/spec/groupdocs/storage/folder_spec.rb +270 -270
- data/spec/groupdocs/storage/package_spec.rb +38 -38
- data/spec/groupdocs/storage/provider_spec.rb +21 -21
- data/spec/groupdocs/storage_spec.rb +27 -27
- data/spec/groupdocs/subscription/limit_spec.rb +16 -16
- data/spec/groupdocs/subscription_spec.rb +74 -74
- data/spec/groupdocs/user_spec.rb +257 -257
- data/spec/groupdocs_spec.rb +63 -63
- data/spec/spec_helper.rb +73 -73
- data/spec/support/json/annotation_access_set.json +11 -11
- data/spec/support/json/annotation_collaborators_get.json +16 -16
- data/spec/support/json/annotation_collaborators_set.json +16 -16
- data/spec/support/json/annotation_create.json +12 -12
- data/spec/support/json/annotation_list.json +32 -32
- data/spec/support/json/annotation_marker_move.json +10 -10
- data/spec/support/json/annotation_move.json +8 -8
- data/spec/support/json/annotation_remove.json +9 -9
- data/spec/support/json/annotation_replies_create.json +9 -9
- data/spec/support/json/annotation_replies_get.json +25 -25
- data/spec/support/json/annotation_reviewers_get.json +18 -18
- data/spec/support/json/comparison_changes.json +46 -46
- data/spec/support/json/comparison_compare.json +8 -8
- data/spec/support/json/comparison_document.json +10 -10
- data/spec/support/json/contact_add.json +12 -12
- data/spec/support/json/contacts_get.json +19 -19
- data/spec/support/json/contacts_import.json +8 -8
- data/spec/support/json/datasource_add.json +8 -8
- data/spec/support/json/datasource_get.json +22 -22
- data/spec/support/json/datasource_remove.json +8 -8
- data/spec/support/json/datasource_update.json +8 -8
- data/spec/support/json/delete_account.json +9 -9
- data/spec/support/json/document_access_info_get.json +14 -14
- data/spec/support/json/document_convert.json +8 -8
- data/spec/support/json/document_datasource.json +10 -10
- data/spec/support/json/document_fields.json +34 -34
- data/spec/support/json/document_formats.json +8 -8
- data/spec/support/json/document_metadata.json +15 -15
- data/spec/support/json/document_page_images_get.json +20 -20
- data/spec/support/json/document_questionnaire_create.json +9 -9
- data/spec/support/json/document_questionnaires.json +23 -23
- data/spec/support/json/document_sharers_remove.json +8 -8
- data/spec/support/json/document_sharers_set.json +16 -16
- data/spec/support/json/document_thumbnails.json +24 -24
- data/spec/support/json/document_views.json +32 -32
- data/spec/support/json/envelope_get.json +46 -46
- data/spec/support/json/envelope_logs.json +16 -16
- data/spec/support/json/envelope_recipient_add.json +26 -26
- data/spec/support/json/envelopes_all.json +48 -48
- data/spec/support/json/envelopes_resources.json +31 -31
- data/spec/support/json/file_compress.json +8 -8
- data/spec/support/json/file_copy.json +14 -14
- data/spec/support/json/file_delete.json +5 -5
- data/spec/support/json/file_move.json +14 -14
- data/spec/support/json/file_upload.json +8 -8
- data/spec/support/json/folder_create.json +8 -8
- data/spec/support/json/folder_delete.json +5 -5
- data/spec/support/json/folder_list.json +22 -22
- data/spec/support/json/folder_move.json +8 -8
- data/spec/support/json/folder_sharers_get.json +16 -16
- data/spec/support/json/folder_sharers_remove.json +8 -8
- data/spec/support/json/folder_sharers_set.json +16 -16
- data/spec/support/json/form_get.json +21 -21
- data/spec/support/json/forms_all.json +23 -23
- data/spec/support/json/job_add_url.json +8 -8
- data/spec/support/json/job_create.json +8 -8
- data/spec/support/json/job_documents.json +40 -40
- data/spec/support/json/job_file_add.json +8 -8
- data/spec/support/json/job_get.json +30 -30
- data/spec/support/json/job_update.json +7 -7
- data/spec/support/json/jobs_get.json +58 -58
- data/spec/support/json/list_add.json +12 -12
- data/spec/support/json/lists_get.json +19 -19
- data/spec/support/json/package_create.json +7 -7
- data/spec/support/json/questionnaire_collector.json +17 -17
- data/spec/support/json/questionnaire_collectors.json +38 -38
- data/spec/support/json/questionnaire_collectors_add.json +10 -10
- data/spec/support/json/questionnaire_create.json +10 -10
- data/spec/support/json/questionnaire_datasources.json +26 -26
- data/spec/support/json/questionnaire_execution_add.json +9 -9
- data/spec/support/json/questionnaire_execution_status_set.json +8 -8
- data/spec/support/json/questionnaire_execution_update.json +8 -8
- data/spec/support/json/questionnaire_executions.json +28 -28
- data/spec/support/json/questionnaire_get.json +17 -17
- data/spec/support/json/questionnaire_remove.json +8 -8
- data/spec/support/json/questionnaire_update.json +8 -8
- data/spec/support/json/questionnaires_get.json +40 -40
- data/spec/support/json/sign_documents.json +16 -16
- data/spec/support/json/signature_create.json +12 -12
- data/spec/support/json/signature_field_add.json +25 -25
- data/spec/support/json/signature_fields_get.json +27 -27
- data/spec/support/json/signature_roles_get.json +17 -17
- data/spec/support/json/signatures_get.json +19 -19
- data/spec/support/json/storage_info.json +10 -10
- data/spec/support/json/subscription_plan_get.json +9 -9
- data/spec/support/json/subscription_plans_get.json +17 -17
- data/spec/support/json/template_get.json +35 -35
- data/spec/support/json/template_get_documents.json +15 -15
- data/spec/support/json/template_get_recipients.json +20 -20
- data/spec/support/json/templates_all.json +37 -37
- data/spec/support/json/templates_get.json +21 -21
- data/spec/support/json/update_account.json +10 -10
- data/spec/support/json/user_area.json +67 -67
- data/spec/support/json/user_embed_key.json +38 -38
- data/spec/support/json/user_get_embed_key.json +67 -67
- data/spec/support/json/user_login.json +67 -67
- data/spec/support/json/user_profile_get.json +24 -24
- data/spec/support/json/user_providers.json +31 -31
- data/spec/support/json/user_roles.json +25 -25
- data/spec/support/json/user_users_get.json +27 -27
- data/spec/support/shared_examples/api/entity.rb +39 -39
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
- data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
- data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
- data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
- data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
- data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
- data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
- metadata +35 -55
data/lib/groupdocs/storage.rb
CHANGED
@@ -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
|