groupdocs 0.2 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/groupdocs.rb +1 -0
- data/lib/groupdocs/api.rb +0 -1
- data/lib/groupdocs/api/helpers.rb +3 -1
- data/lib/groupdocs/api/helpers/access_mode_helper.rb +32 -0
- data/lib/groupdocs/api/helpers/{access_helper.rb → credentials_helper.rb} +2 -23
- data/lib/groupdocs/api/helpers/path_helper.rb +28 -0
- data/lib/groupdocs/api/helpers/rest_helper.rb +1 -1
- data/lib/groupdocs/api/helpers/url_helper.rb +1 -1
- data/lib/groupdocs/api/request.rb +3 -3
- data/lib/groupdocs/datasource.rb +6 -6
- data/lib/groupdocs/document.rb +34 -34
- data/lib/groupdocs/document/annotation.rb +6 -6
- data/lib/groupdocs/document/annotation/reply.rb +5 -5
- data/lib/groupdocs/extensions.rb +1 -0
- data/lib/groupdocs/extensions/lookup.rb +52 -0
- data/lib/groupdocs/job.rb +13 -13
- data/lib/groupdocs/questionnaire.rb +14 -14
- data/lib/groupdocs/questionnaire/execution.rb +3 -3
- data/lib/groupdocs/questionnaire/page.rb +1 -1
- data/lib/groupdocs/questionnaire/question.rb +1 -1
- data/lib/groupdocs/storage.rb +1 -1
- data/lib/groupdocs/storage/file.rb +28 -25
- data/lib/groupdocs/storage/folder.rb +19 -27
- data/lib/groupdocs/storage/package.rb +1 -1
- data/lib/groupdocs/version.rb +1 -1
- data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +49 -0
- data/spec/groupdocs/api/helpers/{access_helper_spec.rb → credentials_helpers_spec.rb} +1 -42
- data/spec/groupdocs/api/helpers/path_helper_spec.rb +28 -0
- data/spec/groupdocs/document_spec.rb +1 -1
- data/spec/groupdocs/storage/file_spec.rb +23 -28
- data/spec/groupdocs/storage/folder_spec.rb +18 -18
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +12 -0
- data/spec/support/shared_examples/{api/sugar → extensions}/lookup.rb +1 -1
- metadata +35 -26
- data/lib/groupdocs/api/sugar/lookup.rb +0 -57
@@ -111,7 +111,7 @@ module GroupDocs
|
|
111
111
|
reply
|
112
112
|
else
|
113
113
|
reply.merge!(annotation: self)
|
114
|
-
|
114
|
+
Document::Annotation::Reply.new(reply)
|
115
115
|
end
|
116
116
|
end
|
117
117
|
end
|
@@ -144,7 +144,7 @@ module GroupDocs
|
|
144
144
|
# @option access [String] :private_key
|
145
145
|
#
|
146
146
|
def create!(access = {})
|
147
|
-
json =
|
147
|
+
json = Api::Request.new do |request|
|
148
148
|
request[:access] = access
|
149
149
|
request[:method] = :POST
|
150
150
|
request[:path] = "/ant/{{client_id}}/files/#{document.file.guid}/annotations"
|
@@ -166,7 +166,7 @@ module GroupDocs
|
|
166
166
|
# @return [Array<GroupDocs::User>]
|
167
167
|
#
|
168
168
|
def collaborators_set!(emails, access = {})
|
169
|
-
json =
|
169
|
+
json = Api::Request.new do |request|
|
170
170
|
request[:access] = access
|
171
171
|
request[:method] = :PUT
|
172
172
|
request[:path] = "/ant/{{client_id}}/files/#{document.file.guid}/collaborators"
|
@@ -174,7 +174,7 @@ module GroupDocs
|
|
174
174
|
end.execute!
|
175
175
|
|
176
176
|
json[:collaborators].map do |collaborator|
|
177
|
-
|
177
|
+
User.new(collaborator)
|
178
178
|
end
|
179
179
|
end
|
180
180
|
# note that aliased version cannot accept access credentials hash
|
@@ -188,7 +188,7 @@ module GroupDocs
|
|
188
188
|
# @option access [String] :private_key
|
189
189
|
#
|
190
190
|
def remove!(access = {})
|
191
|
-
|
191
|
+
Api::Request.new do |request|
|
192
192
|
request[:access] = access
|
193
193
|
request[:method] = :DELETE
|
194
194
|
request[:path] = "/ant/{{client_id}}/annotations/#{guid}"
|
@@ -208,7 +208,7 @@ module GroupDocs
|
|
208
208
|
# @raise [ArgumentError] If :after option is passed but it's not an instance of Time
|
209
209
|
#
|
210
210
|
def replies!(options = {}, access = {})
|
211
|
-
|
211
|
+
Document::Annotation::Reply.get!(self, options, access)
|
212
212
|
end
|
213
213
|
|
214
214
|
end # Document::Annotation
|
@@ -23,7 +23,7 @@ module GroupDocs
|
|
23
23
|
|
24
24
|
options[:after] = (options[:after].to_i * 1000) if options[:after]
|
25
25
|
|
26
|
-
api =
|
26
|
+
api = Api::Request.new do |request|
|
27
27
|
request[:access] = access
|
28
28
|
request[:method] = :GET
|
29
29
|
request[:path] = "/ant/{{client_id}}/annotations/#{annotation.guid}/replies"
|
@@ -33,7 +33,7 @@ module GroupDocs
|
|
33
33
|
|
34
34
|
json[:replies].map do |reply|
|
35
35
|
reply.merge!(annotation: annotation)
|
36
|
-
|
36
|
+
Document::Annotation::Reply.new(reply)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -101,7 +101,7 @@ module GroupDocs
|
|
101
101
|
# @raise [NameError] if annotation or annotation_guid are not set
|
102
102
|
#
|
103
103
|
def create!(access = {})
|
104
|
-
json =
|
104
|
+
json = Api::Request.new do |request|
|
105
105
|
request[:access] = access
|
106
106
|
request[:method] = :POST
|
107
107
|
request[:path] = "/ant/{{client_id}}/annotations/#{get_annotation_guid}/replies"
|
@@ -127,7 +127,7 @@ module GroupDocs
|
|
127
127
|
# @option access [String] :private_key
|
128
128
|
#
|
129
129
|
def edit!(access = {})
|
130
|
-
|
130
|
+
Api::Request.new do |request|
|
131
131
|
request[:access] = access
|
132
132
|
request[:method] = :PUT
|
133
133
|
request[:path] = "/ant/{{client_id}}/replies/#{guid}"
|
@@ -145,7 +145,7 @@ module GroupDocs
|
|
145
145
|
# @todo currently not implemented in API
|
146
146
|
#
|
147
147
|
def remove!(access = {})
|
148
|
-
|
148
|
+
Api::Request.new do |request|
|
149
149
|
request[:access] = access
|
150
150
|
request[:method] = :DELETE
|
151
151
|
request[:path] = "/ant/{{client_id}}/replies/#{guid}"
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'groupdocs/extensions/lookup'
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module GroupDocs
|
2
|
+
module Extensions
|
3
|
+
#
|
4
|
+
# Extends classes providing them with .find! and .find_all! class methods
|
5
|
+
# which is a bit of sugar for working with files, folder and documents,
|
6
|
+
#
|
7
|
+
# It's not that flexible because requires extending class to implement
|
8
|
+
# .all! class method.
|
9
|
+
#
|
10
|
+
# This module is a subject to modifications.
|
11
|
+
#
|
12
|
+
module Lookup
|
13
|
+
|
14
|
+
#
|
15
|
+
# Returns first object matching given options.
|
16
|
+
#
|
17
|
+
# @param [Symbol] attribute
|
18
|
+
# @param [Integer, String, Regexp] value
|
19
|
+
# @param [Hash] access Access credentials
|
20
|
+
# @option access [String] :client_id
|
21
|
+
# @option access [String] :private_key
|
22
|
+
# @return [GroupDocs::Api::Entity] Matching entity
|
23
|
+
#
|
24
|
+
def find!(attribute, value, access = {})
|
25
|
+
find_all!(attribute, value, access).first
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Returns all objects matching given options.
|
30
|
+
#
|
31
|
+
# Each entity has to implement #all! method for this to work.
|
32
|
+
#
|
33
|
+
# @param [Symbol] attribute
|
34
|
+
# @param [Integer, String, Regexp] value
|
35
|
+
# @param [Hash] access Access credentials
|
36
|
+
# @option access [String] :client_id
|
37
|
+
# @option access [String] :private_key
|
38
|
+
# @return [Array] Array of matching entities
|
39
|
+
#
|
40
|
+
# @raise [NoMethodError] if extending class does not implement .all! class method.
|
41
|
+
#
|
42
|
+
def find_all!(attribute, value, access = {})
|
43
|
+
respond_to?(:all!) or raise NoMethodError, "#{self}.all! is not implemented - aborting."
|
44
|
+
|
45
|
+
all!('/', access).select do |object|
|
46
|
+
value === object.send(attribute)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end # Lookup
|
51
|
+
end # Extensions
|
52
|
+
end # GroupDocs
|
data/lib/groupdocs/job.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module GroupDocs
|
2
2
|
class Job < GroupDocs::Api::Entity
|
3
3
|
|
4
|
-
extend
|
5
|
-
include
|
4
|
+
extend Api::Helpers::Actions
|
5
|
+
include Api::Helpers::Status
|
6
6
|
|
7
7
|
#
|
8
8
|
# Returns array of recent jobs.
|
@@ -16,7 +16,7 @@ module GroupDocs
|
|
16
16
|
# @return [Array<GroupDocs::Job>]
|
17
17
|
#
|
18
18
|
def self.all!(options = {}, access = {})
|
19
|
-
api =
|
19
|
+
api = Api::Request.new do |request|
|
20
20
|
request[:access] = access
|
21
21
|
request[:method] = :GET
|
22
22
|
request[:path] = '/async/{{client_id}}/jobs'
|
@@ -25,7 +25,7 @@ module GroupDocs
|
|
25
25
|
json = api.execute!
|
26
26
|
|
27
27
|
json[:jobs].map do |job|
|
28
|
-
|
28
|
+
Job.new(job)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -47,7 +47,7 @@ module GroupDocs
|
|
47
47
|
options[:actions] = convert_actions(options[:actions])
|
48
48
|
options[:out_formats] = options[:out_formats].join(?;) if options[:out_formats]
|
49
49
|
|
50
|
-
api =
|
50
|
+
api = Api::Request.new do |request|
|
51
51
|
request[:access] = access
|
52
52
|
request[:method] = :POST
|
53
53
|
request[:path] = '/async/{{client_id}}/jobs'
|
@@ -55,7 +55,7 @@ module GroupDocs
|
|
55
55
|
end
|
56
56
|
json = api.execute!
|
57
57
|
|
58
|
-
|
58
|
+
Job.new(id: json[:job_id])
|
59
59
|
end
|
60
60
|
|
61
61
|
# @attr [Integer] id
|
@@ -71,7 +71,7 @@ module GroupDocs
|
|
71
71
|
def documents=(documents)
|
72
72
|
@documents = documents.map do |document|
|
73
73
|
document.merge!(file: GroupDocs::Storage::File.new(document))
|
74
|
-
|
74
|
+
Document.new(document)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -84,7 +84,7 @@ module GroupDocs
|
|
84
84
|
# @return [Array<GroupDocs::Document>]
|
85
85
|
#
|
86
86
|
def documents!(access = {})
|
87
|
-
json =
|
87
|
+
json = Api::Request.new do |request|
|
88
88
|
request[:access] = access
|
89
89
|
request[:method] = :GET
|
90
90
|
request[:path] = "/async/{{client_id}}/jobs/#{id}/documents"
|
@@ -92,7 +92,7 @@ module GroupDocs
|
|
92
92
|
|
93
93
|
json[:documents].map do |document|
|
94
94
|
document.merge!(file: GroupDocs::Storage::File.new(document))
|
95
|
-
|
95
|
+
Document.new(document)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
@@ -113,7 +113,7 @@ module GroupDocs
|
|
113
113
|
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
114
114
|
"Document should be GroupDocs::Document object. Received: #{document.inspect}"
|
115
115
|
|
116
|
-
api =
|
116
|
+
api = Api::Request.new do |request|
|
117
117
|
request[:access] = access
|
118
118
|
request[:method] = :PUT
|
119
119
|
request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.guid}"
|
@@ -144,7 +144,7 @@ module GroupDocs
|
|
144
144
|
datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
|
145
145
|
"Datasource should be GroupDocs::DataSource object. Received: #{datasource.inspect}"
|
146
146
|
|
147
|
-
|
147
|
+
Api::Request.new do |request|
|
148
148
|
request[:access] = access
|
149
149
|
request[:method] = :PUT
|
150
150
|
request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.guid}/datasources/#{datasource.id}"
|
@@ -165,7 +165,7 @@ module GroupDocs
|
|
165
165
|
def add_url!(url, options = {}, access = {})
|
166
166
|
options.merge!(absolute_url: url)
|
167
167
|
|
168
|
-
api =
|
168
|
+
api = Api::Request.new do |request|
|
169
169
|
request[:access] = access
|
170
170
|
request[:method] = :PUT
|
171
171
|
request[:path] = "/async/{{client_id}}/jobs/#{id}/urls"
|
@@ -189,7 +189,7 @@ module GroupDocs
|
|
189
189
|
def update!(options, access = {})
|
190
190
|
options[:status] = parse_status(options[:status]) if options[:status]
|
191
191
|
|
192
|
-
|
192
|
+
Api::Request.new do |request|
|
193
193
|
request[:access] = access
|
194
194
|
request[:method] = :PUT
|
195
195
|
request[:path] = "/async/{{client_id}}/jobs/#{id}"
|
@@ -5,7 +5,7 @@ module GroupDocs
|
|
5
5
|
require 'groupdocs/questionnaire/page'
|
6
6
|
require 'groupdocs/questionnaire/question'
|
7
7
|
|
8
|
-
include
|
8
|
+
include Api::Helpers::AccessMode
|
9
9
|
|
10
10
|
#
|
11
11
|
# Returns an array of all questionnaires.
|
@@ -16,14 +16,14 @@ module GroupDocs
|
|
16
16
|
# @return [Array<GroupDocs::Questionnaire>]
|
17
17
|
#
|
18
18
|
def self.all!(access = {})
|
19
|
-
json =
|
19
|
+
json = Api::Request.new do |request|
|
20
20
|
request[:access] = access
|
21
21
|
request[:method] = :GET
|
22
22
|
request[:path] = '/merge/{{client_id}}/questionnaires'
|
23
23
|
end.execute!
|
24
24
|
|
25
25
|
json[:questionnaires].map do |questionnaire|
|
26
|
-
|
26
|
+
Questionnaire.new(questionnaire)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -37,13 +37,13 @@ module GroupDocs
|
|
37
37
|
# @return [GroupDocs::Questionnaire, nil]
|
38
38
|
#
|
39
39
|
def self.get!(id, access = {})
|
40
|
-
json =
|
40
|
+
json = Api::Request.new do |request|
|
41
41
|
request[:access] = access
|
42
42
|
request[:method] = :GET
|
43
43
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
|
44
44
|
end.execute!
|
45
45
|
|
46
|
-
|
46
|
+
Questionnaire.new(json[:questionnaire])
|
47
47
|
rescue RestClient::BadRequest
|
48
48
|
nil
|
49
49
|
end
|
@@ -57,14 +57,14 @@ module GroupDocs
|
|
57
57
|
# @return [Array<GroupDocs::Questionnaire::Execution>]
|
58
58
|
#
|
59
59
|
def self.executions!(access = {})
|
60
|
-
json =
|
60
|
+
json = Api::Request.new do |request|
|
61
61
|
request[:access] = access
|
62
62
|
request[:method] = :GET
|
63
63
|
request[:path] = '/merge/{{client_id}}/questionnaires/executions'
|
64
64
|
end.execute!
|
65
65
|
|
66
66
|
json[:executions].map do |execution|
|
67
|
-
|
67
|
+
Questionnaire::Execution.new(execution)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
@@ -92,7 +92,7 @@ module GroupDocs
|
|
92
92
|
if page.is_a?(GroupDocs::Questionnaire::Page)
|
93
93
|
page
|
94
94
|
else
|
95
|
-
|
95
|
+
Questionnaire::Page.new(page)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
@@ -120,7 +120,7 @@ module GroupDocs
|
|
120
120
|
# @option access [String] :private_key
|
121
121
|
#
|
122
122
|
def create!(access = {})
|
123
|
-
json =
|
123
|
+
json = Api::Request.new do |request|
|
124
124
|
request[:access] = access
|
125
125
|
request[:method] = :POST
|
126
126
|
request[:path] = '/merge/{{client_id}}/questionnaires'
|
@@ -138,7 +138,7 @@ module GroupDocs
|
|
138
138
|
# @option access [String] :private_key
|
139
139
|
#
|
140
140
|
def update!(access = {})
|
141
|
-
|
141
|
+
Api::Request.new do |request|
|
142
142
|
request[:access] = access
|
143
143
|
request[:method] = :PUT
|
144
144
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
|
@@ -154,7 +154,7 @@ module GroupDocs
|
|
154
154
|
# @option access [String] :private_key
|
155
155
|
#
|
156
156
|
def remove!(access = {})
|
157
|
-
|
157
|
+
Api::Request.new do |request|
|
158
158
|
request[:access] = access
|
159
159
|
request[:method] = :DELETE
|
160
160
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}"
|
@@ -173,14 +173,14 @@ module GroupDocs
|
|
173
173
|
# @return [Array<GroupDocs::DataSource>]
|
174
174
|
#
|
175
175
|
def datasources!(access = {})
|
176
|
-
json =
|
176
|
+
json = Api::Request.new do |request|
|
177
177
|
request[:access] = access
|
178
178
|
request[:method] = :GET
|
179
179
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/datasources"
|
180
180
|
end.execute!
|
181
181
|
|
182
182
|
json[:datasources].map do |datasource|
|
183
|
-
|
183
|
+
DataSource.new(datasource)
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
@@ -204,7 +204,7 @@ module GroupDocs
|
|
204
204
|
execution.is_a?(GroupDocs::Questionnaire::Execution) or raise ArgumentError,
|
205
205
|
"Execution should be GroupDocs::Questionnaire::Execution object, received: #{execution.inspect}"
|
206
206
|
|
207
|
-
json =
|
207
|
+
json = Api::Request.new do |request|
|
208
208
|
request[:access] = access
|
209
209
|
request[:method] = :POST
|
210
210
|
request[:path] = "/merge/{{client_id}}/questionnaires/#{id}/executions"
|
@@ -19,7 +19,7 @@ module GroupDocs
|
|
19
19
|
# @return [Array<GroupDocs::Questionnaire::Execution>]
|
20
20
|
#
|
21
21
|
def self.all!(access = {})
|
22
|
-
|
22
|
+
Questionnaire.executions!(access)
|
23
23
|
end
|
24
24
|
|
25
25
|
# @attr [Integer] id
|
@@ -90,7 +90,7 @@ module GroupDocs
|
|
90
90
|
# @option access [String] :private_key
|
91
91
|
#
|
92
92
|
def set_status!(status, access = {})
|
93
|
-
|
93
|
+
Api::Request.new do |request|
|
94
94
|
request[:access] = access
|
95
95
|
request[:method] = :PUT
|
96
96
|
request[:path] = "/merge/{{client_id}}/questionnaires/executions/#{id}/status"
|
@@ -108,7 +108,7 @@ module GroupDocs
|
|
108
108
|
# @option access [String] :private_key
|
109
109
|
#
|
110
110
|
def update!(access = {})
|
111
|
-
|
111
|
+
Api::Request.new do |request|
|
112
112
|
request[:access] = access
|
113
113
|
request[:method] = :PUT
|
114
114
|
request[:path] = "/merge/{{client_id}}/questionnaires/executions/#{id}"
|
data/lib/groupdocs/storage.rb
CHANGED
@@ -19,7 +19,7 @@ module GroupDocs
|
|
19
19
|
# @return [Hash]
|
20
20
|
#
|
21
21
|
def self.info!(access = {})
|
22
|
-
json =
|
22
|
+
json = Api::Request.new do |request|
|
23
23
|
request[:access] = access
|
24
24
|
request[:method] = :GET
|
25
25
|
request[:path] = '/storage/{{client_id}}'
|
@@ -2,7 +2,8 @@ module GroupDocs
|
|
2
2
|
module Storage
|
3
3
|
class File < GroupDocs::Api::Entity
|
4
4
|
|
5
|
-
extend
|
5
|
+
extend Extensions::Lookup
|
6
|
+
include Api::Helpers::AccessMode
|
6
7
|
|
7
8
|
DOCUMENT_TYPES = {
|
8
9
|
undefined: -1,
|
@@ -31,17 +32,17 @@ module GroupDocs
|
|
31
32
|
# @raise [ArgumentError] If path does not start with /
|
32
33
|
#
|
33
34
|
def self.upload!(filepath, upload_path = '/', access = {})
|
34
|
-
|
35
|
-
|
35
|
+
Api::Helpers::Path.verify_starts_with_root(upload_path)
|
36
|
+
Api::Helpers::Path.append_file_name(upload_path, filepath)
|
36
37
|
|
37
|
-
json =
|
38
|
+
json = Api::Request.new do |request|
|
38
39
|
request[:access] = access
|
39
40
|
request[:method] = :POST
|
40
41
|
request[:path] = "/storage/{{client_id}}/folders#{upload_path}"
|
41
42
|
request[:request_body] = Object::File.new(filepath, 'rb')
|
42
43
|
end.execute!
|
43
44
|
|
44
|
-
|
45
|
+
Storage::File.new(json)
|
45
46
|
end
|
46
47
|
|
47
48
|
#
|
@@ -132,6 +133,15 @@ module GroupDocs
|
|
132
133
|
Time.at(@created_on)
|
133
134
|
end
|
134
135
|
|
136
|
+
#
|
137
|
+
# Converts access mode to human-readable format.
|
138
|
+
#
|
139
|
+
# @return [Symbol]
|
140
|
+
#
|
141
|
+
def access
|
142
|
+
parse_access_mode(@access)
|
143
|
+
end
|
144
|
+
|
135
145
|
#
|
136
146
|
# Converts timestamp which is return by API server to Time object.
|
137
147
|
#
|
@@ -151,7 +161,7 @@ module GroupDocs
|
|
151
161
|
# @return [String] Path to downloaded file
|
152
162
|
#
|
153
163
|
def download!(path, access = {})
|
154
|
-
response =
|
164
|
+
response = Api::Request.new do |request|
|
155
165
|
request[:access] = access
|
156
166
|
request[:method] = :DOWNLOAD
|
157
167
|
request[:path] = "/storage/{{client_id}}/files/#{id}"
|
@@ -175,20 +185,18 @@ module GroupDocs
|
|
175
185
|
# @option access [String] :private_key
|
176
186
|
# @return [GroupDocs::Storage::File] Moved to file
|
177
187
|
#
|
178
|
-
# @raise [ArgumentError] If path does not start with /
|
179
|
-
#
|
180
188
|
def move!(path, access = {})
|
181
|
-
|
182
|
-
|
189
|
+
Api::Helpers::Path.verify_starts_with_root(path)
|
190
|
+
Api::Helpers::Path.append_file_name(path, name)
|
183
191
|
|
184
|
-
json =
|
192
|
+
json = Api::Request.new do |request|
|
185
193
|
request[:access] = access
|
186
194
|
request[:method] = :PUT
|
187
195
|
request[:headers] = { :'Groupdocs-Move' => id }
|
188
196
|
request[:path] = "/storage/{{client_id}}/files#{path}"
|
189
197
|
end.execute!
|
190
198
|
|
191
|
-
|
199
|
+
Storage::File.new(json[:dst_file])
|
192
200
|
end
|
193
201
|
|
194
202
|
#
|
@@ -214,20 +222,18 @@ module GroupDocs
|
|
214
222
|
# @option access [String] :private_key
|
215
223
|
# @return [GroupDocs::Storage::File] Copied to file
|
216
224
|
#
|
217
|
-
# @raise [ArgumentError] If path does not start with /
|
218
|
-
#
|
219
225
|
def copy!(path, access = {})
|
220
|
-
|
221
|
-
|
226
|
+
Api::Helpers::Path.verify_starts_with_root(path)
|
227
|
+
Api::Helpers::Path.append_file_name(path, name)
|
222
228
|
|
223
|
-
json =
|
229
|
+
json = Api::Request.new do |request|
|
224
230
|
request[:access] = access
|
225
231
|
request[:method] = :PUT
|
226
232
|
request[:headers] = { :'Groupdocs-Copy' => id }
|
227
233
|
request[:path] = "/storage/{{client_id}}/files#{path}"
|
228
234
|
end.execute!
|
229
235
|
|
230
|
-
|
236
|
+
Storage::File.new(json[:dst_file])
|
231
237
|
end
|
232
238
|
|
233
239
|
#
|
@@ -239,7 +245,7 @@ module GroupDocs
|
|
239
245
|
# @return [GroupDocs::Storage::File] Archive file
|
240
246
|
#
|
241
247
|
def compress!(access = {})
|
242
|
-
json =
|
248
|
+
json = Api::Request.new do |request|
|
243
249
|
request[:access] = access
|
244
250
|
request[:method] = :POST
|
245
251
|
request[:path] = "/storage/{{client_id}}/files/#{id}/archive/zip"
|
@@ -247,7 +253,7 @@ module GroupDocs
|
|
247
253
|
|
248
254
|
# HACK add filename for further file operations
|
249
255
|
json[:name] = "#{name}.zip"
|
250
|
-
|
256
|
+
Storage::File.new(json)
|
251
257
|
end
|
252
258
|
|
253
259
|
#
|
@@ -258,14 +264,11 @@ module GroupDocs
|
|
258
264
|
# @option access [String] :private_key
|
259
265
|
#
|
260
266
|
def delete!(access = {})
|
261
|
-
|
267
|
+
Api::Request.new do |request|
|
262
268
|
request[:access] = access
|
263
269
|
request[:method] = :DELETE
|
264
270
|
request[:path] = "/storage/{{client_id}}/files/#{guid}"
|
265
271
|
end.execute!
|
266
|
-
# TODO: workaround for http://scotland.groupdocs.com/jira/browse/CORE-423
|
267
|
-
rescue RestClient::BadRequest
|
268
|
-
nil
|
269
272
|
end
|
270
273
|
|
271
274
|
#
|
@@ -274,7 +277,7 @@ module GroupDocs
|
|
274
277
|
# @return [GroupDocs::Document]
|
275
278
|
#
|
276
279
|
def to_document
|
277
|
-
|
280
|
+
Document.new(file: self)
|
278
281
|
end
|
279
282
|
|
280
283
|
end # File
|