network_resiliency 0.1.0 → 0.1.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: 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