crowdin-api 0.6.0 → 1.2.0

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