scraper-central-ruby 2.0.0 → 2.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a17d4043d0b53c2a19fe4629d316b3fcc3cb04c4bfd640555449121d13c034b
4
- data.tar.gz: 8c98a99a53644ebf9e19e337b15b25c2e5887c85243f9b3c4fd2a949bf2acafa
3
+ metadata.gz: 344375e9baae6533bc98bb11d109dbe8771592d0d7029a83f3ee27176981938c
4
+ data.tar.gz: 1d02478a129bc7641c74733e3e4de6495112a2151ba6b2802fa1cf0a44f71c04
5
5
  SHA512:
6
- metadata.gz: e3426ffc94e2fd97fa80b055a0a6c2db8ee326dbcb163c33d3007278a1aaf71def15806126bc8ce0e44ae0562075d04f273cc73fe1ceec6bcc1d71d285387088
7
- data.tar.gz: 888fc81bf4dadbc686c7819833eb46c64f390d11474afb5ea36dcd1a4ce9dfdabd7a56f0684c26d7c0a0b39a3b2d399c57d0637b3383e6d3f1bd5f46cd96966e
6
+ metadata.gz: 0f6bcada267645f395aaf66aa6e39062beec893b2c3734be037b10cc7fda6664a51e37ab2de65c35cfc3a9786154b85955402f5c82f4934af844d99c202276e1
7
+ data.tar.gz: 60a335b4d9e62b53d98cde2436e522f0d93598251a64527439f7dd85576c612afeac5490ec81429f271c6eabd73f20872e299076abcef83606bae0c027ffe91c
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- scraper-central-ruby (2.0.0)
4
+ scraper-central-ruby (2.1.0)
5
5
  activesupport (~> 7.0)
6
6
  brotli (~> 0.5.0)
7
+ net-http-persistent (~> 4.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -33,6 +34,8 @@ GEM
33
34
  logger (1.6.5)
34
35
  minitest (5.25.4)
35
36
  mutex_m (0.3.0)
37
+ net-http-persistent (4.0.8)
38
+ connection_pool (>= 2.2.4, < 4)
36
39
  rake (13.2.1)
37
40
  securerandom (0.3.2)
38
41
  tzinfo (2.0.6)
data/README.md CHANGED
@@ -7,7 +7,7 @@ Ruby library to scrape and cache the data
7
7
  Add gem `scraper-central-ruby` into Gemfile:
8
8
 
9
9
  ```bash
10
- gem 'scraper-central-ruby', git: 'git@github.com:patterninc/scraper-central-ruby.git', tag: 'v2.0.0'
10
+ gem 'scraper-central-ruby', git: 'git@github.com:patterninc/scraper-central-ruby.git', tag: 'v2.1.0'
11
11
  ```
12
12
 
13
13
  ```bash
data/lib/auth.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'net/http'
1
+ require 'net/http/persistent'
2
2
  require 'uri'
3
3
  require 'json'
4
4
  require 'openssl'
@@ -10,6 +10,10 @@ class Auth
10
10
  AUTH0_DEFAULT_GRANT_TYPE = "client_credentials".freeze
11
11
  AUTH0_CACHE_KEY = 'AUTH0_CACHE_KEY'.freeze
12
12
 
13
+ HTTP = Net::HTTP::Persistent.new(name: 'scraper_central_auth').tap do |h|
14
+ h.verify_mode = OpenSSL::SSL::VERIFY_NONE
15
+ end
16
+
13
17
  def initialize(auth_config)
14
18
  @auth_config = auth_config
15
19
  end
@@ -30,15 +34,11 @@ class Auth
30
34
  def generate_token
31
35
  url = URI(AUTH0_TOKEN_ENDPOINT)
32
36
 
33
- http = Net::HTTP.new(url.host, url.port)
34
- http.use_ssl = true
35
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
36
-
37
37
  request = Net::HTTP::Post.new(url)
38
38
  request["content-type"] = 'application/json'
39
39
  request.body = token_params.to_json
40
40
 
41
- response = http.request(request)
41
+ response = HTTP.request(url, request)
42
42
  token = JSON.parse(response.read_body)['access_token']
43
43
  Cache.write(AUTH0_CACHE_KEY, token, expires_in: 1.day)
44
44
  token
data/lib/cache_server.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'net/http'
3
+ require 'net/http/persistent'
4
4
  require 'uri'
5
5
  require 'json'
6
6
  require 'logger'
@@ -10,6 +10,15 @@ class CacheServer
10
10
  AUTH0_BEARER_HEADER = 'Authorization'.freeze
11
11
  CONTENT_TYPE_HEADER = 'Content-Type'.freeze
12
12
 
13
+ # Persistent HTTP clients shared across all instances — reuses TCP connections
14
+ # instead of opening a new connection on every request.
15
+ GET_HTTP = Net::HTTP::Persistent.new(name: 'scraper_central_get_cache').tap do |h|
16
+ h.verify_mode = OpenSSL::SSL::VERIFY_NONE
17
+ end
18
+ PUT_HTTP = Net::HTTP::Persistent.new(name: 'scraper_central_put_cache').tap do |h|
19
+ h.verify_mode = OpenSSL::SSL::VERIFY_NONE
20
+ end
21
+
13
22
  def initialize(args)
14
23
  @proxy_name = args[:proxy_name]
15
24
  @enable_js = args[:enable_js]
@@ -24,16 +33,11 @@ class CacheServer
24
33
  payload = prepare_get_cache_payload(url)
25
34
 
26
35
  uri = URI.parse("#{ENV['SERVER_URL_GET_CACHE']}/v1/get-cache")
27
- http = Net::HTTP.new(uri.host, uri.port)
28
- if uri.scheme == 'https'
29
- http.use_ssl = true
30
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
31
- end
32
- request = Net::HTTP::Get.new(uri.request_uri, headers)
36
+ request = Net::HTTP::Get.new(uri.request_uri, auth_headers)
33
37
  request.body = payload.to_json
34
38
 
35
39
  begin
36
- response = http.request(request)
40
+ response = GET_HTTP.request(uri, request)
37
41
 
38
42
  if response.content_type.include?('application/json')
39
43
  response_body = JSON.parse(response.body)
@@ -63,17 +67,11 @@ class CacheServer
63
67
  }
64
68
 
65
69
  uri = URI.parse("#{ENV['SERVER_URL_PUT_CACHE']}/v1/put-cache")
66
- http = Net::HTTP.new(uri.host, uri.port)
67
- if uri.scheme == 'https'
68
- http.use_ssl = true
69
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
70
- end
71
-
72
- request = Net::HTTP::Post.new(uri.request_uri, headers)
70
+ request = Net::HTTP::Post.new(uri.request_uri, auth_headers)
73
71
  request.body = payload.to_json
74
72
 
75
73
  begin
76
- response = http.request(request)
74
+ response = PUT_HTTP.request(uri, request)
77
75
  if response.code.to_i != 200
78
76
  error_message = "Server returned bad status: #{response.code}"
79
77
  @logger.error error_message
@@ -91,7 +89,7 @@ class CacheServer
91
89
  Auth.new(@auth_config).get_token
92
90
  end
93
91
 
94
- def headers
92
+ def auth_headers
95
93
  {
96
94
  CONTENT_TYPE_HEADER => 'application/json',
97
95
  AUTH0_BEARER_HEADER => "Bearer #{auth_token}"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ScraperCentral
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.0'
5
5
  end
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  # Add the brotli gem dependency here
18
18
  spec.add_dependency 'brotli', '~> 0.5.0'
19
19
  spec.add_dependency 'activesupport', '~> 7.0'
20
+ spec.add_dependency 'net-http-persistent', '~> 4.0'
20
21
 
21
22
  # Specify which files should be added to the gem when it is released.
22
23
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scraper-central-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patterninc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-04 00:00:00.000000000 Z
11
+ date: 2026-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brotli
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '7.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: net-http-persistent
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -121,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
135
  - !ruby/object:Gem::Version
122
136
  version: '0'
123
137
  requirements: []
124
- rubygems_version: 3.2.3
138
+ rubygems_version: 3.4.10
125
139
  signing_key:
126
140
  specification_version: 4
127
141
  summary: Scraper central ruby library