groupdocs 0.1.0

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 (129) hide show
  1. data/.travis.yml +5 -0
  2. data/Gemfile +3 -0
  3. data/README.md +141 -0
  4. data/Rakefile +9 -0
  5. data/groupdocs.gemspec +28 -0
  6. data/lib/groupdocs.rb +53 -0
  7. data/lib/groupdocs/api.rb +3 -0
  8. data/lib/groupdocs/api/entity.rb +113 -0
  9. data/lib/groupdocs/api/helpers.rb +5 -0
  10. data/lib/groupdocs/api/helpers/access_helper.rb +56 -0
  11. data/lib/groupdocs/api/helpers/actions_helper.rb +48 -0
  12. data/lib/groupdocs/api/helpers/rest_helper.rb +89 -0
  13. data/lib/groupdocs/api/helpers/status_helper.rb +48 -0
  14. data/lib/groupdocs/api/helpers/url_helper.rb +89 -0
  15. data/lib/groupdocs/api/request.rb +73 -0
  16. data/lib/groupdocs/api/sugar/lookup.rb +48 -0
  17. data/lib/groupdocs/datasource.rb +162 -0
  18. data/lib/groupdocs/datasource/field.rb +44 -0
  19. data/lib/groupdocs/document.rb +513 -0
  20. data/lib/groupdocs/document/annotation.rb +215 -0
  21. data/lib/groupdocs/document/annotation/reply.rb +167 -0
  22. data/lib/groupdocs/document/change.rb +35 -0
  23. data/lib/groupdocs/document/field.rb +27 -0
  24. data/lib/groupdocs/document/metadata.rb +26 -0
  25. data/lib/groupdocs/document/rectangle.rb +24 -0
  26. data/lib/groupdocs/document/view.rb +36 -0
  27. data/lib/groupdocs/errors.rb +10 -0
  28. data/lib/groupdocs/job.rb +201 -0
  29. data/lib/groupdocs/questionnaire.rb +221 -0
  30. data/lib/groupdocs/questionnaire/execution.rb +120 -0
  31. data/lib/groupdocs/questionnaire/page.rb +43 -0
  32. data/lib/groupdocs/questionnaire/question.rb +75 -0
  33. data/lib/groupdocs/questionnaire/question/answer.rb +10 -0
  34. data/lib/groupdocs/storage.rb +37 -0
  35. data/lib/groupdocs/storage/file.rb +248 -0
  36. data/lib/groupdocs/storage/folder.rb +314 -0
  37. data/lib/groupdocs/storage/package.rb +42 -0
  38. data/lib/groupdocs/user.rb +50 -0
  39. data/lib/groupdocs/version.rb +3 -0
  40. data/spec/groupdocs/api/entity_spec.rb +54 -0
  41. data/spec/groupdocs/api/helpers/access_helper_spec.rb +89 -0
  42. data/spec/groupdocs/api/helpers/actions_helper_spec.rb +51 -0
  43. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +187 -0
  44. data/spec/groupdocs/api/helpers/status_helper_spec.rb +85 -0
  45. data/spec/groupdocs/api/helpers/url_helper_spec.rb +93 -0
  46. data/spec/groupdocs/api/request_spec.rb +85 -0
  47. data/spec/groupdocs/datasource/field_spec.rb +50 -0
  48. data/spec/groupdocs/datasource_spec.rb +156 -0
  49. data/spec/groupdocs/document/annotation/reply_spec.rb +179 -0
  50. data/spec/groupdocs/document/annotation_spec.rb +226 -0
  51. data/spec/groupdocs/document/change_spec.rb +35 -0
  52. data/spec/groupdocs/document/field_spec.rb +31 -0
  53. data/spec/groupdocs/document/metadata_spec.rb +26 -0
  54. data/spec/groupdocs/document/rectangle_spec.rb +34 -0
  55. data/spec/groupdocs/document/view_spec.rb +36 -0
  56. data/spec/groupdocs/document_spec.rb +509 -0
  57. data/spec/groupdocs/errors_spec.rb +7 -0
  58. data/spec/groupdocs/job_spec.rb +196 -0
  59. data/spec/groupdocs/questionnaire/execution_spec.rb +136 -0
  60. data/spec/groupdocs/questionnaire/page_spec.rb +50 -0
  61. data/spec/groupdocs/questionnaire/question/answer_spec.rb +11 -0
  62. data/spec/groupdocs/questionnaire/question_spec.rb +84 -0
  63. data/spec/groupdocs/questionnaire_spec.rb +217 -0
  64. data/spec/groupdocs/storage/file_spec.rb +242 -0
  65. data/spec/groupdocs/storage/folder_spec.rb +310 -0
  66. data/spec/groupdocs/storage/package_spec.rb +41 -0
  67. data/spec/groupdocs/storage_spec.rb +27 -0
  68. data/spec/groupdocs/user_spec.rb +53 -0
  69. data/spec/groupdocs_spec.rb +56 -0
  70. data/spec/spec_helper.rb +46 -0
  71. data/spec/support/files/resume.pdf +0 -0
  72. data/spec/support/json/annotation_collaborators_set.json +16 -0
  73. data/spec/support/json/annotation_create.json +12 -0
  74. data/spec/support/json/annotation_list.json +32 -0
  75. data/spec/support/json/annotation_remove.json +9 -0
  76. data/spec/support/json/annotation_replies_create.json +9 -0
  77. data/spec/support/json/annotation_replies_get.json +25 -0
  78. data/spec/support/json/comparison_changes.json +46 -0
  79. data/spec/support/json/comparison_compare.json +8 -0
  80. data/spec/support/json/comparison_document.json +10 -0
  81. data/spec/support/json/datasource_add.json +8 -0
  82. data/spec/support/json/datasource_get.json +22 -0
  83. data/spec/support/json/datasource_remove.json +8 -0
  84. data/spec/support/json/datasource_update.json +8 -0
  85. data/spec/support/json/document_access_info_get.json +14 -0
  86. data/spec/support/json/document_convert.json +8 -0
  87. data/spec/support/json/document_datasource.json +10 -0
  88. data/spec/support/json/document_fields.json +34 -0
  89. data/spec/support/json/document_formats.json +8 -0
  90. data/spec/support/json/document_metadata.json +15 -0
  91. data/spec/support/json/document_questionnaire_create.json +9 -0
  92. data/spec/support/json/document_questionnaires.json +23 -0
  93. data/spec/support/json/document_sharers_remove.json +8 -0
  94. data/spec/support/json/document_sharers_set.json +16 -0
  95. data/spec/support/json/document_views.json +32 -0
  96. data/spec/support/json/file_compress.json +8 -0
  97. data/spec/support/json/file_copy.json +14 -0
  98. data/spec/support/json/file_delete.json +5 -0
  99. data/spec/support/json/file_move.json +14 -0
  100. data/spec/support/json/file_upload.json +8 -0
  101. data/spec/support/json/folder_create.json +8 -0
  102. data/spec/support/json/folder_delete.json +5 -0
  103. data/spec/support/json/folder_list.json +21 -0
  104. data/spec/support/json/folder_move.json +8 -0
  105. data/spec/support/json/folder_sharers_get.json +16 -0
  106. data/spec/support/json/folder_sharers_remove.json +8 -0
  107. data/spec/support/json/folder_sharers_set.json +16 -0
  108. data/spec/support/json/job_add_url.json +8 -0
  109. data/spec/support/json/job_create.json +8 -0
  110. data/spec/support/json/job_documents.json +39 -0
  111. data/spec/support/json/job_file_add.json +8 -0
  112. data/spec/support/json/job_update.json +7 -0
  113. data/spec/support/json/jobs_get.json +52 -0
  114. data/spec/support/json/package_create.json +7 -0
  115. data/spec/support/json/questionnaire_create.json +8 -0
  116. data/spec/support/json/questionnaire_datasources.json +26 -0
  117. data/spec/support/json/questionnaire_execution_create.json +9 -0
  118. data/spec/support/json/questionnaire_execution_status_set.json +8 -0
  119. data/spec/support/json/questionnaire_execution_update.json +8 -0
  120. data/spec/support/json/questionnaire_executions.json +24 -0
  121. data/spec/support/json/questionnaire_get.json +14 -0
  122. data/spec/support/json/questionnaire_remove.json +8 -0
  123. data/spec/support/json/questionnaire_update.json +8 -0
  124. data/spec/support/json/questionnaires_get.json +22 -0
  125. data/spec/support/json/storage_info.json +10 -0
  126. data/spec/support/shared_examples/api/entity.rb +37 -0
  127. data/spec/support/shared_examples/api/helpers/status_helper.rb +12 -0
  128. data/spec/support/shared_examples/api/sugar/lookup.rb +57 -0
  129. metadata +356 -0
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - ruby-head
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
@@ -0,0 +1,141 @@
1
+ ## GroupDocs [![Build Status](https://secure.travis-ci.org/p0deje/groupdocs-ruby.png)](http://travis-ci.org/p0deje/groupdocs-ruby)
2
+
3
+ Ruby SDK for [GroupDocs](http://groupdocs.com) REST API.
4
+
5
+ ## Installation
6
+
7
+ GroupDocs requires Ruby 1.9. Ruby 1.8 is not supported!
8
+
9
+ Install as usually
10
+
11
+ gem install groupdocs
12
+
13
+ Installing from source
14
+
15
+ gem install bundler # unless it's already installed
16
+ git clone git@github.com:p0deje/groupdocs-ruby.git
17
+ cd groupdocs-ruby/
18
+ git checkout master
19
+ bundle install --path vendor/bundle
20
+ bundle exec rake install
21
+
22
+ ## Usage
23
+
24
+ All "bang" methods (ending with exclamation sign) imply interaction with API server.
25
+
26
+ Other methods (with expect to some methods - see documentation) do not operate with API Server
27
+
28
+ ### Configuration
29
+
30
+ First of all you need to configure your access to API server.
31
+
32
+ ```ruby
33
+ require 'groupdocs'
34
+
35
+ GroupDocs.configure do |groupdocs|
36
+ groupdocs.client_id = 'your_client_id'
37
+ groupdocs.private_key = 'your_private_key'
38
+ # optionally specify API server and version
39
+ groupdocs.api_server = 'https://dev-api.groupdocs.com'
40
+ groupdocs.api_version = '2.0'
41
+ end
42
+
43
+ GroupDocs::Storage::Folder.create!('/folder')
44
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @id=1, @name="folder", @url="http://groupdocs.com">
45
+ ```
46
+
47
+ You can also pass access credentials to particular requests
48
+
49
+ ```ruby
50
+ GroupDocs::Storage::Folder.create!('/folder', client_id: 'your_client_id', private_key: 'your_private_key')
51
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @id=1, @name="folder", @url="http://groupdocs.com">
52
+
53
+ GroupDocs::Document.find!(:name, 'CV.doc', client_id: 'your_client_id', private_key: 'your_private_key')
54
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @id=1, @name="Folder1", @url="http://groupdocs.com">
55
+ ```
56
+
57
+ ### Entities
58
+
59
+ All entities can be initialized in several ways.
60
+
61
+ * Object is created, attributes are set later.
62
+
63
+ ```ruby
64
+ folder = GroupDocs::Storage::Folder.new
65
+ folder.name = 'Folder'
66
+ folder.inspect
67
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @name="Folder">
68
+ ```
69
+
70
+ * Hash of attributes are passed to object constructor.
71
+
72
+ ```ruby
73
+ GroupDocs::Storage::Folder.new(name: 'Folder')
74
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @name="Folder">
75
+ ```
76
+
77
+ * Block is passed to object constructor.
78
+
79
+ ```ruby
80
+ GroupDocs::Storage::Folder.new do |folder|
81
+ folder.name = 'Folder'
82
+ end
83
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @name="Folder">
84
+ ```
85
+
86
+ ### Find entities
87
+
88
+ Some entities support `#all!`, `#find!` and `#find_all!` methods. You can pass any attribute that object responds to and its value to find with.
89
+
90
+ * List all files
91
+
92
+ ```ruby
93
+ GroupDocs::Storage::File.all!
94
+ #=> [#<GroupDocs::Storage::File:0x0000000171f432 @id=123, @guid="uhfsa9dry29rhfodn", @name="resume.pdf", @url="http://groupdocs.com">, #<GroupDocs::Storage::File:0x0000000171f498 @id=456, @guid="soif97sr9u24bfosd9", @name="CV.doc", @url="http://groupdocs.com">]
95
+ ```
96
+
97
+ * Find folder with name `Folder1`
98
+
99
+ ```ruby
100
+ GroupDocs::Storage::Folder.find!(:name, 'Folder1')
101
+ #=> #<GroupDocs::Storage::Folder:0x0000000171f432 @id=1, @name="Folder1", @url="http://groupdocs.com">
102
+ ```
103
+
104
+ * Find all folders which name starts with `Folder`
105
+
106
+ ```ruby
107
+ GroupDocs::Storage::Folder.find_all!(:name, /^Folder/)
108
+ #=> [#<GroupDocs::Storage::Folder:0x0000000171f432 @id=1, @name="Folder1", @url="http://groupdocs.com">, #<GroupDocs::Storage::Folder:0x0000000171f467 @id=2, @name="Folder2", @url="http://groupdocs.com">]
109
+ ```
110
+
111
+ ### Annotation API
112
+
113
+ Read more about examples of using Annotation API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Annotation-API).
114
+
115
+ ### Assembly API
116
+
117
+ Read more about examples of using Assembly API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Assembly-API).
118
+
119
+ ### Comparison API
120
+
121
+ Read more about examples of using Comparison API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Comparison-API).
122
+
123
+ ### Document API
124
+
125
+ Read more about examples of using Document API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Document-API).
126
+
127
+ ### Job API
128
+
129
+ Read more about examples of using Job API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Job-API).
130
+
131
+ ### Signature API
132
+
133
+ Not yet implemented.
134
+
135
+ ### Storage API
136
+
137
+ Read more about examples of using Storage API on [wiki](https://github.com/p0deje/groupdocs-ruby/wiki/Storage-API).
138
+
139
+ ### Copyright
140
+
141
+ Copyright (c) 2012 Aspose Inc.
@@ -0,0 +1,9 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new do |spec|
5
+ spec.rspec_opts = %w(--color)
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task default: :spec
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH.unshift(File.expand_path('../lib', __FILE__))
3
+ require "groupdocs/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'groupdocs'
7
+ s.version = GroupDocs::VERSION
8
+ s.authors = 'Alex Rodionov'
9
+ s.email = 'p0deje@gmail.com'
10
+ s.homepage = 'https://github.com/p0deje/groupdocs-ruby'
11
+ s.summary = 'Ruby SDK for GroupDocs REST API'
12
+ s.description = 'Ruby SDK for GroupDocs REST API'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
17
+ s.require_path = 'lib'
18
+
19
+ s.add_runtime_dependency 'rest-client', '~> 1.6'
20
+ s.add_runtime_dependency 'json' , '~> 1.6'
21
+ s.add_runtime_dependency 'ruby-hmac' , '~> 0.4'
22
+
23
+ s.add_development_dependency 'rspec' , '~> 2.9'
24
+ s.add_development_dependency 'rake' , '~> 0.9'
25
+ s.add_development_dependency 'simplecov', '~> 0.6'
26
+ s.add_development_dependency 'yard' , '~> 0.7'
27
+ s.add_development_dependency 'webmock' , '~> 1.8'
28
+ end
@@ -0,0 +1,53 @@
1
+ require 'groupdocs/version'
2
+ require 'groupdocs/errors'
3
+ require 'groupdocs/api'
4
+ require 'groupdocs/datasource'
5
+ require 'groupdocs/document'
6
+ require 'groupdocs/job'
7
+ require 'groupdocs/questionnaire'
8
+ require 'groupdocs/storage'
9
+ require 'groupdocs/user'
10
+
11
+ module GroupDocs
12
+ class << self
13
+
14
+ # @attr [String] client_id Client ID
15
+ attr_accessor :client_id
16
+
17
+ # @attr [String] private_key Private key
18
+ attr_accessor :private_key
19
+
20
+ # @attr [String] api_server API server
21
+ attr_accessor :api_server
22
+
23
+ # @attr [String] api_version Version of API server
24
+ attr_accessor :api_version
25
+
26
+ #
27
+ # Returns hostname of API server.
28
+ #
29
+ # @return [String] API hostname. Default one if it has not been explicitly set
30
+ #
31
+ def api_server
32
+ @api_server || 'https://api.groupdocs.com'
33
+ end
34
+
35
+ #
36
+ # Calls block for configuration of GroupDocs.
37
+ #
38
+ # @example
39
+ # GroupDocs.configure do |groupdocs|
40
+ # groupdocs.client_id = '07aaaf95f8eb33a4'
41
+ # groupdocs.private_key = '5cb711b3a52ffc5d90ee8a0f79206f5a'
42
+ # groupdocs.api_server = 'https://api.groupdocs.com'
43
+ # groupdocs.api_version = '2.0'
44
+ # end
45
+ #
46
+ # @yield [GroupDocs]
47
+ #
48
+ def configure(&blk)
49
+ yield self
50
+ end
51
+
52
+ end # << self
53
+ end # GroupDocs
@@ -0,0 +1,3 @@
1
+ require 'groupdocs/api/entity'
2
+ require 'groupdocs/api/request'
3
+ require 'groupdocs/api/sugar/lookup'
@@ -0,0 +1,113 @@
1
+ module GroupDocs
2
+ module Api
3
+ class Entity
4
+
5
+ #
6
+ # Implements flexible API object creation.
7
+ #
8
+ # You can pass hash of options to automatically set attributes.
9
+ #
10
+ # @example Create folder with options hash
11
+ # GroupDocs::Storage::Folder.new(id: 1, name 'Test', url: 'http://groupdocs.com/folder/test')
12
+ # #=> <#GroupDocs::Storage::Folder @id=1 @name="Test" @url="http://groupdocs.com/folder/test">
13
+ #
14
+ # You can also pass block to set up attributes.
15
+ #
16
+ # @example Create folder with block
17
+ # GroupDocs::Storage::Folder.new do |folder|
18
+ # folder.id = 1
19
+ # folder.name = 'Test'
20
+ # folder.url = 'http://groupdocs.com/folder/test'
21
+ # end
22
+ # #=> <#GroupDocs::Storage::Folder @id=1 @name="Test" @url="http://groupdocs.com/folder/test">
23
+ #
24
+ # @param [Hash] options Each option is object attribute
25
+ # @yield [self] Use block to set up attributes
26
+ #
27
+ def initialize(options = {}, &blk)
28
+ if options.empty?
29
+ yield self if block_given?
30
+ else
31
+ options.each do |attr, value|
32
+ send(:"#{attr}=", value) if respond_to?(:"#{attr}=")
33
+ end
34
+ end
35
+ end
36
+
37
+ #
38
+ # Recursively converts object and all its attributes to hash.
39
+ #
40
+ # @example Convert simple object to hash
41
+ # object = GroupDocs::Storage::File.new(id: 1, name, 'Test.pdf')
42
+ # object.to_hash
43
+ # #=> { id: 1, name: 'Test.pdf' }
44
+ #
45
+ # @return [Hash]
46
+ #
47
+ def to_hash
48
+ hash = {}
49
+ instance_variables.each do |variable|
50
+ key = variable_to_accessor(variable)
51
+ value = instance_variable_get(variable)
52
+
53
+ hash[key] = case value
54
+ when GroupDocs::Api::Entity
55
+ value.to_hash
56
+ when Array
57
+ value.map do |i|
58
+ i.to_hash if i.respond_to?(:to_hash)
59
+ end
60
+ else
61
+ value
62
+ end
63
+ end
64
+
65
+ hash
66
+ end
67
+
68
+ #
69
+ # Inspects object using accessors instead of instance variables values.
70
+ #
71
+ # @api private
72
+ #
73
+ def inspect
74
+ not_nil_variables = instance_variables.select do |variable|
75
+ !send(variable_to_accessor(variable)).nil?
76
+ end
77
+
78
+ variables = not_nil_variables.map do |variable|
79
+ accessor = variable_to_accessor(variable)
80
+ value = send(accessor)
81
+ value = case value
82
+ when Symbol then ":#{value}"
83
+ when String then "\"#{value}\""
84
+ else value
85
+ end
86
+ "@#{accessor}=#{value}"
87
+ end
88
+
89
+ inspected = self.to_s
90
+ unless variables.empty?
91
+ inspected.gsub!(/>$/, '')
92
+ inspected << " #{variables.join(', ')}"
93
+ inspected << ?>
94
+ end
95
+
96
+ inspected
97
+ end
98
+
99
+ private
100
+
101
+ #
102
+ # Converts instance variable symbol to accessor method symbol.
103
+ # @api private
104
+ #
105
+ def variable_to_accessor(variable)
106
+ word = variable.to_s.delete(?@)
107
+ word.gsub!(/[A-Z]/) { |letter| "_#{letter.downcase}" }
108
+ word.to_sym
109
+ end
110
+
111
+ end # Entity
112
+ end # Api
113
+ end # GroupDocs
@@ -0,0 +1,5 @@
1
+ require 'groupdocs/api/helpers/access_helper'
2
+ require 'groupdocs/api/helpers/actions_helper'
3
+ require 'groupdocs/api/helpers/rest_helper'
4
+ require 'groupdocs/api/helpers/status_helper'
5
+ require 'groupdocs/api/helpers/url_helper'
@@ -0,0 +1,56 @@
1
+ module GroupDocs
2
+ module Api
3
+ module Helpers
4
+ module Access
5
+
6
+ MODES = {
7
+ private: 0,
8
+ restricted: 1,
9
+ public: 2
10
+ }
11
+
12
+ private
13
+
14
+ #
15
+ # Returns client ID from access hash or GroupDocs class variable.
16
+ #
17
+ # @return [String]
18
+ # @raise [NoClientIdError] If Client ID hasn't been set yet, raise exception.
19
+ # @api private
20
+ #
21
+ def client_id
22
+ client_id = options[:access][:client_id] || GroupDocs.client_id
23
+ client_id or raise Errors::NoClientIdError, 'Client ID has not been specified.'
24
+ end
25
+
26
+ #
27
+ # Returns private key from access hash or GroupDocs class variable.
28
+ #
29
+ # @return [String]
30
+ # @raise [NoPrivateKeyError] If private key hasn't been set yet, raise exception.
31
+ # @api private
32
+ #
33
+ def private_key
34
+ private_key = options[:access][:private_key] || GroupDocs.private_key
35
+ private_key or raise Errors::NoPrivateKeyError, 'Private Key has not been specified.'
36
+ end
37
+
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
54
+ end # Helpers
55
+ end # Api
56
+ end # GroupDocs
@@ -0,0 +1,48 @@
1
+ module GroupDocs
2
+ module Api
3
+ module Helpers
4
+ module Actions
5
+
6
+ ACTIONS = {
7
+ none: 0,
8
+ convert: 1,
9
+ combine: 2,
10
+ compress_zip: 4,
11
+ compress_rar: 8,
12
+ trace: 16,
13
+ convert_body: 32,
14
+ bind_data: 64,
15
+ print: 128,
16
+ import_annotations: 256,
17
+ }
18
+
19
+ #
20
+ # Converts actions array to byte flag.
21
+ #
22
+ # @param [Array<String, Symbol>] actions
23
+ # @return [Integer]
24
+ # @raise [ArgumentError] if actions is not an array
25
+ # @raise [ArgumentError] if action is unknown
26
+ # @api private
27
+ #
28
+ def convert_actions(actions)
29
+ actions.is_a?(Array) or raise ArgumentError, "Actions should be an array, received: #{actions.inspect}"
30
+ actions = actions.map(&:to_sym)
31
+
32
+ possible_actions = ACTIONS.map { |hash| hash.first }
33
+ actions.each do |action|
34
+ possible_actions.include?(action) or raise ArgumentError, "Unknown action: #{action.inspect}"
35
+ end
36
+
37
+ flag = 0
38
+ actions.each do |action|
39
+ flag += ACTIONS[action]
40
+ end
41
+
42
+ flag
43
+ end
44
+
45
+ end # Actions
46
+ end # Helpers
47
+ end # Api
48
+ end # GroupDocs