query_guard 0.3.0 → 0.4.1

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: 6bfc3581737fdfb115f1f3d59eaa678f061af78c561e0a03782eb019a46d4b3f
4
- data.tar.gz: dc3e1b303ca6044f7e18af3fc2dbbd309f2bd4e1c7aa4c0751cedc89a08dc2c1
3
+ metadata.gz: 79d63cabb79b03e6cfb0aa9e287217efd8d5fb88bac144a53c32c8a1ec4d23a3
4
+ data.tar.gz: 829966b61062c1b218dda997b89b59ce68dfc50eed75818b5bda5e4298760567
5
5
  SHA512:
6
- metadata.gz: 9bee2280297b23e229235ba461ec6c2c978a927e7dbb8f3c26270def1a5615b229948b50c483f2f9ac4c08c8546d96af1e355f8ae41acb032b52acaff7ef98c9
7
- data.tar.gz: ddd6d8b867f91afbe91e941864e0d2a656c3442aed5d7a579702e969358e52b9a38d9667956d3640e57593a9f45dd16406892ceac19f1938f96c6bfe787ce6bf
6
+ metadata.gz: fb886b1ff360e67f5cc6bf7b473b038311162299491ec3b95d9babba4002c1ab44a0defe809280ce78b59899a40a4ea69bf256c1c849214530a7b6a5a693eb4b
7
+ data.tar.gz: f16e015977e291d12a603aef909f71c74563ba8c6263b5096a4b63b2816eac44362ffa2ab479da811d0faf7951b677b95461368b5fd7b1879c5dc804639e1003
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ require "net/http"
3
+ require "uri"
4
+ require "json"
5
+
6
+ module QueryGuard
7
+ class Client
8
+ DEFAULT_TIMEOUT = 5 # seconds
9
+
10
+ def initialize(base_url:, api_key:, project:, env:)
11
+ @base_url = base_url.sub(%r{/\z}, "")
12
+ @api_key = api_key
13
+ @project = project
14
+ @env = env
15
+ end
16
+
17
+ # Example call used by your Subscriber/Middleware
18
+ def post(path, payload)
19
+ uri = URI.parse("#{@base_url}#{path}")
20
+ req = Net::HTTP::Post.new(uri)
21
+ req["Content-Type"] = "application/json"
22
+ req["Authorization"] = "Bearer #{@api_key}" if @api_key
23
+ req.body = JSON.generate(payload.merge(project: @project, env: @env))
24
+
25
+ http = Net::HTTP.new(uri.host, uri.port)
26
+ http.use_ssl = (uri.scheme == "https")
27
+ http.open_timeout = DEFAULT_TIMEOUT
28
+ http.read_timeout = DEFAULT_TIMEOUT
29
+
30
+ res = http.request(req)
31
+ unless res.is_a?(Net::HTTPSuccess)
32
+ warn "[QueryGuard] POST #{uri} -> #{res.code} #{res.body}"
33
+ end
34
+ res
35
+ rescue => e
36
+ warn "[QueryGuard] HTTP error: #{e.class}: #{e.message}"
37
+ nil
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QueryGuard
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.1"
5
5
  end
data/lib/query_guard.rb CHANGED
@@ -5,42 +5,42 @@ require "query_guard/version"
5
5
  require "query_guard/config"
6
6
  require "query_guard/subscriber"
7
7
  require "query_guard/middleware"
8
+ require "query_guard/client"
8
9
 
9
10
  module QueryGuard
10
11
  class << self
11
- attr_accessor :client, :config
12
-
12
+ attr_accessor :client
13
+ # Keep config as a normal module ivar; no mattr_*
13
14
  def config
14
15
  @config ||= Config.new
15
16
  end
16
17
 
17
18
  def configure
18
- yield config
19
- self
20
- end
21
-
22
- def configure
23
- config ||= Config.new
24
19
  yield(config)
25
- client = Client.new(
20
+ # Build a reusable HTTP client (whatever your Client class is)
21
+ @client = Client.new(
26
22
  base_url: config.base_url,
27
23
  api_key: config.api_key,
28
24
  project: config.project,
29
25
  env: config.env
30
26
  )
27
+ self
31
28
  end
32
29
 
33
30
  def install!(app = nil)
31
+ # Ensure config exists even if user didn't call configure
32
+ config
33
+
34
34
  # Install SQL subscriber once
35
35
  Subscriber.install!(config)
36
36
 
37
- # Install middleware (Rails or Rack)
37
+ # Insert middleware
38
38
  if defined?(Rails) && Rails.respond_to?(:application) && Rails.application
39
- # Use a Railtie-less insert for safety if called early
40
39
  Rails.application.config.middleware.use(QueryGuard::Middleware, config)
41
40
  elsif app
42
41
  app.use(QueryGuard::Middleware, config)
43
42
  end
43
+
44
44
  self
45
45
  end
46
46
  end
@@ -48,9 +48,11 @@ end
48
48
 
49
49
  # Auto-install for Rails via Railtie
50
50
  if defined?(Rails::Railtie)
51
- class QueryGuard::Railtie < Rails::Railtie
52
- initializer "query_guard.install" do |app|
53
- QueryGuard.install!(app)
51
+ module QueryGuard
52
+ class Railtie < Rails::Railtie
53
+ initializer "query_guard.install" do |app|
54
+ QueryGuard.install!(app)
55
+ end
54
56
  end
55
57
  end
56
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: query_guard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chitradevi36
@@ -59,6 +59,7 @@ files:
59
59
  - Rakefile
60
60
  - config/initializers/query_guard.rb
61
61
  - lib/query_guard.rb
62
+ - lib/query_guard/client.rb
62
63
  - lib/query_guard/config.rb
63
64
  - lib/query_guard/middleware.rb
64
65
  - lib/query_guard/subscriber.rb