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.
Files changed (35) hide show
  1. data/lib/groupdocs.rb +1 -0
  2. data/lib/groupdocs/api.rb +0 -1
  3. data/lib/groupdocs/api/helpers.rb +3 -1
  4. data/lib/groupdocs/api/helpers/access_mode_helper.rb +32 -0
  5. data/lib/groupdocs/api/helpers/{access_helper.rb → credentials_helper.rb} +2 -23
  6. data/lib/groupdocs/api/helpers/path_helper.rb +28 -0
  7. data/lib/groupdocs/api/helpers/rest_helper.rb +1 -1
  8. data/lib/groupdocs/api/helpers/url_helper.rb +1 -1
  9. data/lib/groupdocs/api/request.rb +3 -3
  10. data/lib/groupdocs/datasource.rb +6 -6
  11. data/lib/groupdocs/document.rb +34 -34
  12. data/lib/groupdocs/document/annotation.rb +6 -6
  13. data/lib/groupdocs/document/annotation/reply.rb +5 -5
  14. data/lib/groupdocs/extensions.rb +1 -0
  15. data/lib/groupdocs/extensions/lookup.rb +52 -0
  16. data/lib/groupdocs/job.rb +13 -13
  17. data/lib/groupdocs/questionnaire.rb +14 -14
  18. data/lib/groupdocs/questionnaire/execution.rb +3 -3
  19. data/lib/groupdocs/questionnaire/page.rb +1 -1
  20. data/lib/groupdocs/questionnaire/question.rb +1 -1
  21. data/lib/groupdocs/storage.rb +1 -1
  22. data/lib/groupdocs/storage/file.rb +28 -25
  23. data/lib/groupdocs/storage/folder.rb +19 -27
  24. data/lib/groupdocs/storage/package.rb +1 -1
  25. data/lib/groupdocs/version.rb +1 -1
  26. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +49 -0
  27. data/spec/groupdocs/api/helpers/{access_helper_spec.rb → credentials_helpers_spec.rb} +1 -42
  28. data/spec/groupdocs/api/helpers/path_helper_spec.rb +28 -0
  29. data/spec/groupdocs/document_spec.rb +1 -1
  30. data/spec/groupdocs/storage/file_spec.rb +23 -28
  31. data/spec/groupdocs/storage/folder_spec.rb +18 -18
  32. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +12 -0
  33. data/spec/support/shared_examples/{api/sugar → extensions}/lookup.rb +1 -1
  34. metadata +35 -26
  35. data/lib/groupdocs/api/sugar/lookup.rb +0 -57
data/lib/groupdocs.rb CHANGED
@@ -2,6 +2,7 @@ require 'rest-client'
2
2
  require 'groupdocs/version'
3
3
  require 'groupdocs/errors'
4
4
  require 'groupdocs/api'
5
+ require 'groupdocs/extensions'
5
6
  require 'groupdocs/datasource'
6
7
  require 'groupdocs/document'
7
8
  require 'groupdocs/job'
data/lib/groupdocs/api.rb CHANGED
@@ -1,3 +1,2 @@
1
1
  require 'groupdocs/api/entity'
2
2
  require 'groupdocs/api/request'
3
- require 'groupdocs/api/sugar/lookup'
@@ -1,5 +1,7 @@
1
- require 'groupdocs/api/helpers/access_helper'
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 Access
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
@@ -75,7 +75,7 @@ module GroupDocs
75
75
  raise BadResponseError, json[:error_message]
76
76
  end
77
77
 
78
- end # Request
78
+ end # REST
79
79
  end # Helpers
80
80
  end # Api
81
81
  end # GroupDocs
@@ -92,7 +92,7 @@ module GroupDocs
92
92
  end
93
93
  end
94
94
 
95
- end # Query
95
+ end # URL
96
96
  end # Helpers
97
97
  end # Api
98
98
  end # GroupDocs
@@ -5,9 +5,9 @@ module GroupDocs
5
5
  module Api
6
6
  class Request
7
7
 
8
- include GroupDocs::Api::Helpers::Access
9
- include GroupDocs::Api::Helpers::URL
10
- include GroupDocs::Api::Helpers::REST
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
@@ -15,7 +15,7 @@ module GroupDocs
15
15
  # @return [GroupDocs::DataSource, nil]
16
16
  #
17
17
  def self.get!(id, options = {}, access = {})
18
- api = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::DataSource.new(json[:datasource])
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
- GroupDocs::DataSource::Field.new(field)
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Api::Request.new do |request|
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}"
@@ -8,9 +8,9 @@ module GroupDocs
8
8
  require 'groupdocs/document/rectangle'
9
9
  require 'groupdocs/document/view'
10
10
 
11
- extend GroupDocs::Api::Sugar::Lookup
12
- include GroupDocs::Api::Helpers::Access
13
- include GroupDocs::Api::Helpers::Status
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
- GroupDocs::Storage::File.all!(path, access).map(&:to_document)
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Document::View.new(view)
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 = GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Document::MetaData.new do |metadata|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Document::Field.new(field)
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::User.new(user)
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::User.new(user)
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
- GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Job.new(id: json[:job_id])
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Job.new(id: json[:job_id])
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Questionnaire.new(questionnaire)
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
- GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Document::Annotation.new(annotation)
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 = GroupDocs::Api::Request.new do |request|
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Job.new(id: json[:job_id])
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 = GroupDocs::Api::Request.new do |request|
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
- GroupDocs::Document::Change.new(change)
496
+ Document::Change.new(change)
497
497
  end
498
498
  end
499
499