crowdin-api 0.6.0 → 1.2.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build-and-publish.yml +30 -0
  3. data/.github/workflows/test-and-lint.yml +31 -0
  4. data/.gitignore +12 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +5 -0
  7. data/.rubocop_todo.yml +146 -0
  8. data/CODE_OF_CONDUCT.md +128 -0
  9. data/CONTRIBUTING.md +71 -0
  10. data/Gemfile +5 -0
  11. data/LICENSE +1 -1
  12. data/README.md +120 -280
  13. data/Rakefile +19 -0
  14. data/bin/crowdin-console +54 -0
  15. data/bin/setup +6 -0
  16. data/crowdin-api.gemspec +33 -0
  17. data/lib/crowdin-api/api-resources/dictionaries.rb +34 -0
  18. data/lib/crowdin-api/api-resources/distributions.rb +99 -0
  19. data/lib/crowdin-api/api-resources/glossaries.rb +217 -0
  20. data/lib/crowdin-api/api-resources/labels.rb +117 -0
  21. data/lib/crowdin-api/api-resources/languages.rb +82 -0
  22. data/lib/crowdin-api/api-resources/machine_translation_engines.rb +74 -0
  23. data/lib/crowdin-api/api-resources/projects.rb +148 -0
  24. data/lib/crowdin-api/api-resources/reports.rb +138 -0
  25. data/lib/crowdin-api/api-resources/screenshots.rb +186 -0
  26. data/lib/crowdin-api/api-resources/source_files.rb +304 -0
  27. data/lib/crowdin-api/api-resources/source_strings.rb +74 -0
  28. data/lib/crowdin-api/api-resources/storages.rb +106 -0
  29. data/lib/crowdin-api/api-resources/string_comments.rb +73 -0
  30. data/lib/crowdin-api/api-resources/string_translations.rb +220 -0
  31. data/lib/crowdin-api/api-resources/tasks.rb +113 -0
  32. data/lib/crowdin-api/api-resources/teams.rb +144 -0
  33. data/lib/crowdin-api/api-resources/translation_memory.rb +145 -0
  34. data/lib/crowdin-api/api-resources/translation_status.rb +89 -0
  35. data/lib/crowdin-api/api-resources/translations.rb +161 -0
  36. data/lib/crowdin-api/api-resources/users.rb +129 -0
  37. data/lib/crowdin-api/api-resources/vendors.rb +21 -0
  38. data/lib/crowdin-api/api-resources/webhooks.rb +73 -0
  39. data/lib/crowdin-api/api-resources/workflows.rb +62 -0
  40. data/lib/crowdin-api/client/client.rb +95 -0
  41. data/lib/crowdin-api/client/configuration.rb +48 -0
  42. data/lib/crowdin-api/client/version.rb +7 -0
  43. data/lib/crowdin-api/core/errors.rb +8 -0
  44. data/lib/crowdin-api/core/errors_raisers.rb +39 -0
  45. data/lib/crowdin-api/core/request.rb +118 -0
  46. data/lib/crowdin-api/core/utils.rb +10 -0
  47. data/lib/crowdin-api.rb +39 -126
  48. data/spec/client/client-instance_spec.rb +14 -0
  49. data/spec/client/configuration-instance_spec.rb +72 -0
  50. data/spec/spec_helper.rb +9 -0
  51. metadata +130 -47
  52. data/lib/crowdin-api/errors.rb +0 -23
  53. data/lib/crowdin-api/methods.rb +0 -452
  54. data/lib/crowdin-api/version.rb +0 -5
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module Web
5
+ class Request
6
+ attr_reader :client
7
+
8
+ def initialize(client, method, path, query = {}, headers = {}, destination = nil)
9
+ @client = client
10
+ @method = method
11
+ @full_path = client.config.target_api_url + path
12
+ @payload = perform_payload(query)
13
+ @headers = headers
14
+ @destination = destination
15
+ @errors = []
16
+ end
17
+
18
+ def perform
19
+ process_request!
20
+ process_response!
21
+ end
22
+
23
+ private
24
+
25
+ def process_request!
26
+ return @response = client.connection[@full_path].delete if delete_request?
27
+ return @response = client.connection[@full_path].get(@payload) if get_request?
28
+
29
+ client.connection[@full_path].send(@method, @payload, @headers) { |response, _, _| @response = response }
30
+ rescue StandardError => error
31
+ client.log! error
32
+
33
+ @errors << "Something went wrong while request proccessing. Details - #{error.class}"
34
+ end
35
+
36
+ def process_response!
37
+ return fetch_errors if @errors.any?
38
+
39
+ begin
40
+ if @response
41
+ client.log! "args: #{@response.request.args}"
42
+
43
+ if @response.body.empty?
44
+ @response.code
45
+ else
46
+ doc = JSON.parse(@response.body)
47
+
48
+ client.log! "body: #{doc}"
49
+
50
+ data = fetch_response_data(doc)
51
+
52
+ @errors.any? ? fetch_errors : data
53
+ end
54
+ end
55
+ rescue StandardError => error
56
+ client.log! error
57
+
58
+ @errors << "Something went wrong while response proccessing. Details - #{error.class}"
59
+
60
+ fetch_errors
61
+ end
62
+ end
63
+
64
+ def perform_payload(query)
65
+ return query if query.is_a?(File)
66
+
67
+ get_request? ? { params: fetch_cleared_query(query) } : fetch_cleared_query(query).to_json
68
+ end
69
+
70
+ def download_file(url)
71
+ download = URI.parse(url).open
72
+ destination = @destination || download.meta['content-disposition']
73
+ .match(/filename=("?)(.+)\1/)[2]
74
+
75
+ IO.copy_stream(download, destination)
76
+
77
+ destination
78
+ rescue StandardError => error
79
+ client.log! error
80
+
81
+ @errors << "Something went wrong while downloading file. Details - #{error.class}"
82
+ end
83
+
84
+ def fetch_errors
85
+ @errors.join(';')
86
+ end
87
+
88
+ def fetch_response_data(doc)
89
+ if doc['data'].is_a?(Hash) && doc['data']['url'] && doc['data']['url'].include?('response-content-disposition')
90
+ download_file(doc['data']['url'])
91
+ else
92
+ doc
93
+ end
94
+ end
95
+
96
+ def fetch_cleared_query(query)
97
+ case query
98
+ when Array
99
+ query.map do |el|
100
+ el.reject { |_, value| value.nil? }
101
+ end.reject(&:empty?)
102
+ when Hash
103
+ query.reject { |_, value| value.nil? }
104
+ else
105
+ query
106
+ end
107
+ end
108
+
109
+ def get_request?
110
+ @method.eql?(:get)
111
+ end
112
+
113
+ def delete_request?
114
+ @method.eql?(:delete)
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module Utils
5
+ # Method for extract module namespaces from a string
6
+ def fetch_module_full_name_from_string(string)
7
+ string.split('::').inject(Module) { |acc, val| acc.const_get(val) }
8
+ end
9
+ end
10
+ end
data/lib/crowdin-api.rb CHANGED
@@ -1,129 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Libs
1
4
  require 'json'
5
+ require 'open-uri'
2
6
  require 'rest-client'
3
- # require 'byebug'
4
-
5
- require "crowdin-api/errors"
6
- require "crowdin-api/methods"
7
- require "crowdin-api/version"
8
-
9
-
10
- # The Crowdin::API library is used for interactions with a crowdin.com website.
11
- #
12
- # == Example
13
- #
14
- # require 'crowdin-api'
15
- # require 'logger'
16
- #
17
- # crowdin = Crowdin::API.new(:api_key => API_KEY, :project_id => PROJECT_ID)
18
- # crowdin.log = Logger.new($stderr)
19
- #
20
- module Crowdin
21
- class API
22
-
23
- class << self
24
- # Default logger for all Crowdin::API instances
25
- #
26
- # Crowdin::API.log = Logger.new($stderr)
27
- #
28
- attr_accessor :log
29
- end
30
-
31
- # Create a new API object using the given parameters.
32
- #
33
- # @param [String] api_key the authentication API key can be found on the project settings page
34
- # @param [String] project_id the project identifier.
35
- # @param [String] account_key the account API Key
36
- # @param [String] base_url the url of the Crowdin API
37
- #
38
- def initialize(options = {})
39
- @api_key = options.delete(:api_key)
40
- @project_id = options.delete(:project_id)
41
- @account_key = options.delete(:account_key)
42
- @base_url = options.delete(:base_url) || 'https://api.crowdin.com'
43
-
44
- @log = nil
45
-
46
- options = {
47
- :headers => {},
48
- :params => {},
49
- :timeout => nil,
50
- :key => @api_key,
51
- :'account-key' => @account_key,
52
- :json => true
53
- }.merge(options)
54
-
55
- options[:headers] = {
56
- 'Accept' => 'application/json',
57
- 'User-Agent' => "crowdin-rb/#{Crowdin::API::VERSION}",
58
- 'X-Ruby-Version' => RUBY_VERSION,
59
- 'X-Ruby-Platform' => RUBY_PLATFORM
60
- }.merge(options[:headers])
61
-
62
- options[:params] = {
63
- :key => @api_key,
64
- :'account-key' => @account_key,
65
- :json => true
66
- }.merge(options[:params])
67
-
68
- RestClient.proxy = ENV['http_proxy'] if ENV['http_proxy']
69
- @connection = RestClient::Resource.new(@base_url, options)
70
- end
71
-
72
- def request(params, &block)
73
- # Returns a query hash with non nil values.
74
- params[:query].reject! { |_, value| value.nil? } if params[:query]
75
-
76
- case params[:method]
77
- when :post
78
- query = @connection.options.merge(params[:query] || {})
79
- @connection[params[:path]].post(query) { |response, _, _|
80
- @response = response
81
- }
82
- when :get
83
- query = @connection.options[:params].merge(params[:query] || {})
84
- @connection[params[:path]].get(:params => query) { |response, _, _|
85
- @response = response
86
- }
87
- end
88
-
89
- log.debug("args: #{@response.request.args}") if log
90
-
91
- if @response.headers[:content_disposition]
92
- filename = params[:output] || @response.headers[:content_disposition][/attachment; filename="(.+?)"/, 1]
93
- body = @response.body
94
- file = open(filename, 'wb')
95
- file.write(body)
96
- file.close
97
- return true
98
- else
99
- doc = JSON.load(@response.body)
100
- log.debug("body: #{doc}") if log
101
-
102
- if doc.kind_of?(Hash) && doc['success'] == false
103
- code = doc['error']['code']
104
- message = doc['error']['message']
105
- error = Crowdin::API::Errors::Error.new(code, message)
106
- raise(error)
107
- else
108
- return doc
109
- end
110
- end
111
-
112
- end
113
-
114
- # The current logger. If no logger has been set Crowdin::API.log is used.
115
- #
116
- def log
117
- @log || Crowdin::API.log
118
- end
119
-
120
- # Sets the +logger+ used by this instance of Crowdin::API
121
- #
122
- def log= logger
123
- @log = logger
124
- end
125
-
126
- private
127
7
 
128
- end
129
- end
8
+ # Core modules
9
+ require 'crowdin-api/core/errors'
10
+ require 'crowdin-api/core/errors_raisers'
11
+ require 'crowdin-api/core/request'
12
+ require 'crowdin-api/core/utils'
13
+
14
+ # API modules
15
+ require 'crowdin-api/api-resources/storages'
16
+ require 'crowdin-api/api-resources/languages'
17
+ require 'crowdin-api/api-resources/projects'
18
+ require 'crowdin-api/api-resources/workflows'
19
+ require 'crowdin-api/api-resources/source_files'
20
+ require 'crowdin-api/api-resources/translations'
21
+ require 'crowdin-api/api-resources/source_strings'
22
+ require 'crowdin-api/api-resources/string_translations'
23
+ require 'crowdin-api/api-resources/string_comments'
24
+ require 'crowdin-api/api-resources/screenshots'
25
+ require 'crowdin-api/api-resources/glossaries'
26
+ require 'crowdin-api/api-resources/translation_memory'
27
+ require 'crowdin-api/api-resources/machine_translation_engines'
28
+ require 'crowdin-api/api-resources/reports'
29
+ require 'crowdin-api/api-resources/tasks'
30
+ require 'crowdin-api/api-resources/users'
31
+ require 'crowdin-api/api-resources/teams'
32
+ require 'crowdin-api/api-resources/vendors'
33
+ require 'crowdin-api/api-resources/webhooks'
34
+ require 'crowdin-api/api-resources/dictionaries'
35
+ require 'crowdin-api/api-resources/distributions'
36
+ require 'crowdin-api/api-resources/labels'
37
+ require 'crowdin-api/api-resources/translation_status'
38
+
39
+ # Client modules
40
+ require 'crowdin-api/client/version'
41
+ require 'crowdin-api/client/configuration'
42
+ require 'crowdin-api/client/client'
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe 'Config instance' do
4
+ before do
5
+ @crowdin = Crowdin::Client.new do |config|
6
+ config.api_token = 'api_token'
7
+ config.project_id = 1
8
+ end
9
+ end
10
+
11
+ it 'should have a version' do
12
+ expect(Crowdin::Client::VERSION).to_not be_nil
13
+ end
14
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe 'Config instance' do
4
+ before do
5
+ @crowdin = Crowdin::Client.new do |config|
6
+ config.api_token = 'api_token'
7
+ config.project_id = 1
8
+ end
9
+ end
10
+
11
+ it 'should have a #project_id' do
12
+ expect(@crowdin.config.project_id).to_not be_nil
13
+ end
14
+
15
+ it 'should have a #api_token' do
16
+ expect(@crowdin.config.api_token).to_not be_nil
17
+ end
18
+
19
+ it '#target_api_url should equal \'api/v2\' by default' do
20
+ expect(@crowdin.config.target_api_url).to eq('/api/v2')
21
+ end
22
+
23
+ describe '#logger_enabled?' do
24
+ it 'should equal false by default' do
25
+ expect(@crowdin.config.logger_enabled?).to be_falsey
26
+ end
27
+
28
+ it 'should equal specified argument' do
29
+ @crowdin = Crowdin::Client.new do |config|
30
+ config.enable_logger = true
31
+ end
32
+
33
+ expect(@crowdin.config.logger_enabled?).to be_truthy
34
+ end
35
+ end
36
+
37
+ describe '#enterprise_mode?' do
38
+ it 'should equal false by default' do
39
+ expect(@crowdin.config.enterprise_mode?).to be_falsey
40
+ end
41
+
42
+ it 'should equal true if user specify organization domain' do
43
+ @crowdin = Crowdin::Client.new do |config|
44
+ config.organization_domain = 'organization_domain'
45
+ end
46
+
47
+ expect(@crowdin.config.enterprise_mode?).to be_truthy
48
+ end
49
+ end
50
+
51
+ describe '#base_url' do
52
+ it 'should equal \'https://api.crowdin.com\' by default' do
53
+ expect(@crowdin.config.base_url).to eq('https://api.crowdin.com')
54
+ end
55
+
56
+ it 'should equal specified organization domain' do
57
+ @crowdin = Crowdin::Client.new do |config|
58
+ config.organization_domain = 'organization_domain'
59
+ end
60
+
61
+ expect(@crowdin.config.base_url).to eq('https://organization_domain.api.crowdin.com')
62
+ end
63
+
64
+ it 'should equal full specified organization domain when user specify full url (with \'.com\')' do
65
+ @crowdin = Crowdin::Client.new do |config|
66
+ config.organization_domain = 'organization_domain.com'
67
+ end
68
+
69
+ expect(@crowdin.config.base_url).to eq('organization_domain.com')
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'codecov'
7
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
8
+
9
+ require 'crowdin-api'
metadata CHANGED
@@ -1,141 +1,224 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdin-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Crowdin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-26 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
14
+ name: open-uri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '2.0'
22
+ version: 0.2.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.1.0
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '2.0'
32
+ version: 0.2.0
27
33
  - !ruby/object:Gem::Dependency
28
- name: bundler
34
+ name: rest-client
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '1.9'
34
- type: :development
39
+ version: 2.0.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: 2.1.0
43
+ type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: '1.9'
49
+ version: 2.0.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: 2.1.0
41
53
  - !ruby/object:Gem::Dependency
42
- name: rspec
54
+ name: bundler
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
57
  - - "~>"
46
58
  - !ruby/object:Gem::Version
47
- version: '3.8'
59
+ version: '2.2'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.2.32
48
63
  type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - "~>"
53
68
  - !ruby/object:Gem::Version
54
- version: '3.8'
69
+ version: '2.2'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.2.32
55
73
  - !ruby/object:Gem::Dependency
56
- name: webmock
74
+ name: codecov
57
75
  requirement: !ruby/object:Gem::Requirement
58
76
  requirements:
59
77
  - - "~>"
60
78
  - !ruby/object:Gem::Version
61
- version: '3.6'
79
+ version: 0.6.0
62
80
  type: :development
63
81
  prerelease: false
64
82
  version_requirements: !ruby/object:Gem::Requirement
65
83
  requirements:
66
84
  - - "~>"
67
85
  - !ruby/object:Gem::Version
68
- version: '3.6'
86
+ version: 0.6.0
69
87
  - !ruby/object:Gem::Dependency
70
- name: sinatra
88
+ name: rake
71
89
  requirement: !ruby/object:Gem::Requirement
72
90
  requirements:
73
91
  - - "~>"
74
92
  - !ruby/object:Gem::Version
75
- version: '2.0'
93
+ version: '13.0'
76
94
  - - ">="
77
95
  - !ruby/object:Gem::Version
78
- version: 2.0.5
96
+ version: 13.0.6
79
97
  type: :development
80
98
  prerelease: false
81
99
  version_requirements: !ruby/object:Gem::Requirement
82
100
  requirements:
83
101
  - - "~>"
84
102
  - !ruby/object:Gem::Version
85
- version: '2.0'
103
+ version: '13.0'
86
104
  - - ">="
87
105
  - !ruby/object:Gem::Version
88
- version: 2.0.5
106
+ version: 13.0.6
89
107
  - !ruby/object:Gem::Dependency
90
- name: rake
108
+ name: rspec
91
109
  requirement: !ruby/object:Gem::Requirement
92
110
  requirements:
93
111
  - - "~>"
94
112
  - !ruby/object:Gem::Version
95
- version: '11.2'
96
- - - ">="
113
+ version: '3.10'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '3.10'
121
+ - !ruby/object:Gem::Dependency
122
+ name: rubocop
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
97
126
  - !ruby/object:Gem::Version
98
- version: 11.2.2
127
+ version: '1.23'
99
128
  type: :development
100
129
  prerelease: false
101
130
  version_requirements: !ruby/object:Gem::Requirement
102
131
  requirements:
103
132
  - - "~>"
104
133
  - !ruby/object:Gem::Version
105
- version: '11.2'
106
- - - ">="
134
+ version: '1.23'
135
+ - !ruby/object:Gem::Dependency
136
+ name: sinatra
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
107
140
  - !ruby/object:Gem::Version
108
- version: 11.2.2
141
+ version: '2.1'
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '2.1'
109
149
  - !ruby/object:Gem::Dependency
110
- name: pry
150
+ name: webmock
111
151
  requirement: !ruby/object:Gem::Requirement
112
152
  requirements:
113
153
  - - "~>"
114
154
  - !ruby/object:Gem::Version
115
- version: 0.12.2
155
+ version: '3.14'
116
156
  type: :development
117
157
  prerelease: false
118
158
  version_requirements: !ruby/object:Gem::Requirement
119
159
  requirements:
120
160
  - - "~>"
121
161
  - !ruby/object:Gem::Version
122
- version: 0.12.2
123
- description: Ruby Client for the Crowdin API
162
+ version: '3.14'
163
+ description: The Crowdin Ruby Client is used to interact with the Crowdin API from
164
+ Ruby
124
165
  email:
125
- - support@crowdin.net
126
- executables: []
166
+ - support@crowdin.com
167
+ executables:
168
+ - crowdin-console
127
169
  extensions: []
128
- extra_rdoc_files:
129
- - README.md
130
- - LICENSE
170
+ extra_rdoc_files: []
131
171
  files:
172
+ - ".github/workflows/build-and-publish.yml"
173
+ - ".github/workflows/test-and-lint.yml"
174
+ - ".gitignore"
175
+ - ".rspec"
176
+ - ".rubocop.yml"
177
+ - ".rubocop_todo.yml"
178
+ - CODE_OF_CONDUCT.md
179
+ - CONTRIBUTING.md
180
+ - Gemfile
132
181
  - LICENSE
133
182
  - README.md
183
+ - Rakefile
184
+ - bin/crowdin-console
185
+ - bin/setup
186
+ - crowdin-api.gemspec
134
187
  - lib/crowdin-api.rb
135
- - lib/crowdin-api/errors.rb
136
- - lib/crowdin-api/methods.rb
137
- - lib/crowdin-api/version.rb
138
- homepage: https://github.com/crowdin/crowdin-api/
188
+ - lib/crowdin-api/api-resources/dictionaries.rb
189
+ - lib/crowdin-api/api-resources/distributions.rb
190
+ - lib/crowdin-api/api-resources/glossaries.rb
191
+ - lib/crowdin-api/api-resources/labels.rb
192
+ - lib/crowdin-api/api-resources/languages.rb
193
+ - lib/crowdin-api/api-resources/machine_translation_engines.rb
194
+ - lib/crowdin-api/api-resources/projects.rb
195
+ - lib/crowdin-api/api-resources/reports.rb
196
+ - lib/crowdin-api/api-resources/screenshots.rb
197
+ - lib/crowdin-api/api-resources/source_files.rb
198
+ - lib/crowdin-api/api-resources/source_strings.rb
199
+ - lib/crowdin-api/api-resources/storages.rb
200
+ - lib/crowdin-api/api-resources/string_comments.rb
201
+ - lib/crowdin-api/api-resources/string_translations.rb
202
+ - lib/crowdin-api/api-resources/tasks.rb
203
+ - lib/crowdin-api/api-resources/teams.rb
204
+ - lib/crowdin-api/api-resources/translation_memory.rb
205
+ - lib/crowdin-api/api-resources/translation_status.rb
206
+ - lib/crowdin-api/api-resources/translations.rb
207
+ - lib/crowdin-api/api-resources/users.rb
208
+ - lib/crowdin-api/api-resources/vendors.rb
209
+ - lib/crowdin-api/api-resources/webhooks.rb
210
+ - lib/crowdin-api/api-resources/workflows.rb
211
+ - lib/crowdin-api/client/client.rb
212
+ - lib/crowdin-api/client/configuration.rb
213
+ - lib/crowdin-api/client/version.rb
214
+ - lib/crowdin-api/core/errors.rb
215
+ - lib/crowdin-api/core/errors_raisers.rb
216
+ - lib/crowdin-api/core/request.rb
217
+ - lib/crowdin-api/core/utils.rb
218
+ - spec/client/client-instance_spec.rb
219
+ - spec/client/configuration-instance_spec.rb
220
+ - spec/spec_helper.rb
221
+ homepage: https://github.com/crowdin/crowdin-api-client-ruby
139
222
  licenses:
140
223
  - MIT
141
224
  metadata: {}
@@ -147,15 +230,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
230
  requirements:
148
231
  - - ">="
149
232
  - !ruby/object:Gem::Version
150
- version: '0'
233
+ version: '2.4'
151
234
  required_rubygems_version: !ruby/object:Gem::Requirement
152
235
  requirements:
153
236
  - - ">="
154
237
  - !ruby/object:Gem::Version
155
238
  version: '0'
156
239
  requirements: []
157
- rubygems_version: 3.0.3
240
+ rubygems_version: 3.0.3.1
158
241
  signing_key:
159
242
  specification_version: 4
160
- summary: Client library to manage translations on Crowdin
243
+ summary: Ruby Client for the Crowdin API
161
244
  test_files: []