pisoni 1.29.1 → 1.30.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bc480ca255fad3679c652ee5913824d543c7f4e5d51b0866f3919d4d1a496c3
4
- data.tar.gz: d5b36dd8d28242573d3e476ae4420c93dfd30275848ea16c4526ad61db1a386e
3
+ metadata.gz: bc7b659e66478ddb954b8144e47cd83cbf80acd54e16f7f051c82f07f47c221f
4
+ data.tar.gz: fb1ab6344af206a17085bf42134622fef72e57093bad247ce8efaa2b823b8ff6
5
5
  SHA512:
6
- metadata.gz: ffb11b5ae16138162d9fbb2c5b0784618b94d478cbbfd6e8edc377ae05b3554471ffd360db902ba5e569b0c90b96ceca3005860d53f57cfdab744cb48f019716
7
- data.tar.gz: 5ff19f326743a8e56b8cb2df1ab37bbef54bafbd075a4e8d6a90ee729b51e8950e7248d331724982fbf7f42c5e6ceb265f13767bd4c9b7d4c09633ab982b3eca
6
+ metadata.gz: 2b39b7a9ed13db3500fb782b1f1f5e75cc9d15261938f70e11788f84a96957a6f38ca3cc801bf84f7b5ee94cb4bac4a1bfed12ec9a4bc99fb5c01f73ed4ea860
7
+ data.tar.gz: 1de636e31c5d8c5897eda7282283a157553a032c81f26b58378c39a342021786285b851c59bd786dbbf3f5ea536ed3cd4f564c415240887af136e46e18345c2f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  Notable changes to Pisoni will be tracked in this document.
4
4
 
5
+ ## 1.30.0 - 2024-02-29
6
+
7
+ ### Changed
8
+
9
+ - Fixed the issue with fetching utilization and managing referrer filters for applications with special characters in the
10
+ application IDs by escaping them. [#33](https://github.com/3scale/pisoni/pull/33)
11
+ - Upgrade dependencies, specifically `faraday` and `json`, making Ruby 2.6 the minimum supported version. [#34](https://github.com/3scale/pisoni/pull/34)
12
+
5
13
  ## 1.29.1 - 2023-11-30
6
14
 
7
15
  ### Changed
@@ -106,7 +106,7 @@ module ThreeScale
106
106
  else
107
107
  Core.faraday.send method, uri, attributes.to_json
108
108
  end
109
- rescue Faraday::Error::ClientError, SystemCallError => e
109
+ rescue Faraday::ClientError, SystemCallError => e
110
110
  raise ConnectionError, e
111
111
  end
112
112
  private :api_http
@@ -1,3 +1,5 @@
1
+ require 'erb'
2
+
1
3
  module ThreeScale
2
4
  module Core
3
5
  module APIClient
@@ -38,6 +40,10 @@ module ThreeScale
38
40
  @default_prefix = prefix
39
41
  end
40
42
 
43
+ def url_encode(str)
44
+ ERB::Util.url_encode(str)
45
+ end
46
+
41
47
  private
42
48
 
43
49
  def internal_api_error(status)
@@ -1,5 +1,3 @@
1
- require 'cgi'
2
-
3
1
  module ThreeScale
4
2
  module Core
5
3
  class Application < APIClient::Resource
@@ -18,16 +16,12 @@ module ThreeScale
18
16
  private_class_method :base_uri
19
17
 
20
18
  def self.app_uri(service_id, id)
21
- escaped_id = CGI::escape(id.to_s)
22
-
23
- "#{base_uri(service_id)}#{escaped_id}"
19
+ "#{base_uri(service_id)}#{url_encode(id)}"
24
20
  end
25
21
  private_class_method :app_uri
26
22
 
27
23
  def self.key_uri(service_id, key)
28
- escaped_key = CGI::escape(key.to_s)
29
-
30
- "#{base_uri(service_id)}key/#{escaped_key}"
24
+ "#{base_uri(service_id)}key/#{url_encode(key)}"
31
25
  end
32
26
  private_class_method :key_uri
33
27
 
@@ -77,8 +71,7 @@ module ThreeScale
77
71
 
78
72
  def self.save_id_by_key(service_id, user_key, id)
79
73
  raise ApplicationHasInconsistentData.new(id, user_key) if (service_id.nil? || id.nil? || user_key.nil? || service_id=="" || id=="" || user_key=="")
80
- escaped_key = CGI::escape(user_key)
81
- ret = api_do_put({}, uri: "#{app_uri(service_id, id)}/key/#{escaped_key}")
74
+ ret = api_do_put({}, uri: "#{app_uri(service_id, id)}/key/#{url_encode(user_key)}")
82
75
  ret[:ok]
83
76
  end
84
77
 
@@ -1,5 +1,3 @@
1
- require 'cgi'
2
-
3
1
  module ThreeScale
4
2
  module Core
5
3
  class ApplicationKey < APIClient::Resource
@@ -23,12 +21,12 @@ module ThreeScale
23
21
  end
24
22
 
25
23
  def self.base_uri(service_id, application_id)
26
- "#{default_uri}#{service_id}/applications/#{CGI::escape(application_id.to_s)}/keys/"
24
+ "#{default_uri}#{service_id}/applications/#{url_encode(application_id)}/keys/"
27
25
  end
28
26
  private_class_method :base_uri
29
27
 
30
28
  def self.application_key_uri(service_id, application_id, value = '')
31
- "#{base_uri(service_id, application_id)}#{CGI::escape(value.to_s)}"
29
+ "#{base_uri(service_id, application_id)}#{url_encode(value)}"
32
30
  end
33
31
  private_class_method :application_key_uri
34
32
  end
@@ -25,7 +25,7 @@ module ThreeScale
25
25
  end
26
26
 
27
27
  def self.base_uri(service_id, application_id)
28
- "#{default_uri}#{service_id}/applications/#{application_id}/referrer_filters"
28
+ "#{default_uri}#{service_id}/applications/#{url_encode(application_id)}/referrer_filters"
29
29
  end
30
30
  private_class_method :base_uri
31
31
  end
@@ -6,7 +6,7 @@ module ThreeScale
6
6
  default_uri '/internal/services/'
7
7
 
8
8
  def self.utilization_uri(service_id, app_id)
9
- "#{default_uri}#{service_id}/applications/#{app_id}/utilization/"
9
+ "#{default_uri}#{service_id}/applications/#{url_encode(app_id)}/utilization/"
10
10
  end
11
11
  private_class_method :utilization_uri
12
12
 
@@ -1,5 +1,5 @@
1
1
  module ThreeScale
2
2
  module Core
3
- VERSION = '1.29.1'
3
+ VERSION = '1.30.0'
4
4
  end
5
5
  end
data/lib/3scale/core.rb CHANGED
@@ -1,14 +1,7 @@
1
1
  require 'uri'
2
2
  require 'json'
3
3
  require 'faraday'
4
- require 'net/http/persistent'
5
-
6
- # Warn that Faraday < 0.13 and Net::HTTP::Persistent >= 3.0.0 don't mix well
7
- if Faraday::VERSION =~ /0\.([0-9]|1[012])\.\d+/ &&
8
- Net::HTTP::Persistent::VERSION =~ /^[^012]\.\d+\.\d+/
9
- warn 'The combination of faraday < 0.13 and net-http-persistent 3.0+ is ' \
10
- 'known to have issues. See https://github.com/lostisland/faraday/issues/617'
11
- end
4
+ require 'faraday/net_http_persistent'
12
5
 
13
6
  require '3scale/core/version'
14
7
  require '3scale/core/logger'
@@ -56,7 +49,7 @@ module ThreeScale
56
49
  @password = uri.password
57
50
  end
58
51
 
59
- @faraday.basic_auth(@username, @password) if @username || @password
52
+ @faraday.set_basic_auth(@username, @password) if @username || @password
60
53
  @faraday
61
54
  end
62
55
 
data/pisoni.gemspec CHANGED
@@ -18,12 +18,13 @@ Gem::Specification.new do |s|
18
18
  s.description = 'Client for the Apisonator internal API for model data.'
19
19
  s.license = 'Apache-2.0'
20
20
 
21
- s.add_dependency 'faraday', '>= 0.9.1'
22
- s.add_dependency 'json', '>= 1.8.1'
23
- s.add_dependency 'injectedlogger', '>= 0.0.13'
24
- s.add_dependency 'net-http-persistent'
21
+ # faraday v2.9.0 removes support for Ruby 2.7, see https://github.com/lostisland/faraday/releases/tag/v2.9.0
22
+ s.add_runtime_dependency 'faraday', '~> 2.0', '<= 2.9'
23
+ s.add_runtime_dependency 'json', '~> 2.7', '>= 2.7.1'
24
+ s.add_runtime_dependency 'injectedlogger', '0.0.13'
25
+ s.add_runtime_dependency 'faraday-net_http_persistent', '~> 2.1'
25
26
 
26
- s.add_development_dependency 'rake'
27
+ s.add_development_dependency 'rake', '~> 13.1'
27
28
 
28
29
  s.files = `git ls-files`.split($/).reject do |f| [
29
30
  %r{^\.[^\/]},
@@ -39,5 +40,5 @@ Gem::Specification.new do |s|
39
40
 
40
41
  s.rdoc_options = ["--charset=UTF-8"]
41
42
 
42
- s.required_ruby_version = '>= 2.3.0'
43
+ s.required_ruby_version = '>= 2.6.0'
43
44
  end
@@ -59,7 +59,7 @@ module ThreeScale
59
59
  end
60
60
 
61
61
  describe 'with a key that contains special chars (*, _, etc.)' do
62
- let(:key) { '#$*' }
62
+ let(:key) { SPECIAL_CHARACTERS }
63
63
 
64
64
  before do
65
65
  ApplicationKey.delete(service_id, app_id, key)
@@ -74,8 +74,8 @@ module ThreeScale
74
74
  end
75
75
 
76
76
  describe 'with app ID that contains special characters ({, $, ? etc.)' do
77
- let(:app_id) { 'abc{1}$3?' }
78
- let(:key) { 'z#$*' }
77
+ let(:app_id) { SPECIAL_CHARACTERS }
78
+ let(:key) { SPECIAL_CHARACTERS }
79
79
 
80
80
  before do
81
81
  ApplicationKey.delete(service_id, app_id, key)
@@ -119,7 +119,7 @@ module ThreeScale
119
119
  end
120
120
 
121
121
  describe 'with a key that contains special chars (*, _, etc.)' do
122
- let(:key_with_special_chars) { '#$*' }
122
+ let(:key_with_special_chars) { SPECIAL_CHARACTERS }
123
123
 
124
124
  before do
125
125
  ApplicationKey.save(service_id, app_id, key)
@@ -3,7 +3,7 @@ module ThreeScale
3
3
  module Core
4
4
  describe ApplicationReferrerFilter do
5
5
  let(:service_id) { 10 }
6
- let(:app_id) { 100 }
6
+ let(:app_id) { SPECIAL_CHARACTERS }
7
7
  let(:filters) { %w(foo bar doopah) }
8
8
  let(:application) do
9
9
  { service_id: service_id,
@@ -24,6 +24,8 @@ module ThreeScale
24
24
  end
25
25
 
26
26
  describe '.load_all' do
27
+ subject { ApplicationReferrerFilter.load_all(service_id, app_id) }
28
+
27
29
  describe 'Getting all referrer filters' do
28
30
  let(:ref_filters) { %w(foo bar) }
29
31
 
@@ -32,14 +34,13 @@ module ThreeScale
32
34
  end
33
35
 
34
36
  it 'returns a sorted list of filters' do
35
- filters = ApplicationReferrerFilter.load_all(service_id, app_id)
36
- filters.must_equal ref_filters.sort
37
+ subject.must_equal ref_filters.sort
37
38
  end
38
39
  end
39
40
 
40
41
  describe 'when there are no referrer filters' do
41
42
  it 'returns an empty list' do
42
- ApplicationReferrerFilter.load_all(service_id, app_id).must_equal []
43
+ subject.must_equal []
43
44
  end
44
45
  end
45
46
  end
@@ -47,7 +47,7 @@ module ThreeScale
47
47
 
48
48
  describe 'with an app ID that contains special characters' do
49
49
  let(:service_id) { 2001 }
50
- let(:app_id) { '#$*' }
50
+ let(:app_id) { SPECIAL_CHARACTERS }
51
51
 
52
52
  before do
53
53
  Application.save service_id: service_id, id: app_id, state: 'suspended',
@@ -90,7 +90,7 @@ module ThreeScale
90
90
 
91
91
  describe 'with an app ID that contains special characters' do
92
92
  let(:service_id) { 2001 }
93
- let(:app_id) { '#$*' }
93
+ let(:app_id) { SPECIAL_CHARACTERS }
94
94
 
95
95
  before do
96
96
  Application.save service_id: service_id, id: app_id, state: 'suspended',
@@ -157,7 +157,7 @@ module ThreeScale
157
157
 
158
158
  describe 'with an app ID that contains special characters' do
159
159
  let(:service_id) { 2001 }
160
- let(:app_id) { '#$*' }
160
+ let(:app_id) { SPECIAL_CHARACTERS }
161
161
 
162
162
  before do
163
163
  Application.delete(service_id, app_id)
@@ -271,7 +271,7 @@ module ThreeScale
271
271
 
272
272
  describe 'by_key' do
273
273
  let(:key) { 'a_key' }
274
- let(:key_with_special_chars) { '#$*' }
274
+ let(:key_with_special_chars) { SPECIAL_CHARACTERS }
275
275
  let(:service_id) { 2001 }
276
276
  let(:app_id) { 8011 }
277
277
 
data/spec/spec_helper.rb CHANGED
@@ -13,3 +13,5 @@ $:.unshift(File.dirname(__FILE__) + '/../lib')
13
13
  require 'minitest/autorun'
14
14
  require 'bundler/setup'
15
15
  Bundler.require(:default, :development, :test)
16
+
17
+ SPECIAL_CHARACTERS = "! \"#$%&'()*+,-.:;<=>?@[]^_`{|}~\\/".freeze
@@ -105,6 +105,16 @@ module ThreeScale
105
105
  Utilization.load(service_id, non_existing_app_id).must_be_nil
106
106
  end
107
107
  end
108
+
109
+ describe 'with an application ID with special characters' do
110
+ let(:app_id) { SPECIAL_CHARACTERS }
111
+
112
+ subject { Utilization.load(service_id, app_id) }
113
+
114
+ it 'gets expected results' do
115
+ subject.wont_be_empty
116
+ end
117
+ end
108
118
  end
109
119
  end
110
120
  end
metadata CHANGED
@@ -1,85 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pisoni
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.29.1
4
+ version: 1.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alejandro Martinez Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-12 00:00:00.000000000 Z
11
+ date: 2024-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - "<="
18
21
  - !ruby/object:Gem::Version
19
- version: 0.9.1
22
+ version: '2.9'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ">="
27
+ - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 0.9.1
29
+ version: '2.0'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: '2.9'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: json
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.7'
31
40
  - - ">="
32
41
  - !ruby/object:Gem::Version
33
- version: 1.8.1
42
+ version: 2.7.1
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.7'
38
50
  - - ">="
39
51
  - !ruby/object:Gem::Version
40
- version: 1.8.1
52
+ version: 2.7.1
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: injectedlogger
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
- - - ">="
57
+ - - '='
46
58
  - !ruby/object:Gem::Version
47
59
  version: 0.0.13
48
60
  type: :runtime
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
51
63
  requirements:
52
- - - ">="
64
+ - - '='
53
65
  - !ruby/object:Gem::Version
54
66
  version: 0.0.13
55
67
  - !ruby/object:Gem::Dependency
56
- name: net-http-persistent
68
+ name: faraday-net_http_persistent
57
69
  requirement: !ruby/object:Gem::Requirement
58
70
  requirements:
59
- - - ">="
71
+ - - "~>"
60
72
  - !ruby/object:Gem::Version
61
- version: '0'
73
+ version: '2.1'
62
74
  type: :runtime
63
75
  prerelease: false
64
76
  version_requirements: !ruby/object:Gem::Requirement
65
77
  requirements:
66
- - - ">="
78
+ - - "~>"
67
79
  - !ruby/object:Gem::Version
68
- version: '0'
80
+ version: '2.1'
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: rake
71
83
  requirement: !ruby/object:Gem::Requirement
72
84
  requirements:
73
- - - ">="
85
+ - - "~>"
74
86
  - !ruby/object:Gem::Version
75
- version: '0'
87
+ version: '13.1'
76
88
  type: :development
77
89
  prerelease: false
78
90
  version_requirements: !ruby/object:Gem::Requirement
79
91
  requirements:
80
- - - ">="
92
+ - - "~>"
81
93
  - !ruby/object:Gem::Version
82
- version: '0'
94
+ version: '13.1'
83
95
  description: Client for the Apisonator internal API for model data.
84
96
  email:
85
97
  - alex@3scale.net
@@ -146,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
158
  requirements:
147
159
  - - ">="
148
160
  - !ruby/object:Gem::Version
149
- version: 2.3.0
161
+ version: 2.6.0
150
162
  required_rubygems_version: !ruby/object:Gem::Requirement
151
163
  requirements:
152
164
  - - ">="