network_resiliency 0.1.0 → 0.1.1

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: 07f28c3158ada0009efdc0d9b68162419d227d088b24b3827a43dc5923ca8081
4
- data.tar.gz: 645bd61e91ac8b939713376de77cedcd1f79e254a558b0b09cd26ba0280abe68
3
+ metadata.gz: 1b75b4aad26c41942f4d38ad70abb82d8f098eb377e9e5f44d1f6dde41ab6225
4
+ data.tar.gz: 47c899a650d66cea1117743ce4b53ee7bc50cc4fef8dfca3337aa071d0f81964
5
5
  SHA512:
6
- metadata.gz: 47b0bbe65d83b4acad810673904a13d57c898a00193fb48432b690d31932d19e52d397363195917f9e3dd8b1631084bdfd193094e8f570fb914ab490db9fd544
7
- data.tar.gz: dd8f225e3bcf5d597838e405fa8c80b7228fdc5aacdf326b38c9fdb0eae72eae60bf00e0be1eed970547014b5f820557635cfd6422741e91c0e6e2cc22935bc6
6
+ metadata.gz: ef7d805366f84daf7a27f5fb6dc88ef846741456203fa23f30512d780ae46065b5519caa474e7750b260e2a9bca5b9e296cb4def7e60402cfabdf0ae4aa1bf7c
7
+ data.tar.gz: 11d564818a9700a685c8d3dc9873de64181079fffffcbc0dd192d2ddbb47f0b75e43e92ba08d4523376a0a617ba60c9dd599e07fce1c055e48398b38f2e40ee3
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### v0.1.1 (2023-09-27)
2
+ - prevent double patching
3
+ - filter ip addresses
4
+ - simplify
5
+ - configure
6
+
1
7
  ### v0.1.0 (2023-09-26)
2
8
  - rework faraday adapter
3
9
  - faraday
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- network_resiliency (0.1.0)
4
+ network_resiliency (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -5,7 +5,9 @@ module NetworkResiliency
5
5
  class Faraday < ::Faraday::Adapter::NetHttp
6
6
  def build_connection(env)
7
7
  super.tap do |conn|
8
- NetworkResiliency::Adapter::HTTP.patch(conn)
8
+ unless NetworkResiliency::Adapter::HTTP.patched?(conn)
9
+ NetworkResiliency::Adapter::HTTP.patch(conn)
10
+ end
9
11
  end
10
12
  end
11
13
  end
@@ -27,14 +27,12 @@ module NetworkResiliency
27
27
  ensure
28
28
  ts += NetworkResiliency.timestamp
29
29
 
30
- NetworkResiliency.statsd&.distribution(
31
- "network_resiliency.connect",
32
- ts,
33
- tags: {
34
- adapter: "http",
35
- destination: address,
36
- error: e&.class,
37
- }.compact,
30
+ NetworkResiliency.record(
31
+ adapter: "http",
32
+ action: "connect",
33
+ destination: address,
34
+ error: e&.class,
35
+ duration: ts,
38
36
  )
39
37
  end
40
38
  end
@@ -1,3 +1,3 @@
1
1
  module NetworkResiliency
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -11,6 +11,10 @@ module NetworkResiliency
11
11
 
12
12
  attr_accessor :statsd
13
13
 
14
+ def configure
15
+ yield self
16
+ end
17
+
14
18
  def enabled?(adapter)
15
19
  return true if @enabled.nil?
16
20
 
@@ -48,6 +52,25 @@ module NetworkResiliency
48
52
  Process.clock_gettime(Process::CLOCK_MONOTONIC) * 1_000
49
53
  end
50
54
 
55
+ # private
56
+
57
+ IP_ADDRESS_REGEX = Regexp.new(/\d{1,3}(\.\d{1,3}){3}/)
58
+
59
+ def record(adapter:, action:, destination:, duration:, error: nil)
60
+ # filter raw IP addresses
61
+ return if IP_ADDRESS_REGEX.match?(destination)
62
+
63
+ NetworkResiliency.statsd&.distribution(
64
+ "network_resiliency.#{action}",
65
+ duration,
66
+ tags: {
67
+ adapter: adapter,
68
+ destination: destination,
69
+ error: error,
70
+ }.compact,
71
+ )
72
+ end
73
+
51
74
  def reset
52
75
  @enabled = nil
53
76
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: network_resiliency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-27 00:00:00.000000000 Z
11
+ date: 2023-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug