ruby-lokalise-api 3.1.0 → 4.0.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.
- checksums.yaml +4 -4
- data/.github/CONTRIBUTING.md +7 -0
- data/CHANGELOG.md +1 -116
- data/LICENSE +9 -18
- data/README.md +17 -1847
- data/lib/ruby-lokalise-api/collections/base.rb +1 -1
- data/lib/ruby-lokalise-api/data/attributes.json +1 -0
- data/lib/ruby-lokalise-api/resources/base.rb +4 -4
- data/lib/ruby-lokalise-api/resources/project.rb +1 -1
- data/lib/ruby-lokalise-api/resources/webhook.rb +1 -1
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +11 -6
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/ruby-lokalise-api.gemspec +4 -3
- data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +4 -4
- data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +3 -3
- data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +8 -7
- metadata +12 -12
@@ -91,7 +91,7 @@ module Lokalise
|
|
91
91
|
# Collection example: `{ "content": {"comments": [ ... ]} }`
|
92
92
|
def produce_collection_for(response)
|
93
93
|
model_class = self.class.name.base_class_name
|
94
|
-
data_key_plural = data_key_for model_class, true, true
|
94
|
+
data_key_plural = data_key_for model_class: model_class, plural: true, collection: true
|
95
95
|
|
96
96
|
# Fetch collection data and instantiate an individual resource for each object
|
97
97
|
# We also preserve the `client` to be able to chain API methods later
|
@@ -95,7 +95,7 @@ module Lokalise
|
|
95
95
|
# Instantiates a new resource or collection based on the given response
|
96
96
|
def object_from(response, params)
|
97
97
|
model_class = name.base_class_name
|
98
|
-
data_key_plural = data_key_for model_class, true
|
98
|
+
data_key_plural = data_key_for model_class: model_class, plural: true
|
99
99
|
# Preserve the initial path to allow chaining
|
100
100
|
response['path'] = params.delete(:_initial_path) if params.key?(:_initial_path)
|
101
101
|
|
@@ -107,7 +107,7 @@ module Lokalise
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def produce_resource(model_class, response)
|
110
|
-
data_key_singular = data_key_for model_class
|
110
|
+
data_key_singular = data_key_for model_class: model_class
|
111
111
|
if response['content'].key? data_key_singular
|
112
112
|
data = response['content'].delete data_key_singular
|
113
113
|
response['content'].merge! data
|
@@ -124,7 +124,7 @@ module Lokalise
|
|
124
124
|
# Generates path for the individual resource based on the path for the collection
|
125
125
|
def infer_path_from(response, endpoint_generator = nil)
|
126
126
|
id_key = id_key_for self.class.name.base_class_name
|
127
|
-
data_key = data_key_for self.class.name.base_class_name
|
127
|
+
data_key = data_key_for model_class: self.class.name.base_class_name
|
128
128
|
|
129
129
|
path_with_id response, id_key, data_key, endpoint_generator
|
130
130
|
end
|
@@ -164,7 +164,7 @@ module Lokalise
|
|
164
164
|
# Store all resources attributes under the corresponding instance variables.
|
165
165
|
# `ATTRIBUTES` is defined inside resource-specific classes
|
166
166
|
def populate_attributes_for(content)
|
167
|
-
data_key = data_key_for self.class.name.base_class_name
|
167
|
+
data_key = data_key_for model_class: self.class.name.base_class_name
|
168
168
|
|
169
169
|
self.class.const_get(:ATTRIBUTES).each do |attr|
|
170
170
|
value = if content.key?(data_key) && content[data_key].is_a?(Hash)
|
@@ -16,16 +16,21 @@ module Lokalise
|
|
16
16
|
# @return [String]
|
17
17
|
# @param model_class [String]
|
18
18
|
# @param plural [Boolean] Should the returned value be pluralized?
|
19
|
-
def data_key_for(model_class
|
20
|
-
data_key_plural = get_key(
|
19
|
+
def data_key_for(model_class:, plural: false, collection: false)
|
20
|
+
data_key_plural = get_key(
|
21
|
+
name: 'DATA_KEY_PLURAL',
|
22
|
+
model_class: model_class,
|
23
|
+
collection: true,
|
24
|
+
strict: true
|
25
|
+
)
|
21
26
|
|
22
27
|
return data_key_plural if collection && data_key_plural
|
23
28
|
|
24
|
-
data_key = get_key 'DATA_KEY', model_class, collection
|
29
|
+
data_key = get_key name: 'DATA_KEY', model_class: model_class, collection: collection
|
25
30
|
|
26
31
|
return data_key unless plural
|
27
32
|
|
28
|
-
data_key
|
33
|
+
"#{data_key}s"
|
29
34
|
end
|
30
35
|
|
31
36
|
# Returns key used to determine resource id (for example `user_id` or `project_id`).
|
@@ -35,7 +40,7 @@ module Lokalise
|
|
35
40
|
# @return [String]
|
36
41
|
# @param model_class [String]
|
37
42
|
def id_key_for(model_class)
|
38
|
-
get_key('ID_KEY', model_class)
|
43
|
+
"#{get_key(name: 'ID_KEY', model_class: model_class)}_id"
|
39
44
|
end
|
40
45
|
|
41
46
|
# Loads attributes for the given resource based on its name
|
@@ -52,7 +57,7 @@ module Lokalise
|
|
52
57
|
|
53
58
|
private
|
54
59
|
|
55
|
-
def get_key(name
|
60
|
+
def get_key(name:, model_class:, collection: false, strict: false)
|
56
61
|
key = if collection && Module.const_defined?("Lokalise::Collections::#{model_class}::#{name}")
|
57
62
|
Module.const_get "Lokalise::Collections::#{model_class}::#{name}"
|
58
63
|
elsif Module.const_defined? "Lokalise::Resources::#{model_class}::#{name}"
|
data/ruby-lokalise-api.gemspec
CHANGED
@@ -10,8 +10,9 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.summary = 'Ruby interface to the Lokalise API'
|
11
11
|
spec.description = 'Opinionated Ruby client for the Lokalise platform API allowing to work with translations, projects, users and other resources as with Ruby objects.'
|
12
12
|
spec.homepage = 'https://github.com/lokalise/ruby-lokalise-api'
|
13
|
-
spec.license = '
|
13
|
+
spec.license = 'BSD-3-Clause'
|
14
14
|
spec.platform = Gem::Platform::RUBY
|
15
|
+
spec.required_ruby_version = '>= 2.5.0'
|
15
16
|
|
16
17
|
spec.files = Dir['README.md', 'LICENSE',
|
17
18
|
'CHANGELOG.md', 'lib/**/*.rb', 'lib/ruby-lokalise-api/data/attributes.json',
|
@@ -30,9 +31,9 @@ Gem::Specification.new do |spec|
|
|
30
31
|
spec.add_development_dependency 'oj', '~> 3.10'
|
31
32
|
spec.add_development_dependency 'rake', '~> 13.0'
|
32
33
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
33
|
-
spec.add_development_dependency 'rubocop', '~>
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 1.6'
|
34
35
|
spec.add_development_dependency 'rubocop-performance', '~> 1.5'
|
35
|
-
spec.add_development_dependency 'rubocop-rspec', '~>
|
36
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
|
36
37
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
37
38
|
spec.add_development_dependency 'vcr', '~> 6.0'
|
38
39
|
end
|
@@ -27,7 +27,7 @@ RSpec.describe Lokalise::JsonHandler do
|
|
27
27
|
'{":name":"rspec proj",":description":"demo project for rspec"}'
|
28
28
|
end
|
29
29
|
|
30
|
-
# rubocop:disable RSpec/LeakyConstantDeclaration
|
30
|
+
# rubocop:disable RSpec/LeakyConstantDeclaration, Lint/ConstantDefinitionInBlock
|
31
31
|
before do
|
32
32
|
module Lokalise
|
33
33
|
module JsonHandler
|
@@ -55,10 +55,10 @@ RSpec.describe Lokalise::JsonHandler do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
58
|
-
# rubocop:enable RSpec/LeakyConstantDeclaration
|
58
|
+
# rubocop:enable RSpec/LeakyConstantDeclaration, Lint/ConstantDefinitionInBlock
|
59
59
|
|
60
60
|
it 'allows to customize #load' do
|
61
|
-
|
61
|
+
allow(Oj).to receive(:load).and_return(loaded_json)
|
62
62
|
expect(JSON).not_to receive(:parse)
|
63
63
|
projects = VCR.use_cassette('all_projects_pagination') do
|
64
64
|
test_client.projects limit: 1, page: 2
|
@@ -70,7 +70,7 @@ RSpec.describe Lokalise::JsonHandler do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'allows to customize #dump' do
|
73
|
-
|
73
|
+
allow(Oj).to receive(:dump).and_return(dumped_json)
|
74
74
|
expect(JSON).not_to receive(:dump)
|
75
75
|
project = VCR.use_cassette('new_project') do
|
76
76
|
test_client.create_project name: 'rspec proj', description: 'demo project for rspec'
|
@@ -36,9 +36,9 @@ RSpec.describe Lokalise::Client do
|
|
36
36
|
specify '#create_payment_card' do
|
37
37
|
card = VCR.use_cassette('new_payment_card') do
|
38
38
|
test_client.create_payment_card number: '4242424242424242',
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
cvc: '123',
|
40
|
+
exp_month: 1,
|
41
|
+
exp_year: 2030
|
42
42
|
end
|
43
43
|
|
44
44
|
expect(card.card_id).to eq(card_id)
|
@@ -35,8 +35,8 @@ RSpec.describe Lokalise::Client do
|
|
35
35
|
expect(task.task_id).to eq(11_925)
|
36
36
|
expect(task.title).to eq('node updated')
|
37
37
|
expect(task.description).to eq('')
|
38
|
-
expect(task.status).to eq('
|
39
|
-
expect(task.progress).to eq(
|
38
|
+
expect(task.status).to eq('completed')
|
39
|
+
expect(task.progress).to eq(0)
|
40
40
|
expect(task.due_date).to eq(nil)
|
41
41
|
expect(task.due_date_timestamp).to eq(nil)
|
42
42
|
expect(task.keys_count).to eq(16)
|
@@ -45,17 +45,18 @@ RSpec.describe Lokalise::Client do
|
|
45
45
|
expect(task.created_at_timestamp).to eq(1_557_764_126)
|
46
46
|
expect(task.created_by).to eq(20_181)
|
47
47
|
expect(task.created_by_email).to eq('bodrovis@protonmail.com')
|
48
|
-
expect(task.can_be_parent).to eq(
|
48
|
+
expect(task.can_be_parent).to eq(false)
|
49
49
|
expect(task.task_type).to eq('review')
|
50
50
|
expect(task.parent_task_id).to eq(nil)
|
51
51
|
expect(task.closing_tags).to eq([])
|
52
52
|
expect(task.languages.first['language_iso']).to eq('sq')
|
53
53
|
expect(task.auto_close_languages).to eq(true)
|
54
54
|
expect(task.auto_close_task).to eq(true)
|
55
|
-
expect(task.
|
56
|
-
expect(task.
|
57
|
-
expect(task.
|
58
|
-
expect(task.
|
55
|
+
expect(task.auto_close_items).to eq(true)
|
56
|
+
expect(task.completed_by).to eq(20_181)
|
57
|
+
expect(task.completed_by_email).to eq('bodrovis@protonmail.com')
|
58
|
+
expect(task.completed_at).to eq('2019-10-01 11:09:12 (Etc/UTC)')
|
59
|
+
expect(task.completed_at_timestamp).to eq(1_569_928_152)
|
59
60
|
expect(task.do_lock_translations).to eq(false)
|
60
61
|
expect(task.custom_translation_status_ids).to eq([])
|
61
62
|
end
|
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
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Bodrov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '1.6'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
138
|
+
version: '1.6'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rubocop-performance
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
159
|
+
version: '2.0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
166
|
+
version: '2.0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: simplecov
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -317,9 +317,9 @@ files:
|
|
317
317
|
- spec/support/vcr.rb
|
318
318
|
homepage: https://github.com/lokalise/ruby-lokalise-api
|
319
319
|
licenses:
|
320
|
-
-
|
320
|
+
- BSD-3-Clause
|
321
321
|
metadata: {}
|
322
|
-
post_install_message:
|
322
|
+
post_install_message:
|
323
323
|
rdoc_options: []
|
324
324
|
require_paths:
|
325
325
|
- lib
|
@@ -327,15 +327,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
327
327
|
requirements:
|
328
328
|
- - ">="
|
329
329
|
- !ruby/object:Gem::Version
|
330
|
-
version:
|
330
|
+
version: 2.5.0
|
331
331
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
332
332
|
requirements:
|
333
333
|
- - ">="
|
334
334
|
- !ruby/object:Gem::Version
|
335
335
|
version: '0'
|
336
336
|
requirements: []
|
337
|
-
rubygems_version: 3.
|
338
|
-
signing_key:
|
337
|
+
rubygems_version: 3.2.7
|
338
|
+
signing_key:
|
339
339
|
specification_version: 4
|
340
340
|
summary: Ruby interface to the Lokalise API
|
341
341
|
test_files:
|