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
data/lib/groupdocs.rb
CHANGED
data/lib/groupdocs/api.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
require 'groupdocs/api/helpers/
|
1
|
+
require 'groupdocs/api/helpers/access_mode_helper'
|
2
2
|
require 'groupdocs/api/helpers/actions_helper'
|
3
|
+
require 'groupdocs/api/helpers/credentials_helper'
|
4
|
+
require 'groupdocs/api/helpers/path_helper'
|
3
5
|
require 'groupdocs/api/helpers/rest_helper'
|
4
6
|
require 'groupdocs/api/helpers/status_helper'
|
5
7
|
require 'groupdocs/api/helpers/url_helper'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module GroupDocs
|
2
|
+
module Api
|
3
|
+
module Helpers
|
4
|
+
module AccessMode
|
5
|
+
|
6
|
+
MODES = {
|
7
|
+
private: 0,
|
8
|
+
restricted: 1,
|
9
|
+
public: 2
|
10
|
+
}
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
#
|
15
|
+
# Converts access mode from/to human-readable format.
|
16
|
+
#
|
17
|
+
# @param [Integer, Symbol] mode
|
18
|
+
# @return [Symbol, Integer]
|
19
|
+
# @api private
|
20
|
+
#
|
21
|
+
def parse_access_mode(mode)
|
22
|
+
if mode.is_a?(Integer)
|
23
|
+
MODES.invert[mode]
|
24
|
+
else
|
25
|
+
MODES[mode]
|
26
|
+
end or raise ArgumentError, "Unknown access mode: #{mode.inspect}."
|
27
|
+
end
|
28
|
+
|
29
|
+
end # AccessMode
|
30
|
+
end # Helpers
|
31
|
+
end # Api
|
32
|
+
end # GroupDocs
|
@@ -1,13 +1,7 @@
|
|
1
1
|
module GroupDocs
|
2
2
|
module Api
|
3
3
|
module Helpers
|
4
|
-
module
|
5
|
-
|
6
|
-
MODES = {
|
7
|
-
private: 0,
|
8
|
-
restricted: 1,
|
9
|
-
public: 2
|
10
|
-
}
|
4
|
+
module Credentials
|
11
5
|
|
12
6
|
private
|
13
7
|
|
@@ -35,22 +29,7 @@ module GroupDocs
|
|
35
29
|
private_key or raise NoPrivateKeyError, 'Private Key has not been specified.'
|
36
30
|
end
|
37
31
|
|
38
|
-
|
39
|
-
# Converts access mode from/to human-readable format.
|
40
|
-
#
|
41
|
-
# @param [Integer, Symbol] mode
|
42
|
-
# @return [Symbol, Integer]
|
43
|
-
# @api private
|
44
|
-
#
|
45
|
-
def parse_access_mode(mode)
|
46
|
-
if mode.is_a?(Integer)
|
47
|
-
MODES.invert[mode]
|
48
|
-
else
|
49
|
-
MODES[mode]
|
50
|
-
end or raise ArgumentError, "Unknown access mode: #{mode.inspect}."
|
51
|
-
end
|
52
|
-
|
53
|
-
end # Access
|
32
|
+
end # Credentials
|
54
33
|
end # Helpers
|
55
34
|
end # Api
|
56
35
|
end # GroupDocs
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module GroupDocs
|
2
|
+
module Api
|
3
|
+
module Helpers
|
4
|
+
module Path
|
5
|
+
|
6
|
+
#
|
7
|
+
# Verifies path starts with root.
|
8
|
+
#
|
9
|
+
# @raise [ArgumentError] If path does not start with /
|
10
|
+
# @api private
|
11
|
+
#
|
12
|
+
def self.verify_starts_with_root(path)
|
13
|
+
path.chars.first == '/' or raise ArgumentError, "Path should start with /: #{path.inspect}"
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
# Appends file name to path if it's not present.
|
18
|
+
#
|
19
|
+
# @api private
|
20
|
+
#
|
21
|
+
def self.append_file_name(path, name)
|
22
|
+
path << "/#{Object::File.basename(name)}" unless /\.(\w){3,4}$/ === path
|
23
|
+
end
|
24
|
+
|
25
|
+
end # Path
|
26
|
+
end # Helpers
|
27
|
+
end # Api
|
28
|
+
end # GroupDocs
|
@@ -5,9 +5,9 @@ module GroupDocs
|
|
5
5
|
module Api
|
6
6
|
class Request
|
7
7
|
|
8
|
-
include
|
9
|
-
include
|
10
|
-
include
|
8
|
+
include Api::Helpers::Credentials
|
9
|
+
include Api::Helpers::URL
|
10
|
+
include Api::Helpers::REST
|
11
11
|
|
12
12
|
# @attr_reader [RestClient::Resource] resource Entry point for all API requests
|
13
13
|
attr_reader :resource
|
data/lib/groupdocs/datasource.rb
CHANGED
@@ -15,7 +15,7 @@ module GroupDocs
|
|
15
15
|
# @return [GroupDocs::DataSource, nil]
|
16
16
|
#
|
17
17
|
def self.get!(id, options = {}, access = {})
|
18
|
-
api =
|
18
|
+
api = Api::Request.new do |request|
|
19
19
|
request[:access] = access
|
20
20
|
request[:method] = :GET
|
21
21
|
request[:path] = "/merge/{{client_id}}/datasources/#{id}"
|
@@ -23,7 +23,7 @@ module GroupDocs
|
|
23
23
|
api.add_params(options)
|
24
24
|
json = api.execute!
|
25
25
|
|
26
|
-
|
26
|
+
DataSource.new(json[:datasource])
|
27
27
|
rescue BadResponseError
|
28
28
|
nil
|
29
29
|
end
|
@@ -74,7 +74,7 @@ module GroupDocs
|
|
74
74
|
if field.is_a?(GroupDocs::DataSource::Field)
|
75
75
|
field
|
76
76
|
else
|
77
|
-
|
77
|
+
DataSource::Field.new(field)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
@@ -108,7 +108,7 @@ module GroupDocs
|
|
108
108
|
# @option access [String] :private_key
|
109
109
|
#
|
110
110
|
def add!(access = {})
|
111
|
-
json =
|
111
|
+
json = Api::Request.new do |request|
|
112
112
|
request[:access] = access
|
113
113
|
request[:method] = :POST
|
114
114
|
request[:path] = '/merge/{{client_id}}/datasources'
|
@@ -132,7 +132,7 @@ module GroupDocs
|
|
132
132
|
# @option access [String] :private_key
|
133
133
|
#
|
134
134
|
def update!(access = {})
|
135
|
-
|
135
|
+
Api::Request.new do |request|
|
136
136
|
request[:access] = access
|
137
137
|
request[:method] = :PUT
|
138
138
|
request[:path] = "/merge/{{client_id}}/datasources/#{id}"
|
@@ -148,7 +148,7 @@ module GroupDocs
|
|
148
148
|
# @option access [String] :private_key
|
149
149
|
#
|
150
150
|
def remove!(access = {})
|
151
|
-
|
151
|
+
Api::Request.new do |request|
|
152
152
|
request[:access] = access
|
153
153
|
request[:method] = :DELETE
|
154
154
|
request[:path] = "/merge/{{client_id}}/datasources/#{id}"
|
data/lib/groupdocs/document.rb
CHANGED
@@ -8,9 +8,9 @@ module GroupDocs
|
|
8
8
|
require 'groupdocs/document/rectangle'
|
9
9
|
require 'groupdocs/document/view'
|
10
10
|
|
11
|
-
extend
|
12
|
-
include
|
13
|
-
include
|
11
|
+
extend Extensions::Lookup
|
12
|
+
include Api::Helpers::AccessMode
|
13
|
+
include Api::Helpers::Status
|
14
14
|
|
15
15
|
#
|
16
16
|
# Returns an array of all documents on server.
|
@@ -22,7 +22,7 @@ module GroupDocs
|
|
22
22
|
# @return [Array<GroupDocs::Storage::Document>]
|
23
23
|
#
|
24
24
|
def self.all!(path = '/', access = {})
|
25
|
-
|
25
|
+
Storage::File.all!(path, access).map(&:to_document)
|
26
26
|
end
|
27
27
|
|
28
28
|
#
|
@@ -37,7 +37,7 @@ module GroupDocs
|
|
37
37
|
# @return [Array<GroupDocs::Document::View>]
|
38
38
|
#
|
39
39
|
def self.views!(options = { page_index: 0 }, access = {})
|
40
|
-
api =
|
40
|
+
api = Api::Request.new do |request|
|
41
41
|
request[:access] = access
|
42
42
|
request[:method] = :GET
|
43
43
|
request[:path] = "/doc/{{client_id}}/views"
|
@@ -46,7 +46,7 @@ module GroupDocs
|
|
46
46
|
json = api.execute!
|
47
47
|
|
48
48
|
json[:views].map do |view|
|
49
|
-
|
49
|
+
Document::View.new(view)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -92,7 +92,7 @@ module GroupDocs
|
|
92
92
|
# @return [Symbol] One of :private, :restricted or :public access modes
|
93
93
|
#
|
94
94
|
def access_mode!(access = {})
|
95
|
-
json =
|
95
|
+
json = Api::Request.new do |request|
|
96
96
|
request[:access] = access
|
97
97
|
request[:method] = :GET
|
98
98
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
|
@@ -111,7 +111,7 @@ module GroupDocs
|
|
111
111
|
# @return [Symbol] Set access mode
|
112
112
|
#
|
113
113
|
def access_mode_set!(mode, access = {})
|
114
|
-
api =
|
114
|
+
api = Api::Request.new do |request|
|
115
115
|
request[:access] = access
|
116
116
|
request[:method] = :PUT
|
117
117
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
|
@@ -133,7 +133,7 @@ module GroupDocs
|
|
133
133
|
# @return [Array<Symbol>]
|
134
134
|
#
|
135
135
|
def formats!(access = {})
|
136
|
-
json =
|
136
|
+
json = Api::Request.new do |request|
|
137
137
|
request[:access] = access
|
138
138
|
request[:method] = :GET
|
139
139
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/formats"
|
@@ -153,13 +153,13 @@ module GroupDocs
|
|
153
153
|
# @return [GroupDocs::Document::MetaData]
|
154
154
|
#
|
155
155
|
def metadata!(access = {})
|
156
|
-
json =
|
156
|
+
json = Api::Request.new do |request|
|
157
157
|
request[:access] = access
|
158
158
|
request[:method] = :GET
|
159
159
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/metadata"
|
160
160
|
end.execute!
|
161
161
|
|
162
|
-
|
162
|
+
Document::MetaData.new do |metadata|
|
163
163
|
metadata.id = json[:id]
|
164
164
|
metadata.guid = json[:guid]
|
165
165
|
metadata.page_count = json[:page_count]
|
@@ -182,7 +182,7 @@ module GroupDocs
|
|
182
182
|
# @return [Array<GroupDocs::Document::Field>]
|
183
183
|
#
|
184
184
|
def fields!(options = {}, access = {})
|
185
|
-
api =
|
185
|
+
api = Api::Request.new do |request|
|
186
186
|
request[:access] = access
|
187
187
|
request[:method] = :GET
|
188
188
|
request[:path] = "/doc/{{client_id}}/files/#{file.guid}/fields"
|
@@ -191,7 +191,7 @@ module GroupDocs
|
|
191
191
|
json = api.execute!
|
192
192
|
|
193
193
|
json[:fields].map do |field|
|
194
|
-
|
194
|
+
Document::Field.new(field)
|
195
195
|
end
|
196
196
|
end
|
197
197
|
|
@@ -204,14 +204,14 @@ module GroupDocs
|
|
204
204
|
# @return [Array<GroupDocs::User>]
|
205
205
|
#
|
206
206
|
def sharers!(access = {})
|
207
|
-
json =
|
207
|
+
json = Api::Request.new do |request|
|
208
208
|
request[:access] = access
|
209
209
|
request[:method] = :GET
|
210
210
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/accessinfo"
|
211
211
|
end.execute!
|
212
212
|
|
213
213
|
json[:sharers].map do |user|
|
214
|
-
|
214
|
+
User.new(user)
|
215
215
|
end
|
216
216
|
end
|
217
217
|
|
@@ -230,7 +230,7 @@ module GroupDocs
|
|
230
230
|
if emails.nil? || emails.empty?
|
231
231
|
sharers_clear!(access)
|
232
232
|
else
|
233
|
-
json =
|
233
|
+
json = Api::Request.new do |request|
|
234
234
|
request[:access] = access
|
235
235
|
request[:method] = :PUT
|
236
236
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers"
|
@@ -238,7 +238,7 @@ module GroupDocs
|
|
238
238
|
end.execute!
|
239
239
|
|
240
240
|
json[:shared_users].map do |user|
|
241
|
-
|
241
|
+
User.new(user)
|
242
242
|
end
|
243
243
|
end
|
244
244
|
end
|
@@ -252,7 +252,7 @@ module GroupDocs
|
|
252
252
|
# @return nil
|
253
253
|
#
|
254
254
|
def sharers_clear!(access = {})
|
255
|
-
|
255
|
+
Api::Request.new do |request|
|
256
256
|
request[:access] = access
|
257
257
|
request[:method] = :DELETE
|
258
258
|
request[:path] = "/doc/{{client_id}}/files/#{file.id}/sharers"
|
@@ -273,7 +273,7 @@ module GroupDocs
|
|
273
273
|
def convert!(format, options = {}, access = {})
|
274
274
|
options.merge!(new_type: format)
|
275
275
|
|
276
|
-
api =
|
276
|
+
api = Api::Request.new do |request|
|
277
277
|
request[:access] = access
|
278
278
|
request[:method] = :POST
|
279
279
|
request[:path] = "/{{client_id}}/files/#{file.guid}"
|
@@ -281,7 +281,7 @@ module GroupDocs
|
|
281
281
|
api.add_params(options)
|
282
282
|
json = api.execute!
|
283
283
|
|
284
|
-
|
284
|
+
Job.new(id: json[:job_id])
|
285
285
|
end
|
286
286
|
|
287
287
|
#
|
@@ -305,7 +305,7 @@ module GroupDocs
|
|
305
305
|
(options[:new_type].nil? || options[:email_results].nil?) and raise ArgumentError,
|
306
306
|
"Both :new_type and :email_results should be passed, received: #{options.inspect}"
|
307
307
|
|
308
|
-
api =
|
308
|
+
api = Api::Request.new do |request|
|
309
309
|
request[:access] = access
|
310
310
|
request[:method] = :POST
|
311
311
|
request[:path] = "/merge/{{client_id}}/files/#{file.guid}/datasources/#{datasource.id}"
|
@@ -313,7 +313,7 @@ module GroupDocs
|
|
313
313
|
api.add_params(options)
|
314
314
|
json = api.execute!
|
315
315
|
|
316
|
-
|
316
|
+
Job.new(id: json[:job_id])
|
317
317
|
end
|
318
318
|
|
319
319
|
#
|
@@ -325,14 +325,14 @@ module GroupDocs
|
|
325
325
|
# @return [Array<GroupDocs::Questionnaire>]
|
326
326
|
#
|
327
327
|
def questionnaires!(access = {})
|
328
|
-
json =
|
328
|
+
json = Api::Request.new do |request|
|
329
329
|
request[:access] = access
|
330
330
|
request[:method] = :GET
|
331
331
|
request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires"
|
332
332
|
end.execute!
|
333
333
|
|
334
334
|
json[:questionnaires].map do |questionnaire|
|
335
|
-
|
335
|
+
Questionnaire.new(questionnaire)
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
@@ -350,7 +350,7 @@ module GroupDocs
|
|
350
350
|
questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
|
351
351
|
"Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
|
352
352
|
|
353
|
-
|
353
|
+
Api::Request.new do |request|
|
354
354
|
request[:access] = access
|
355
355
|
request[:method] = :PUT
|
356
356
|
request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}"
|
@@ -372,7 +372,7 @@ module GroupDocs
|
|
372
372
|
questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
|
373
373
|
"Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
|
374
374
|
|
375
|
-
json =
|
375
|
+
json = Api::Request.new do |request|
|
376
376
|
request[:access] = access
|
377
377
|
request[:method] = :POST
|
378
378
|
request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires"
|
@@ -397,7 +397,7 @@ module GroupDocs
|
|
397
397
|
questionnaire.is_a?(GroupDocs::Questionnaire) or raise ArgumentError,
|
398
398
|
"Questionnaire should be GroupDocs::Questionnaire object, received: #{questionnaire.inspect}"
|
399
399
|
|
400
|
-
|
400
|
+
Api::Request.new do |request|
|
401
401
|
request[:access] = access
|
402
402
|
request[:method] = :DELETE
|
403
403
|
request[:path] = "/merge/{{client_id}}/files/#{file.guid}/questionnaires/#{questionnaire.id}"
|
@@ -413,7 +413,7 @@ module GroupDocs
|
|
413
413
|
# @return [Array<GroupDocs::Document::Annotation>]
|
414
414
|
#
|
415
415
|
def annotations!(access = {})
|
416
|
-
json =
|
416
|
+
json = Api::Request.new do |request|
|
417
417
|
request[:access] = access
|
418
418
|
request[:method] = :GET
|
419
419
|
request[:path] = "/ant/{{client_id}}/files/#{file.guid}/annotations"
|
@@ -421,7 +421,7 @@ module GroupDocs
|
|
421
421
|
|
422
422
|
json[:annotations].map do |annotation|
|
423
423
|
annotation.merge!(document: self)
|
424
|
-
|
424
|
+
Document::Annotation.new(annotation)
|
425
425
|
end
|
426
426
|
end
|
427
427
|
|
@@ -434,7 +434,7 @@ module GroupDocs
|
|
434
434
|
# @return [Hash]
|
435
435
|
#
|
436
436
|
def details!(access = {})
|
437
|
-
api =
|
437
|
+
api = Api::Request.new do |request|
|
438
438
|
request[:access] = access
|
439
439
|
request[:method] = :GET
|
440
440
|
request[:path] = "/comparison/{{client_id}}/comparison/document"
|
@@ -458,7 +458,7 @@ module GroupDocs
|
|
458
458
|
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
459
459
|
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
460
460
|
|
461
|
-
api =
|
461
|
+
api = Api::Request.new do |request|
|
462
462
|
request[:access] = access
|
463
463
|
request[:method] = :GET
|
464
464
|
request[:path] = "/comparison/{{client_id}}/comparison/compare"
|
@@ -466,7 +466,7 @@ module GroupDocs
|
|
466
466
|
api.add_params(source: file.guid, target: document.file.guid)
|
467
467
|
json = api.execute!
|
468
468
|
|
469
|
-
|
469
|
+
Job.new(id: json[:job_id])
|
470
470
|
end
|
471
471
|
|
472
472
|
#
|
@@ -484,7 +484,7 @@ module GroupDocs
|
|
484
484
|
# @option access [String] :private_key
|
485
485
|
#
|
486
486
|
def changes!(access = {})
|
487
|
-
api =
|
487
|
+
api = Api::Request.new do |request|
|
488
488
|
request[:access] = access
|
489
489
|
request[:method] = :GET
|
490
490
|
request[:path] = "/comparison/{{client_id}}/comparison/changes"
|
@@ -493,7 +493,7 @@ module GroupDocs
|
|
493
493
|
json = api.execute!
|
494
494
|
|
495
495
|
json[:changes].map do |change|
|
496
|
-
|
496
|
+
Document::Change.new(change)
|
497
497
|
end
|
498
498
|
end
|
499
499
|
|