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.
- checksums.yaml +4 -4
- data/.github/workflows/build-and-publish.yml +30 -0
- data/.github/workflows/test-and-lint.yml +31 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +146 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/CONTRIBUTING.md +71 -0
- data/Gemfile +5 -0
- data/LICENSE +1 -1
- data/README.md +120 -280
- data/Rakefile +19 -0
- data/bin/crowdin-console +54 -0
- data/bin/setup +6 -0
- data/crowdin-api.gemspec +33 -0
- data/lib/crowdin-api/api-resources/dictionaries.rb +34 -0
- data/lib/crowdin-api/api-resources/distributions.rb +99 -0
- data/lib/crowdin-api/api-resources/glossaries.rb +217 -0
- data/lib/crowdin-api/api-resources/labels.rb +117 -0
- data/lib/crowdin-api/api-resources/languages.rb +82 -0
- data/lib/crowdin-api/api-resources/machine_translation_engines.rb +74 -0
- data/lib/crowdin-api/api-resources/projects.rb +148 -0
- data/lib/crowdin-api/api-resources/reports.rb +138 -0
- data/lib/crowdin-api/api-resources/screenshots.rb +186 -0
- data/lib/crowdin-api/api-resources/source_files.rb +304 -0
- data/lib/crowdin-api/api-resources/source_strings.rb +74 -0
- data/lib/crowdin-api/api-resources/storages.rb +106 -0
- data/lib/crowdin-api/api-resources/string_comments.rb +73 -0
- data/lib/crowdin-api/api-resources/string_translations.rb +220 -0
- data/lib/crowdin-api/api-resources/tasks.rb +113 -0
- data/lib/crowdin-api/api-resources/teams.rb +144 -0
- data/lib/crowdin-api/api-resources/translation_memory.rb +145 -0
- data/lib/crowdin-api/api-resources/translation_status.rb +89 -0
- data/lib/crowdin-api/api-resources/translations.rb +161 -0
- data/lib/crowdin-api/api-resources/users.rb +129 -0
- data/lib/crowdin-api/api-resources/vendors.rb +21 -0
- data/lib/crowdin-api/api-resources/webhooks.rb +73 -0
- data/lib/crowdin-api/api-resources/workflows.rb +62 -0
- data/lib/crowdin-api/client/client.rb +95 -0
- data/lib/crowdin-api/client/configuration.rb +48 -0
- data/lib/crowdin-api/client/version.rb +7 -0
- data/lib/crowdin-api/core/errors.rb +8 -0
- data/lib/crowdin-api/core/errors_raisers.rb +39 -0
- data/lib/crowdin-api/core/request.rb +118 -0
- data/lib/crowdin-api/core/utils.rb +10 -0
- data/lib/crowdin-api.rb +39 -126
- data/spec/client/client-instance_spec.rb +14 -0
- data/spec/client/configuration-instance_spec.rb +72 -0
- data/spec/spec_helper.rb +9 -0
- metadata +130 -47
- data/lib/crowdin-api/errors.rb +0 -23
- data/lib/crowdin-api/methods.rb +0 -452
- 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
|
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
|
-
|
129
|
-
|
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
|
data/spec/spec_helper.rb
ADDED
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:
|
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:
|
11
|
+
date: 2022-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
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:
|
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:
|
32
|
+
version: 0.2.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: rest-client
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- - "
|
37
|
+
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
|
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:
|
49
|
+
version: 2.0.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 2.1.0
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
54
|
+
name: bundler
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
44
56
|
requirements:
|
45
57
|
- - "~>"
|
46
58
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
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: '
|
69
|
+
version: '2.2'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 2.2.32
|
55
73
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
74
|
+
name: codecov
|
57
75
|
requirement: !ruby/object:Gem::Requirement
|
58
76
|
requirements:
|
59
77
|
- - "~>"
|
60
78
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
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:
|
86
|
+
version: 0.6.0
|
69
87
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
88
|
+
name: rake
|
71
89
|
requirement: !ruby/object:Gem::Requirement
|
72
90
|
requirements:
|
73
91
|
- - "~>"
|
74
92
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
93
|
+
version: '13.0'
|
76
94
|
- - ">="
|
77
95
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
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: '
|
103
|
+
version: '13.0'
|
86
104
|
- - ">="
|
87
105
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
106
|
+
version: 13.0.6
|
89
107
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
108
|
+
name: rspec
|
91
109
|
requirement: !ruby/object:Gem::Requirement
|
92
110
|
requirements:
|
93
111
|
- - "~>"
|
94
112
|
- !ruby/object:Gem::Version
|
95
|
-
version: '
|
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:
|
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: '
|
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:
|
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:
|
150
|
+
name: webmock
|
111
151
|
requirement: !ruby/object:Gem::Requirement
|
112
152
|
requirements:
|
113
153
|
- - "~>"
|
114
154
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
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:
|
123
|
-
description: Ruby Client
|
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.
|
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/
|
136
|
-
- lib/crowdin-api/
|
137
|
-
- lib/crowdin-api/
|
138
|
-
|
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: '
|
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
|
243
|
+
summary: Ruby Client for the Crowdin API
|
161
244
|
test_files: []
|