ruby-lokalise-api 4.1.0 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +1 -1
- data/README.md +8 -2
- data/lib/ruby-lokalise-api/client.rb +4 -2
- data/lib/ruby-lokalise-api/collections/base.rb +5 -4
- data/lib/ruby-lokalise-api/connection.rb +11 -5
- data/lib/ruby-lokalise-api/data/attributes.json +2 -1
- data/lib/ruby-lokalise-api/error.rb +2 -1
- data/lib/ruby-lokalise-api/oauth_client.rb +11 -0
- data/lib/ruby-lokalise-api/request.rb +3 -2
- data/lib/ruby-lokalise-api/resources/base.rb +7 -5
- data/lib/ruby-lokalise-api/resources/branch.rb +2 -1
- data/lib/ruby-lokalise-api/rest/files.rb +2 -1
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +1 -3
- data/lib/ruby-lokalise-api/utils/string_utils.rb +1 -1
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/lib/ruby-lokalise-api.rb +16 -0
- data/ruby-lokalise-api.gemspec +1 -0
- data/spec/lib/ruby-lokalise-api/connection_spec.rb +45 -1
- data/spec/lib/ruby-lokalise-api/error_spec.rb +8 -0
- data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +10 -9
- data/spec/lib/ruby-lokalise-api_spec.rb +21 -0
- data/spec/support/test_client.rb +4 -0
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f15e541afdd5e50a0e9317640b872bb04144dcaa717b2390887546b694e308fd
|
4
|
+
data.tar.gz: f34bb8a44f1e8552a0bc83b3f4c15d604500d56ecea503260d6423b047b36dcc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbbc75876ec0e0c9f5a611d54520585759d77cb4f13a81126d7f9a45c89852331801054ec973f94a6c0b4e58c0a8ea8c6cb88167e5b4a4b3ac9521531b911a87
|
7
|
+
data.tar.gz: 2687c66c1fb1ef0012cac50329b87a7c48118cff98a890e06b7764ccce828a850750b6896d5ace0a6810e8cebb86658bbd333794e6bc94cde725c957b1c968f6
|
data/.github/CONTRIBUTING.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
2. [Create a topic branch.][branch]
|
5
5
|
3. Implement your feature or bug fix.
|
6
6
|
4. Don't forget to add specs and make sure they pass by running `rspec .`.
|
7
|
-
5. Make sure your code complies with the style guide by running `rubocop`. `rubocop -a` can automatically fix most issues for you.
|
7
|
+
5. Make sure your code complies with the style guide by running `rubocop`. `rubocop -a` can automatically fix most issues for you. Run `rubocop -A` to make it more aggressive.
|
8
8
|
6. If necessary, add documentation for your feature or bug fix.
|
9
9
|
7. Commit and push your changes.
|
10
10
|
8. [Submit a pull request.][pr]
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
Official opinionated Ruby interface for the [Lokalise API](https://app.lokalise.com/api2docs/curl/) that represents returned data as Ruby objects.
|
9
9
|
|
10
|
-
Looking for a Rails integration? Try the
|
10
|
+
Looking for a Rails integration? Try the [lokalise_rails gem](https://github.com/bodrovis/lokalise_rails). Also you can use a [lokalise_manager gem](https://github.com/bodrovis/lokalise_manager) which allows to exchange translation files between Lokalise and *any* Ruby script.
|
11
11
|
|
12
12
|
## Quickstart
|
13
13
|
|
@@ -39,6 +39,12 @@ process = @client.upload_file project_id,
|
|
39
39
|
process.status
|
40
40
|
```
|
41
41
|
|
42
|
+
Alternatively instantiate your client with an [OAuth2 token](http://docs.lokalise.com/en/articles/5574713-oauth-2):
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
@client = Lokalise.oauth_client 'YOUR_OAUTH_TOKEN_HERE'
|
46
|
+
```
|
47
|
+
|
42
48
|
## Usage
|
43
49
|
|
44
50
|
Detailed documentation can be found at [lokalise.github.io/ruby-lokalise-api](https://lokalise.github.io/ruby-lokalise-api/).
|
@@ -47,4 +53,4 @@ Detailed documentation can be found at [lokalise.github.io/ruby-lokalise-api](ht
|
|
47
53
|
|
48
54
|
This gem is licensed under the [BSD 3 Clause license](https://github.com/lokalise/ruby-lokalise-api/blob/master/LICENSE). Prior to version 4 the license type was MIT.
|
49
55
|
|
50
|
-
Copyright (c) [Lokalise team](http://lokalise.co)
|
56
|
+
Copyright (c) [Lokalise team](http://lokalise.co) and [Ilya Bodrov](http://bodrovis.tech)
|
@@ -23,13 +23,15 @@ require 'ruby-lokalise-api/rest/webhooks'
|
|
23
23
|
|
24
24
|
module Lokalise
|
25
25
|
class Client
|
26
|
-
attr_reader :token
|
27
|
-
attr_accessor :timeout, :open_timeout
|
26
|
+
attr_reader :token, :token_header
|
27
|
+
attr_accessor :timeout, :open_timeout, :enable_compression
|
28
28
|
|
29
29
|
def initialize(token, params = {})
|
30
30
|
@token = token
|
31
31
|
@timeout = params.fetch(:timeout, nil)
|
32
32
|
@open_timeout = params.fetch(:open_timeout, nil)
|
33
|
+
@enable_compression = params.fetch(:enable_compression, false)
|
34
|
+
@token_header = 'x-api-token'
|
33
35
|
end
|
34
36
|
|
35
37
|
# rubocop:disable Metrics/ParameterLists
|
@@ -19,11 +19,12 @@ module Lokalise
|
|
19
19
|
def initialize(response, params = {})
|
20
20
|
produce_collection_for response
|
21
21
|
populate_pagination_data_for response
|
22
|
+
content = response['content']
|
22
23
|
# Project, team id, user id, and branch may not be present in some cases
|
23
|
-
@project_id =
|
24
|
-
@team_id =
|
25
|
-
@user_id =
|
26
|
-
@branch =
|
24
|
+
@project_id = content['project_id']
|
25
|
+
@team_id = content['team_id']
|
26
|
+
@user_id = content['user_id']
|
27
|
+
@branch = content['branch']
|
27
28
|
@request_params = params
|
28
29
|
@client = response['client']
|
29
30
|
@path = response['path']
|
@@ -5,19 +5,25 @@ module Lokalise
|
|
5
5
|
BASE_URL = 'https://api.lokalise.com/api2/'
|
6
6
|
|
7
7
|
def connection(client)
|
8
|
-
options
|
8
|
+
Faraday.new(options(client), request_params_for(client)) do |faraday|
|
9
|
+
faraday.use(:gzip) if client.enable_compression
|
10
|
+
faraday.adapter Faraday.default_adapter
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def options(client)
|
17
|
+
{
|
9
18
|
headers: {
|
10
19
|
accept: 'application/json',
|
11
20
|
user_agent: "ruby-lokalise-api gem/#{Lokalise::VERSION}",
|
12
|
-
|
21
|
+
client.token_header => client.token
|
13
22
|
},
|
14
23
|
url: BASE_URL
|
15
24
|
}
|
16
|
-
Faraday.new(options, request_params_for(client)) { |faraday| faraday.adapter Faraday.default_adapter }
|
17
25
|
end
|
18
26
|
|
19
|
-
private
|
20
|
-
|
21
27
|
# Allows to customize request params per-client
|
22
28
|
def request_params_for(client)
|
23
29
|
{request: {timeout: client.timeout, open_timeout: client.open_timeout}}
|
@@ -58,7 +58,8 @@ module Lokalise
|
|
58
58
|
def respond_with(response, client)
|
59
59
|
body = custom_load response.body
|
60
60
|
uri = Addressable::URI.parse response.env.url
|
61
|
-
|
61
|
+
status = response.status
|
62
|
+
respond_with_error status, body if status.between?(400, 599) || (body.respond_to?(:has_key?) && body.key?('error'))
|
62
63
|
extract_headers_from(response).
|
63
64
|
merge('content' => body,
|
64
65
|
'client' => client,
|
@@ -74,7 +75,7 @@ module Lokalise
|
|
74
75
|
end
|
75
76
|
|
76
77
|
def respond_with_error(code, body)
|
77
|
-
raise(Lokalise::Error, body['error']) unless Lokalise::Error::ERRORS.key? code
|
78
|
+
raise(Lokalise::Error, body['error'] || body) unless Lokalise::Error::ERRORS.key? code
|
78
79
|
|
79
80
|
raise Lokalise::Error::ERRORS[code].from_response(body)
|
80
81
|
end
|
@@ -107,10 +107,11 @@ module Lokalise
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def produce_resource(model_class, response)
|
110
|
+
content = response['content']
|
110
111
|
data_key_singular = data_key_for model_class: model_class
|
111
|
-
if
|
112
|
-
data =
|
113
|
-
|
112
|
+
if content.key? data_key_singular
|
113
|
+
data = content.delete data_key_singular
|
114
|
+
content.merge! data
|
114
115
|
end
|
115
116
|
|
116
117
|
new response
|
@@ -156,9 +157,10 @@ module Lokalise
|
|
156
157
|
# Sometimes there is an `id_key` but it has a value of `null`
|
157
158
|
# (for example when we do not place the actual order but only check its price).
|
158
159
|
# Therefore we must explicitly check if the key is present
|
159
|
-
|
160
|
+
content = response['content']
|
161
|
+
return content[id_key] if content.key?(id_key)
|
160
162
|
|
161
|
-
|
163
|
+
content[data_key][id_key]
|
162
164
|
end
|
163
165
|
|
164
166
|
# Store all resources attributes under the corresponding instance variables.
|
@@ -6,7 +6,8 @@ module Lokalise
|
|
6
6
|
supports :update, :destroy, [:reload_data, '', :find]
|
7
7
|
|
8
8
|
def merge(params = {})
|
9
|
-
|
9
|
+
klass = self.class
|
10
|
+
klass.merge @client, klass.endpoint(project_id, branch_id, :merge), params
|
10
11
|
end
|
11
12
|
|
12
13
|
class << self
|
@@ -22,7 +22,8 @@ module Lokalise
|
|
22
22
|
c_r Lokalise::Resources::File, :download, [project_id, 'download'], params
|
23
23
|
end
|
24
24
|
|
25
|
-
# Imports translation file to the given project. File data must base64-encoded
|
25
|
+
# Imports translation file to the given project. File data must base64-encoded.
|
26
|
+
# To encode your data in Base64, use `Base64.strict_encode64()` method.
|
26
27
|
#
|
27
28
|
# @see https://app.lokalise.com/api2docs/curl/#transition-upload-a-file-post
|
28
29
|
# @return [Hash]
|
@@ -47,9 +47,7 @@ module Lokalise
|
|
47
47
|
#
|
48
48
|
# @return [Array<String>]
|
49
49
|
def attributes_for(klass)
|
50
|
-
@attributes ||=
|
51
|
-
YAML.load_file(File.expand_path('../data/attributes.json', __dir__)).freeze
|
52
|
-
end
|
50
|
+
@attributes ||= YAML.load_file(File.expand_path('../data/attributes.json', __dir__)).freeze
|
53
51
|
|
54
52
|
name = unify klass.name.snakecase
|
55
53
|
@attributes[name]
|
data/lib/ruby-lokalise-api.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'faraday'
|
4
|
+
require 'faraday_middleware'
|
4
5
|
require 'yaml'
|
5
6
|
require 'addressable'
|
6
7
|
|
@@ -62,6 +63,7 @@ require 'ruby-lokalise-api/collections/custom_translation_status'
|
|
62
63
|
require 'ruby-lokalise-api/collections/webhook'
|
63
64
|
|
64
65
|
require 'ruby-lokalise-api/client'
|
66
|
+
require 'ruby-lokalise-api/oauth_client'
|
65
67
|
|
66
68
|
module Lokalise
|
67
69
|
class << self
|
@@ -78,5 +80,19 @@ module Lokalise
|
|
78
80
|
def reset_client!
|
79
81
|
@client = nil
|
80
82
|
end
|
83
|
+
|
84
|
+
# Initializes a new OAuthClient object
|
85
|
+
#
|
86
|
+
# @return [Lokalise::OAuthClient]
|
87
|
+
# @param token [String]
|
88
|
+
# @param params [Hash]
|
89
|
+
def oauth_client(token, params = {})
|
90
|
+
@oauth_client ||= Lokalise::OAuthClient.new token, params
|
91
|
+
end
|
92
|
+
|
93
|
+
# Reset the currently set OAuth client
|
94
|
+
def reset_oauth_client!
|
95
|
+
@oauth_client = nil
|
96
|
+
end
|
81
97
|
end
|
82
98
|
end
|
data/ruby-lokalise-api.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_dependency 'addressable', '~> 2.5'
|
26
26
|
spec.add_dependency 'faraday', '~> 1.0'
|
27
|
+
spec.add_dependency 'faraday_middleware', '~> 1.0'
|
27
28
|
spec.add_dependency 'json', '>= 1.8.0'
|
28
29
|
|
29
30
|
spec.add_development_dependency 'codecov', '~> 0.1'
|
@@ -3,6 +3,9 @@
|
|
3
3
|
RSpec.describe Lokalise::Connection do
|
4
4
|
include described_class
|
5
5
|
|
6
|
+
let(:project_id) { '803826145ba90b42d5d860.46800099' }
|
7
|
+
let(:key_id) { 44_596_059 }
|
8
|
+
|
6
9
|
before { Lokalise.reset_client! }
|
7
10
|
|
8
11
|
after do
|
@@ -10,11 +13,18 @@ RSpec.describe Lokalise::Connection do
|
|
10
13
|
Faraday.default_adapter = :net_http
|
11
14
|
end
|
12
15
|
|
13
|
-
it '
|
16
|
+
it 'Authorization header must be present for OAuth client' do
|
17
|
+
conn = connection test_oauth_client
|
18
|
+
expect(conn.headers['Authorization']).to eq("Bearer #{test_client.token}")
|
19
|
+
expect(conn.headers['X-api-token']).to be_nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'timeouts and compression should not be set by default but the token must be present' do
|
14
23
|
conn = connection test_client
|
15
24
|
expect(conn.options.timeout).to be_nil
|
16
25
|
expect(conn.options.open_timeout).to be_nil
|
17
26
|
expect(conn.headers['X-api-token']).to eq(test_client.token)
|
27
|
+
expect(conn.builder.handlers).not_to include(FaradayMiddleware::Gzip)
|
18
28
|
end
|
19
29
|
|
20
30
|
it 'allows to customize timeouts' do
|
@@ -42,4 +52,38 @@ RSpec.describe Lokalise::Connection do
|
|
42
52
|
expect(another_conn.builder.adapter).to eq(Faraday::Adapter::Excon)
|
43
53
|
expect(conn.builder.adapter).to eq(Faraday::Adapter::NetHttp)
|
44
54
|
end
|
55
|
+
|
56
|
+
it 'allows to customize compression' do
|
57
|
+
custom_client = Lokalise.client(ENV['LOKALISE_API_TOKEN'], enable_compression: true)
|
58
|
+
conn = connection custom_client
|
59
|
+
expect(conn.headers['X-api-token']).to eq(custom_client.token)
|
60
|
+
expect(conn.builder.handlers).to include(FaradayMiddleware::Gzip)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'is possible to enable gzip compression' do
|
64
|
+
gzip_client = Lokalise.client(ENV['LOKALISE_API_TOKEN'], enable_compression: true)
|
65
|
+
keys = VCR.use_cassette('all_keys_gzip') do
|
66
|
+
gzip_client.keys project_id
|
67
|
+
end.collection
|
68
|
+
|
69
|
+
expect(keys.first.key_id).to eq(key_id)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'is possible to disable gzip compression' do
|
73
|
+
no_gzip_client = Lokalise.client(ENV['LOKALISE_API_TOKEN'], enable_compression: false)
|
74
|
+
keys = VCR.use_cassette('all_keys_no_gzip') do
|
75
|
+
no_gzip_client.keys project_id
|
76
|
+
end.collection
|
77
|
+
|
78
|
+
expect(keys.first.key_id).to eq(key_id)
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'gzip compression is off by default' do
|
82
|
+
default_gzip_client = Lokalise.client(ENV['LOKALISE_API_TOKEN'])
|
83
|
+
keys = VCR.use_cassette('all_keys_default_gzip') do
|
84
|
+
default_gzip_client.keys project_id
|
85
|
+
end.collection
|
86
|
+
|
87
|
+
expect(keys.first.key_id).to eq(key_id)
|
88
|
+
end
|
45
89
|
end
|
@@ -15,6 +15,14 @@ RSpec.describe Lokalise::Error do
|
|
15
15
|
end.to raise_error(described_class)
|
16
16
|
end
|
17
17
|
|
18
|
+
it 'handles an exception when the response does not contain an error key' do
|
19
|
+
expect do
|
20
|
+
VCR.use_cassette('error_no_error_key') do
|
21
|
+
get 'projects', Lokalise.client('invalid')
|
22
|
+
end
|
23
|
+
end.to raise_error(Lokalise::Error::BadRequest)
|
24
|
+
end
|
25
|
+
|
18
26
|
it 'raises BadRequest when API token is invalid' do
|
19
27
|
expect do
|
20
28
|
VCR.use_cassette('error_invalid_token') do
|
@@ -59,26 +59,27 @@ RSpec.describe Lokalise::Client do
|
|
59
59
|
|
60
60
|
specify '#translation' do
|
61
61
|
translation = VCR.use_cassette('translation') do
|
62
|
-
test_client.translation project_id,
|
62
|
+
test_client.translation project_id, 304_581_218
|
63
63
|
end
|
64
64
|
|
65
|
-
expect(translation.translation_id).to eq(
|
66
|
-
expect(translation.key_id).to eq(
|
67
|
-
expect(translation.language_iso).to eq('
|
68
|
-
expect(translation.modified_at).to eq('
|
69
|
-
expect(translation.modified_at_timestamp).to eq(
|
65
|
+
expect(translation.translation_id).to eq(304_581_218)
|
66
|
+
expect(translation.key_id).to eq(44_596_059)
|
67
|
+
expect(translation.language_iso).to eq('ru')
|
68
|
+
expect(translation.modified_at).to eq('2020-05-15 10:44:42 (Etc/UTC)')
|
69
|
+
expect(translation.modified_at_timestamp).to eq(1_589_539_482)
|
70
70
|
expect(translation.modified_by).to eq(20_181)
|
71
71
|
expect(translation.modified_by_email).to eq('bodrovis@protonmail.com')
|
72
|
-
expect(translation.translation).to eq('
|
72
|
+
expect(translation.translation).to eq('Сообщение')
|
73
73
|
expect(translation.is_fuzzy).to eq(false)
|
74
74
|
expect(translation.is_reviewed).to eq(false)
|
75
|
-
expect(translation.words).to eq(
|
75
|
+
expect(translation.words).to eq(1)
|
76
76
|
expect(translation.custom_translation_statuses).to eq([])
|
77
|
+
expect(translation.task_id).to be_nil
|
77
78
|
end
|
78
79
|
|
79
80
|
specify '#reload_data' do
|
80
81
|
translation = VCR.use_cassette('translation') do
|
81
|
-
test_client.translation project_id,
|
82
|
+
test_client.translation project_id, 304_581_218
|
82
83
|
end
|
83
84
|
|
84
85
|
reloaded_translation = VCR.use_cassette('translation') do
|
@@ -6,6 +6,7 @@ RSpec.describe Lokalise do
|
|
6
6
|
expect(test_client.token).to eq(ENV['LOKALISE_API_TOKEN'])
|
7
7
|
expect(test_client.timeout).to be_nil
|
8
8
|
expect(test_client.open_timeout).to be_nil
|
9
|
+
expect(test_client.enable_compression).to be false
|
9
10
|
end
|
10
11
|
|
11
12
|
specify '.reset_client!' do
|
@@ -15,6 +16,21 @@ RSpec.describe Lokalise do
|
|
15
16
|
expect(current_client).to be_nil
|
16
17
|
end
|
17
18
|
|
19
|
+
specify '.oauth_client' do
|
20
|
+
expect(test_oauth_client).to be_an_instance_of(Lokalise::OAuthClient)
|
21
|
+
expect(test_oauth_client.token).to eq("Bearer #{ENV['LOKALISE_API_TOKEN']}")
|
22
|
+
expect(test_oauth_client.timeout).to be_nil
|
23
|
+
expect(test_oauth_client.open_timeout).to be_nil
|
24
|
+
expect(test_oauth_client.enable_compression).to be false
|
25
|
+
end
|
26
|
+
|
27
|
+
specify '.reset_oauth_client!' do
|
28
|
+
expect(test_oauth_client).to be_an_instance_of(Lokalise::OAuthClient)
|
29
|
+
described_class.reset_oauth_client!
|
30
|
+
current_oauth_client = described_class.instance_variable_get '@oauth_client'
|
31
|
+
expect(current_oauth_client).to be_nil
|
32
|
+
end
|
33
|
+
|
18
34
|
context 'with client params' do
|
19
35
|
before { described_class.reset_client! }
|
20
36
|
|
@@ -29,5 +45,10 @@ RSpec.describe Lokalise do
|
|
29
45
|
custom_client = described_class.client(ENV['LOKALISE_API_TOKEN'], open_timeout: 100)
|
30
46
|
expect(custom_client.open_timeout).to eq(100)
|
31
47
|
end
|
48
|
+
|
49
|
+
it 'is possible to customize compression' do
|
50
|
+
custom_client = described_class.client(ENV['LOKALISE_API_TOKEN'], enable_compression: true)
|
51
|
+
expect(custom_client.enable_compression).to be true
|
52
|
+
end
|
32
53
|
end
|
33
54
|
end
|
data/spec/support/test_client.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lokalise-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Bodrov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday_middleware
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: json
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +252,7 @@ files:
|
|
238
252
|
- lib/ruby-lokalise-api/data/attributes.json
|
239
253
|
- lib/ruby-lokalise-api/error.rb
|
240
254
|
- lib/ruby-lokalise-api/json_handler.rb
|
255
|
+
- lib/ruby-lokalise-api/oauth_client.rb
|
241
256
|
- lib/ruby-lokalise-api/request.rb
|
242
257
|
- lib/ruby-lokalise-api/resources/base.rb
|
243
258
|
- lib/ruby-lokalise-api/resources/branch.rb
|
@@ -334,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
334
349
|
- !ruby/object:Gem::Version
|
335
350
|
version: '0'
|
336
351
|
requirements: []
|
337
|
-
rubygems_version: 3.2.
|
352
|
+
rubygems_version: 3.2.26
|
338
353
|
signing_key:
|
339
354
|
specification_version: 4
|
340
355
|
summary: Ruby interface to the Lokalise API
|
@@ -356,11 +371,11 @@ test_files:
|
|
356
371
|
- spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
|
357
372
|
- spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
|
358
373
|
- spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
|
359
|
-
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
360
|
-
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
361
374
|
- spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
|
362
|
-
- spec/lib/ruby-lokalise-api/rest/
|
375
|
+
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
376
|
+
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
363
377
|
- spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
|
378
|
+
- spec/lib/ruby-lokalise-api/rest/translations_spec.rb
|
364
379
|
- spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb
|
365
380
|
- spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
|
366
381
|
- spec/lib/ruby-lokalise-api_spec.rb
|