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 +4 -4
- data/Gemfile.lock +4 -1
- data/README.md +1 -1
- data/lib/auth.rb +6 -6
- data/lib/cache_server.rb +15 -17
- data/lib/scraper_central/version.rb +1 -1
- data/scraper-central-ruby.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 344375e9baae6533bc98bb11d109dbe8771592d0d7029a83f3ee27176981938c
|
|
4
|
+
data.tar.gz: 1d02478a129bc7641c74733e3e4de6495112a2151ba6b2802fa1cf0a44f71c04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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
|
|
92
|
+
def auth_headers
|
|
95
93
|
{
|
|
96
94
|
CONTENT_TYPE_HEADER => 'application/json',
|
|
97
95
|
AUTH0_BEARER_HEADER => "Bearer #{auth_token}"
|
|
@@ -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.
|
|
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:
|
|
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.
|
|
138
|
+
rubygems_version: 3.4.10
|
|
125
139
|
signing_key:
|
|
126
140
|
specification_version: 4
|
|
127
141
|
summary: Scraper central ruby library
|