groupdocs 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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