activeclient_api 0.2.1 → 0.3.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: '0383744281275c59cc6b3b2cbfcf5a93a53d12716c3da0070a7e356c90b39cd8'
4
- data.tar.gz: 2e92ed82dd57e3ff08dde1ece25270dd45080173c5bc74d1a4322783252e9255
3
+ metadata.gz: 17397df41df4b55d54dc885d93b74652be2794ba7c30f5eedd60a6fdbdae9cc1
4
+ data.tar.gz: 8e0b93cb879059aab94a144665d26120186f504c258cc6a1a85b108164235017
5
5
  SHA512:
6
- metadata.gz: 9a0336a347464edfb857d5a8c07980a637ad826f672cc735d5ee5edbaa73ab756847debc38a9e47507e8c3850d606e059e4c3511caa8e7ebcf725a0073fa4891
7
- data.tar.gz: 81e22b56f9f6280a33b71f30b016c24e77c05686e8eb28892f679a85efc29b867bf267d22b87bb34ec974c3258ac20ea65e8631852640c6a2ae47713628d2f33
6
+ metadata.gz: 35cd5177011d95834c3a2b567c7ac19173301d655a08e370583bf4a2427c0c7edb38d996436b05d960a753fb6b36b8ca7fd4c63c4d5a5cf0a6517156901123a3
7
+ data.tar.gz: 74932e172488e41b68dd297db60a4d195ee67565fec08623be329668cb0f1bb9ee3d295f53f57105b1c8b0ca14787f8a676f40cc12f069f1c80ecfa578c8eb32
@@ -1,6 +1,19 @@
1
1
  class ActiveClient::Base
2
2
  Response = Struct.new(:body, :success?)
3
3
 
4
+ def self.with_persistent_connection(&)
5
+ @http = Net::HTTP::Persistent.new name: "gemini"
6
+
7
+ yield
8
+
9
+ @http.shutdown
10
+ @http = nil
11
+ end
12
+
13
+ def self.http
14
+ @http
15
+ end
16
+
4
17
  def get(path, skip_parsing: false, **query)
5
18
  make_request(Net::HTTP::Get, path, skip_parsing:, query:)
6
19
  end
@@ -36,12 +49,17 @@ class ActiveClient::Base
36
49
  args = { name: self.class.name.demodulize, uri: loggable }
37
50
 
38
51
  ActiveSupport::Notifications.
39
- instrument("request.active_client", args) { yield http, request }
52
+ instrument("request.active_client", args) { yield uri, http, request }
40
53
  end
41
54
 
42
55
  def make_request(klass, path, skip_parsing: false, query: {}, body: {})
43
- instrument(klass:, path:, query:, body:) do |http, request|
44
- response = http.request(request)
56
+ instrument(klass:, path:, query:, body:) do |uri, http, request|
57
+ response =
58
+ if http.is_a?(Net::HTTP::Persistent)
59
+ http.request(uri, request)
60
+ else
61
+ http.request(request)
62
+ end
45
63
 
46
64
  Response.new(parse_response(response.body, skip_parsing),
47
65
  response.is_a?(Net::HTTPSuccess))
@@ -59,9 +77,11 @@ class ActiveClient::Base
59
77
  def construct_request(klass:, path:, query:)
60
78
  uri = construct_uri(path:, query:)
61
79
 
62
- http = Net::HTTP.new(uri.host, uri.port)
63
- http.use_ssl = uri.instance_of?(URI::HTTPS)
64
- http.read_timeout = 1200
80
+ http =
81
+ self.class.http.presence || Net::HTTP.new(uri.host, uri.port).tap do
82
+ it.use_ssl = uri.instance_of?(URI::HTTPS)
83
+ it.read_timeout = 1200
84
+ end
65
85
 
66
86
  [uri, http, klass.new(uri.request_uri, default_headers(klass))]
67
87
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveClient
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeclient_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Pezza
@@ -9,6 +9,20 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: net-http-persistent
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: rails
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -56,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
70
  - !ruby/object:Gem::Version
57
71
  version: '0'
58
72
  requirements: []
59
- rubygems_version: 3.6.9
73
+ rubygems_version: 3.6.7
60
74
  specification_version: 4
61
75
  summary: Basic client for make api classes
62
76
  test_files: []