groupdocs 0.2 → 0.2.1
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.
- 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
|
|