ruby-lokalise-api 4.2.0 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +1 -1
  3. data/README.md +10 -2
  4. data/lib/ruby-lokalise-api/client.rb +6 -2
  5. data/lib/ruby-lokalise-api/collections/base.rb +19 -7
  6. data/lib/ruby-lokalise-api/collections/segment.rb +15 -0
  7. data/lib/ruby-lokalise-api/connection.rb +11 -5
  8. data/lib/ruby-lokalise-api/data/attributes.json +26 -0
  9. data/lib/ruby-lokalise-api/error.rb +2 -1
  10. data/lib/ruby-lokalise-api/oauth_client.rb +11 -0
  11. data/lib/ruby-lokalise-api/request.rb +3 -2
  12. data/lib/ruby-lokalise-api/resources/base.rb +18 -7
  13. data/lib/ruby-lokalise-api/resources/branch.rb +3 -1
  14. data/lib/ruby-lokalise-api/resources/contributor.rb +1 -1
  15. data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +1 -1
  16. data/lib/ruby-lokalise-api/resources/key.rb +1 -0
  17. data/lib/ruby-lokalise-api/resources/key_comment.rb +1 -1
  18. data/lib/ruby-lokalise-api/resources/order.rb +1 -0
  19. data/lib/ruby-lokalise-api/resources/payment_card.rb +1 -0
  20. data/lib/ruby-lokalise-api/resources/project.rb +1 -0
  21. data/lib/ruby-lokalise-api/resources/project_comment.rb +1 -0
  22. data/lib/ruby-lokalise-api/resources/project_language.rb +1 -1
  23. data/lib/ruby-lokalise-api/resources/queued_process.rb +1 -1
  24. data/lib/ruby-lokalise-api/resources/screenshot.rb +1 -0
  25. data/lib/ruby-lokalise-api/resources/segment.rb +19 -0
  26. data/lib/ruby-lokalise-api/resources/snapshot.rb +1 -0
  27. data/lib/ruby-lokalise-api/resources/task.rb +1 -0
  28. data/lib/ruby-lokalise-api/resources/team_user.rb +1 -1
  29. data/lib/ruby-lokalise-api/resources/team_user_billing_details.rb +14 -0
  30. data/lib/ruby-lokalise-api/resources/team_user_group.rb +1 -1
  31. data/lib/ruby-lokalise-api/resources/translation.rb +1 -0
  32. data/lib/ruby-lokalise-api/resources/translation_provider.rb +1 -1
  33. data/lib/ruby-lokalise-api/resources/webhook.rb +1 -0
  34. data/lib/ruby-lokalise-api/rest/segments.rb +43 -0
  35. data/lib/ruby-lokalise-api/rest/team_user_billing_details.rb +34 -0
  36. data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +3 -1
  37. data/lib/ruby-lokalise-api/utils/string_utils.rb +24 -18
  38. data/lib/ruby-lokalise-api/version.rb +1 -1
  39. data/lib/ruby-lokalise-api.rb +19 -0
  40. data/ruby-lokalise-api.gemspec +18 -14
  41. data/spec/lib/ruby-lokalise-api/connection_spec.rb +45 -1
  42. data/spec/lib/ruby-lokalise-api/error_spec.rb +8 -0
  43. data/spec/lib/ruby-lokalise-api/rest/segments_spec.rb +106 -0
  44. data/spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb +48 -0
  45. data/spec/lib/ruby-lokalise-api_spec.rb +21 -0
  46. data/spec/support/test_client.rb +4 -0
  47. metadata +33 -10
  48. data/spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb +0 -19
@@ -3,6 +3,8 @@
3
3
  module Lokalise
4
4
  module Utils
5
5
  module AttributeHelpers
6
+ using Lokalise::Utils::StringUtils
7
+
6
8
  UNIFIED_RESOURCES = %w[comment language].freeze
7
9
 
8
10
  # Returns the name of the API resource for the given class.
@@ -40,7 +42,7 @@ module Lokalise
40
42
  # @return [String]
41
43
  # @param model_class [String]
42
44
  def id_key_for(model_class)
43
- "#{get_key(name: 'ID_KEY', model_class: model_class)}_id"
45
+ get_key name: 'ID_KEY', model_class: model_class
44
46
  end
45
47
 
46
48
  # Loads attributes for the given resource based on its name
@@ -3,25 +3,31 @@
3
3
  # Initial code taken from Facets gem by Rubyworks
4
4
  # https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
5
5
 
6
- class String
7
- # Underscore a string such that camelcase, dashes and spaces are
8
- # replaced by underscores.
9
- def snakecase
10
- base_class_name.
11
- gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
12
- gsub(/([a-z\d])([A-Z])/, '\1_\2').
13
- tr('-', '_').
14
- gsub(/\s/, '_').
15
- gsub(/__+/, '_').
16
- downcase
17
- end
6
+ module Lokalise
7
+ module Utils
8
+ module StringUtils
9
+ refine String do
10
+ # Underscore a string such that camelcase, dashes and spaces are
11
+ # replaced by underscores.
12
+ def snakecase
13
+ base_class_name.
14
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
15
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
16
+ tr('-', '_').
17
+ gsub(/\s/, '_').
18
+ gsub(/__+/, '_').
19
+ downcase
20
+ end
18
21
 
19
- # Turn `Module::Nested::ClassName` to just `ClassName`
20
- def base_class_name
21
- split('::').last
22
- end
22
+ # Turn `Module::Nested::ClassName` to just `ClassName`
23
+ def base_class_name
24
+ split('::').last
25
+ end
23
26
 
24
- def remove_trailing_slash
25
- delete_suffix '/'
27
+ def remove_trailing_slash
28
+ delete_suffix '/'
29
+ end
30
+ end
31
+ end
26
32
  end
27
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lokalise
4
- VERSION = '4.2.0'
4
+ VERSION = '4.5.0'
5
5
  end
@@ -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
 
@@ -36,6 +37,8 @@ require 'ruby-lokalise-api/resources/translation_provider'
36
37
  require 'ruby-lokalise-api/resources/team_user_group'
37
38
  require 'ruby-lokalise-api/resources/custom_translation_status'
38
39
  require 'ruby-lokalise-api/resources/webhook'
40
+ require 'ruby-lokalise-api/resources/segment'
41
+ require 'ruby-lokalise-api/resources/team_user_billing_details'
39
42
 
40
43
  require 'ruby-lokalise-api/collections/base'
41
44
  require 'ruby-lokalise-api/collections/branch'
@@ -60,8 +63,10 @@ require 'ruby-lokalise-api/collections/translation_provider'
60
63
  require 'ruby-lokalise-api/collections/team_user_group'
61
64
  require 'ruby-lokalise-api/collections/custom_translation_status'
62
65
  require 'ruby-lokalise-api/collections/webhook'
66
+ require 'ruby-lokalise-api/collections/segment'
63
67
 
64
68
  require 'ruby-lokalise-api/client'
69
+ require 'ruby-lokalise-api/oauth_client'
65
70
 
66
71
  module Lokalise
67
72
  class << self
@@ -78,5 +83,19 @@ module Lokalise
78
83
  def reset_client!
79
84
  @client = nil
80
85
  end
86
+
87
+ # Initializes a new OAuthClient object
88
+ #
89
+ # @return [Lokalise::OAuthClient]
90
+ # @param token [String]
91
+ # @param params [Hash]
92
+ def oauth_client(token, params = {})
93
+ @oauth_client ||= Lokalise::OAuthClient.new token, params
94
+ end
95
+
96
+ # Reset the currently set OAuth client
97
+ def reset_oauth_client!
98
+ @oauth_client = nil
99
+ end
81
100
  end
82
101
  end
@@ -5,7 +5,7 @@ require File.expand_path('lib/ruby-lokalise-api/version', __dir__)
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'ruby-lokalise-api'
7
7
  spec.version = Lokalise::VERSION
8
- spec.authors = ['Ilya Bodrov']
8
+ spec.authors = ['Ilya Bodrov-Krukowski']
9
9
  spec.email = ['golosizpru@gmail.com']
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.'
@@ -22,18 +22,22 @@ Gem::Specification.new do |spec|
22
22
  spec.extra_rdoc_files = ['README.md']
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_dependency 'addressable', '~> 2.5'
26
- spec.add_dependency 'faraday', '~> 1.0'
27
- spec.add_dependency 'json', '>= 1.8.0'
25
+ spec.add_dependency 'addressable', '~> 2.5'
26
+ spec.add_dependency 'faraday', '~> 1.0'
27
+ spec.add_dependency 'faraday_middleware', '~> 1.0'
28
+ spec.add_dependency 'json', '>= 1.8.0'
28
29
 
29
- spec.add_development_dependency 'codecov', '~> 0.1'
30
- spec.add_development_dependency 'dotenv', '~> 2.5'
31
- spec.add_development_dependency 'oj', '~> 3.10'
32
- spec.add_development_dependency 'rake', '~> 13.0'
33
- spec.add_development_dependency 'rspec', '~> 3.6'
34
- spec.add_development_dependency 'rubocop', '~> 1.6'
35
- spec.add_development_dependency 'rubocop-performance', '~> 1.5'
36
- spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
37
- spec.add_development_dependency 'simplecov', '~> 0.16'
38
- spec.add_development_dependency 'vcr', '~> 6.0'
30
+ spec.add_development_dependency 'codecov', '~> 0.1'
31
+ spec.add_development_dependency 'dotenv', '~> 2.5'
32
+ spec.add_development_dependency 'oj', '~> 3.10'
33
+ spec.add_development_dependency 'rake', '~> 13.0'
34
+ spec.add_development_dependency 'rspec', '~> 3.6'
35
+ spec.add_development_dependency 'rubocop', '~> 1.6'
36
+ spec.add_development_dependency 'rubocop-performance', '~> 1.5'
37
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.0'
38
+ spec.add_development_dependency 'simplecov', '~> 0.16'
39
+ spec.add_development_dependency 'vcr', '~> 6.0'
40
+ spec.metadata = {
41
+ 'rubygems_mfa_required' => 'true'
42
+ }
39
43
  end
@@ -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 'timeouts should not be set by default but the token must be present' do
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
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Lokalise::Client do
4
+ let(:project_id) { '39066161618d4ecb9fdc12.00274309' }
5
+ let(:key_id) { 129_358_815 }
6
+
7
+ describe '#segments' do
8
+ it 'returns all segments for a key under lang_iso' do
9
+ segments = VCR.use_cassette('all_key_segments') do
10
+ test_client.segments project_id, key_id, 'en'
11
+ end.collection
12
+
13
+ expect(segments.count).to eq(4)
14
+ expect(segments.first.value).to eq('Hello!')
15
+ end
16
+ end
17
+
18
+ describe '#segment' do
19
+ it 'returns a single segment' do
20
+ lang_iso = 'en'
21
+ segment_number = 2
22
+
23
+ segment = VCR.use_cassette('key_segment') do
24
+ test_client.segment project_id, key_id, lang_iso, segment_number
25
+ end
26
+
27
+ expect(segment.key_id).to eq(key_id)
28
+ expect(segment.segment_number).to eq(segment_number)
29
+ expect(segment.language_iso).to eq(lang_iso)
30
+ expect(segment.modified_at).to eq('2021-11-22 16:46:50 (Etc/UTC)')
31
+ expect(segment.modified_at_timestamp).to eq(1_637_599_610)
32
+ expect(segment.modified_by).to eq(20_181)
33
+ expect(segment.modified_by_email).to eq('bodrovis@protonmail.com')
34
+ expect(segment.value).to eq('This is just a simple text.')
35
+ expect(segment.is_fuzzy).to eq(false)
36
+ expect(segment.is_reviewed).to eq(false)
37
+ expect(segment.reviewed_by).to eq(0)
38
+ expect(segment.words).to eq(6)
39
+ expect(segment.custom_translation_statuses.first['color']).to eq('#61bd4f')
40
+ end
41
+
42
+ it 'allows to pass params' do
43
+ lang_iso = 'en'
44
+ segment_number = 2
45
+
46
+ segment = VCR.use_cassette('key_segment_params') do
47
+ test_client.segment project_id, key_id, lang_iso, segment_number, disable_references: '1'
48
+ end
49
+
50
+ expect(segment.segment_number).to eq(segment_number)
51
+ expect(segment.value).to eq('This is just a simple text.')
52
+ expect(segment.language_iso).to eq(lang_iso)
53
+ end
54
+ end
55
+
56
+ specify '#update_segment' do
57
+ lang_iso = 'en'
58
+ segment_number = 3
59
+
60
+ segment = VCR.use_cassette('update_key_segment') do
61
+ test_client.update_segment project_id, key_id, lang_iso, segment_number,
62
+ value: 'Updated via API',
63
+ is_reviewed: true
64
+ end
65
+
66
+ expect(segment.segment_number).to eq(segment_number)
67
+ expect(segment.value).to eq('Updated via API')
68
+ expect(segment.language_iso).to eq(lang_iso)
69
+ end
70
+
71
+ context 'when segment methods are chained' do
72
+ specify '#reload_data' do
73
+ lang_iso = 'en'
74
+ segment_number = 2
75
+
76
+ segment = VCR.use_cassette('key_segment') do
77
+ test_client.segment project_id, key_id, lang_iso, segment_number
78
+ end
79
+
80
+ reloaded_segment = VCR.use_cassette('reload_key_segment') do
81
+ segment.reload_data
82
+ end
83
+
84
+ expect(reloaded_segment.segment_number).to eq(segment_number)
85
+ expect(reloaded_segment.key_id).to eq(key_id)
86
+ end
87
+
88
+ specify '#update' do
89
+ lang_iso = 'en'
90
+ segment_number = 4
91
+
92
+ segment = VCR.use_cassette('another_key_segment') do
93
+ test_client.segment project_id, key_id, lang_iso, segment_number
94
+ end
95
+
96
+ updated_segment = VCR.use_cassette('update_key_segment_chained') do
97
+ segment.update value: 'Chain Updated',
98
+ is_fuzzy: true
99
+ end
100
+
101
+ expect(updated_segment.segment_number).to eq(segment_number)
102
+ expect(updated_segment.is_fuzzy).to eq(true)
103
+ expect(updated_segment.value).to eq('Chain Updated')
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Lokalise::Client do
4
+ let(:team_id) { 176_692 }
5
+ let(:team_id2) { 273_879 }
6
+
7
+ specify '#team_user_billing_details' do
8
+ details = VCR.use_cassette('team_user_billing_details') do
9
+ test_client.team_user_billing_details team_id
10
+ end
11
+
12
+ expect(details.billing_email).to eq('hello@example.com')
13
+ expect(details.country_code).to eq('LV')
14
+ expect(details.zip).to eq('LV-6543')
15
+ expect(details.state_code).to eq('')
16
+ expect(details.address1).to eq('Sample line 1')
17
+ expect(details.address2).to eq('Sample line 2')
18
+ expect(details.city).to eq('Riga')
19
+ expect(details.phone).to eq('+371123456')
20
+ expect(details.company).to eq('Self-employed')
21
+ expect(details.vatnumber).to eq('123')
22
+ end
23
+
24
+ specify '#create_team_user_billing_details' do
25
+ details = VCR.use_cassette('create_team_user_billing_details') do
26
+ test_client.create_team_user_billing_details team_id2, billing_email: 'ruby@example.com',
27
+ country_code: 'LV',
28
+ zip: 'LV-1111'
29
+ end
30
+
31
+ expect(details.billing_email).to eq('ruby@example.com')
32
+ expect(details.country_code).to eq('LV')
33
+ expect(details.address1).to eq('')
34
+ end
35
+
36
+ specify '#update_team_user_billing_details' do
37
+ details = VCR.use_cassette('update_team_user_billing_details') do
38
+ test_client.update_team_user_billing_details team_id2, billing_email: 'ruby_rspec@example.com',
39
+ country_code: 'LV',
40
+ zip: 'LV-1111',
41
+ address1: 'Addr line 1'
42
+ end
43
+
44
+ expect(details.billing_email).to eq('ruby_rspec@example.com')
45
+ expect(details.country_code).to eq('LV')
46
+ expect(details.address1).to eq('Addr line 1')
47
+ end
48
+ end
@@ -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
@@ -4,4 +4,8 @@ module TestClient
4
4
  def test_client(token = nil, params = {})
5
5
  Lokalise.client(token || ENV['LOKALISE_API_TOKEN'], params)
6
6
  end
7
+
8
+ def test_oauth_client(token = nil, params = {})
9
+ Lokalise.oauth_client(token || ENV['LOKALISE_API_TOKEN'], params)
10
+ end
7
11
  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.2.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
- - Ilya Bodrov
7
+ - Ilya Bodrov-Krukowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-28 00:00:00.000000000 Z
11
+ date: 2021-12-16 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
@@ -225,6 +239,7 @@ files:
225
239
  - lib/ruby-lokalise-api/collections/project_language.rb
226
240
  - lib/ruby-lokalise-api/collections/queued_process.rb
227
241
  - lib/ruby-lokalise-api/collections/screenshot.rb
242
+ - lib/ruby-lokalise-api/collections/segment.rb
228
243
  - lib/ruby-lokalise-api/collections/snapshot.rb
229
244
  - lib/ruby-lokalise-api/collections/system_language.rb
230
245
  - lib/ruby-lokalise-api/collections/task.rb
@@ -238,6 +253,7 @@ files:
238
253
  - lib/ruby-lokalise-api/data/attributes.json
239
254
  - lib/ruby-lokalise-api/error.rb
240
255
  - lib/ruby-lokalise-api/json_handler.rb
256
+ - lib/ruby-lokalise-api/oauth_client.rb
241
257
  - lib/ruby-lokalise-api/request.rb
242
258
  - lib/ruby-lokalise-api/resources/base.rb
243
259
  - lib/ruby-lokalise-api/resources/branch.rb
@@ -253,11 +269,13 @@ files:
253
269
  - lib/ruby-lokalise-api/resources/project_language.rb
254
270
  - lib/ruby-lokalise-api/resources/queued_process.rb
255
271
  - lib/ruby-lokalise-api/resources/screenshot.rb
272
+ - lib/ruby-lokalise-api/resources/segment.rb
256
273
  - lib/ruby-lokalise-api/resources/snapshot.rb
257
274
  - lib/ruby-lokalise-api/resources/system_language.rb
258
275
  - lib/ruby-lokalise-api/resources/task.rb
259
276
  - lib/ruby-lokalise-api/resources/team.rb
260
277
  - lib/ruby-lokalise-api/resources/team_user.rb
278
+ - lib/ruby-lokalise-api/resources/team_user_billing_details.rb
261
279
  - lib/ruby-lokalise-api/resources/team_user_group.rb
262
280
  - lib/ruby-lokalise-api/resources/translation.rb
263
281
  - lib/ruby-lokalise-api/resources/translation_provider.rb
@@ -274,8 +292,10 @@ files:
274
292
  - lib/ruby-lokalise-api/rest/projects.rb
275
293
  - lib/ruby-lokalise-api/rest/queued_processes.rb
276
294
  - lib/ruby-lokalise-api/rest/screenshots.rb
295
+ - lib/ruby-lokalise-api/rest/segments.rb
277
296
  - lib/ruby-lokalise-api/rest/snapshots.rb
278
297
  - lib/ruby-lokalise-api/rest/tasks.rb
298
+ - lib/ruby-lokalise-api/rest/team_user_billing_details.rb
279
299
  - lib/ruby-lokalise-api/rest/team_user_group.rb
280
300
  - lib/ruby-lokalise-api/rest/team_users.rb
281
301
  - lib/ruby-lokalise-api/rest/teams.rb
@@ -302,15 +322,16 @@ files:
302
322
  - spec/lib/ruby-lokalise-api/rest/projects_spec.rb
303
323
  - spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb
304
324
  - spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
325
+ - spec/lib/ruby-lokalise-api/rest/segments_spec.rb
305
326
  - spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
306
327
  - spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
328
+ - spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb
307
329
  - spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
308
330
  - spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
309
331
  - spec/lib/ruby-lokalise-api/rest/teams_spec.rb
310
332
  - spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
311
333
  - spec/lib/ruby-lokalise-api/rest/translations_spec.rb
312
334
  - spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb
313
- - spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
314
335
  - spec/lib/ruby-lokalise-api_spec.rb
315
336
  - spec/spec_helper.rb
316
337
  - spec/support/test_client.rb
@@ -318,7 +339,8 @@ files:
318
339
  homepage: https://github.com/lokalise/ruby-lokalise-api
319
340
  licenses:
320
341
  - BSD-3-Clause
321
- metadata: {}
342
+ metadata:
343
+ rubygems_mfa_required: 'true'
322
344
  post_install_message:
323
345
  rdoc_options: []
324
346
  require_paths:
@@ -334,7 +356,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
356
  - !ruby/object:Gem::Version
335
357
  version: '0'
336
358
  requirements: []
337
- rubygems_version: 3.2.15
359
+ rubygems_version: 3.2.33
338
360
  signing_key:
339
361
  specification_version: 4
340
362
  summary: Ruby interface to the Lokalise API
@@ -354,15 +376,16 @@ test_files:
354
376
  - spec/lib/ruby-lokalise-api/rest/projects_spec.rb
355
377
  - spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb
356
378
  - spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
379
+ - spec/lib/ruby-lokalise-api/rest/segments_spec.rb
357
380
  - spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
358
381
  - 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
382
+ - spec/lib/ruby-lokalise-api/rest/team_user_billing_details_spec.rb
361
383
  - spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
362
- - spec/lib/ruby-lokalise-api/rest/translations_spec.rb
384
+ - spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
385
+ - spec/lib/ruby-lokalise-api/rest/teams_spec.rb
363
386
  - spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
387
+ - spec/lib/ruby-lokalise-api/rest/translations_spec.rb
364
388
  - spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb
365
- - spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
366
389
  - spec/lib/ruby-lokalise-api_spec.rb
367
390
  - spec/spec_helper.rb
368
391
  - spec/support/test_client.rb
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe String do
4
- let(:snake_result) { 'snake_case' }
5
- let(:bc_result) { 'Klass' }
6
-
7
- specify '#snakecase' do
8
- expect('SnakeCase'.snakecase).to eq snake_result
9
- expect('Snake-Case'.snakecase).to eq snake_result
10
- expect('Snake Case'.snakecase).to eq snake_result
11
- expect('Snake - Case'.snakecase).to eq snake_result
12
- end
13
-
14
- specify '#base_class_name' do
15
- expect('Namespace::Nested::Klass'.base_class_name).to eq bc_result
16
- expect('Nested::Klass'.base_class_name).to eq bc_result
17
- expect('Klass'.base_class_name).to eq bc_result
18
- end
19
- end