pigeon-http 0.1.2 → 0.1.4

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: 0d0a8d8356178871727e2d25a3b1a2a1a5fda626eecbe211ec490a5dd409d0d2
4
- data.tar.gz: abf63f3e951ba0926eb9034c415c3d847a92d47dd49bfea3b8468e0ec2831865
3
+ metadata.gz: 204c0c65ca18699400c662cdce4813337fa5f270a15012c63279ab03e1fb35c4
4
+ data.tar.gz: f2c2070ca2ab97182b0574ecf281759a14cee4b7d7d42f42ce23d97b8a8a0ace
5
5
  SHA512:
6
- metadata.gz: afc39ba93e631f18c1be2e9f6d701d684e330a13aa53c877f990eb8707f2190869fb968751c3e8cf601abb4a234f738eee3d2c1febecc45acd448311d90ab472
7
- data.tar.gz: f4478906d6e9c95e48e38276a2d5e679fa9851f9adcf9fc5f875279a95fc242bc0480f6cb2f60447f497e37baad1762665543904f30f1c5e0da0daa5f9389a70
6
+ metadata.gz: 2f66c5ce34abe98064138ade62435d182a0592ee147799b52c199e19893f5b5c66dc01d5a3d7755efc7b9c330fb95d74e539d8176637b8fbda03b6baa31fce4a
7
+ data.tar.gz: 72cc4bbac4814d99f6f3a79fdfe49a261cc65a7044706e8736469e61fb1b90ed5ca2edd07a47cc93f313c949bd7605b1f4982bfaf65990f08431b9a2b11dba58
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pigeon-http (0.1.2)
4
+ pigeon-http (0.1.4)
5
5
  circuitbox
6
6
  ddtrace
7
7
  dogstatsd-ruby
data/lib/pigeon/core.rb CHANGED
@@ -18,10 +18,11 @@ rescue LoadError => e
18
18
  end
19
19
 
20
20
  module Pigeon
21
- VALID_OPTIONS = %w[request_timeout request_open_timeout ssl_verify volume_threshold error_threshold time_window sleep_window retryable retry_threshold].freeze
21
+ VALID_OPTIONS = %w[environment request_timeout request_open_timeout ssl_verify volume_threshold error_threshold time_window sleep_window retryable retry_threshold monitoring monitoring_type].freeze
22
22
  VALID_CALLBACKS = %w[CircuitBreakerOpen CircuitBreakerClose HttpSuccess HttpError RetrySuccess RetryFailure]
23
23
 
24
24
  DEFAULT_OPTIONS = {
25
+ environment: 'default',
25
26
  request_name: 'pigeon_default',
26
27
  request_timeout: 60,
27
28
  request_open_timeout: 0,
@@ -32,7 +33,8 @@ module Pigeon
32
33
  sleep_window: 10,
33
34
  retryable: true,
34
35
  retry_threshold: 3,
35
- monitoring: false
36
+ monitoring: false,
37
+ monitoring_type: 'datadog'
36
38
  }
37
39
  DEFAULT_CALLBACKS = {
38
40
  CircuitBreakerOpen: nil,
@@ -69,51 +71,49 @@ module Pigeon
69
71
  end
70
72
  end
71
73
 
74
+ def config key, value
75
+ raise Error::Argument, "unknown option #{key}" unless VALID_OPTIONS.include?(key.to_s)
76
+ @options[key.to_sym] = value
77
+ end
78
+
72
79
  def get url, args = {}
73
- start = Time.now
74
80
  response = http(:get, url, args)
75
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
76
-
77
- response
78
81
  rescue => e
82
+ puts e
79
83
  @callbacks[:HttpError]&.call(e)
80
84
  end
81
85
 
82
86
  def post url, args = {}
83
- start = Time.now
84
87
  response = http(:post, url, args)
85
- puts @options
86
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
87
-
88
- response
89
88
  rescue => e
90
89
  @callbacks[:HttpError]&.call(e)
91
90
  end
92
91
 
93
92
  def put url, args = {}
94
- start = Time.now
95
93
  response = http(:put, url, args)
96
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
97
-
98
- response
99
94
  rescue => e
100
95
  @callbacks[:HttpError]&.call(e)
101
96
  end
102
97
 
103
98
  def delete url, args = {}
104
- http(:delete, url, args)
99
+ response = http(:delete, url, args)
105
100
  rescue => e
106
101
  @callbacks[:HttpError]&.call(e)
107
102
  end
108
103
 
109
104
  def http method, url, args = {}
105
+ start = Time.now
110
106
  args.merge({
111
107
  read_timeout: @options[:request_timeout],
112
108
  open_timeout: @options[:request_open_timeout],
113
109
  ssl_verify: @options[:ssl_verify]
114
110
  })
115
111
  response = Pigeon::Http::Request.new(method, url, args).execute
116
- Pigeon::Statsd.new(@options[:request_name] + '_througput', tags: [url]).capture
112
+
113
+ uri = URI.parse(url)
114
+ Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [uri.host]).capture(action: :histogram, count: (Time.now - start))
115
+ Pigeon::Statsd.new(@options[:request_name] + '_througput', tags: [uri.host]).capture
116
+ Pigeon::Statsd.new(@options[:request_name] + '_status', tags: [response.code]).capture
117
117
 
118
118
  response
119
119
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pigeon
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pigeon-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fitra Aditya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-08 00:00:00.000000000 Z
11
+ date: 2023-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: circuitbox