pigeon-http 0.1.3 → 0.1.5

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: 7b49e953d40948596cfea066d3002efb0e612ece45ce6b8bcdd1f25772d329ed
4
- data.tar.gz: fc38bffab847cd7c37b13e0009bd11a61e039ceaf87fd8495833ec2228861317
3
+ metadata.gz: 20b7eedde8b0c9fb75e25872962fbda47a2425927c94995bcf99b5d6b2515c23
4
+ data.tar.gz: 81d2864272ffb24191949f132fd53964548391d561cf7b00057bc916b1a56d56
5
5
  SHA512:
6
- metadata.gz: 2296d57aabe77db0a39cf9ef06abdbff05160b8a72fd16b910407e3c42075d8132c289ab9568942ccee5c44af51a96a43e020b01186f49225121e4d9a4f9e852
7
- data.tar.gz: ff378ba4eb6137df6e43bf6355bc77882d0d4520c9ec9132ec8b64d5742ab5ecde89faeaf6bc0a72f7651130a8e8fd424aa941af4eb3a8450146821926fe224a
6
+ metadata.gz: a3b66e8bb1b3f1acad749742d6759af5aa0ad2eaac4ec144fcb5f956a93a44cba79745e3331c12587fdeb2041adc9f454448b2de7cb421c698ddb52ac078711c
7
+ data.tar.gz: 39939f3c8160246dea3c00e3c992474b175e79b266b62aafc3bb3925257063baf842edc1118c8107c0ea0533ec50760cfb8dc68d81361f29f65bd6237287bcdb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pigeon-http (0.1.3)
4
+ pigeon-http (0.1.5)
5
5
  circuitbox
6
6
  ddtrace
7
7
  dogstatsd-ruby
data/lib/pigeon/core.rb CHANGED
@@ -77,49 +77,42 @@ module Pigeon
77
77
  end
78
78
 
79
79
  def get url, args = {}
80
- start = Time.now
81
80
  response = http(:get, url, args)
82
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
83
-
84
- response
85
81
  rescue => e
86
82
  @callbacks[:HttpError]&.call(e)
87
83
  end
88
84
 
89
85
  def post url, args = {}
90
- start = Time.now
91
86
  response = http(:post, url, args)
92
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
93
-
94
- response
95
87
  rescue => e
96
88
  @callbacks[:HttpError]&.call(e)
97
89
  end
98
90
 
99
91
  def put url, args = {}
100
- start = Time.now
101
92
  response = http(:put, url, args)
102
- Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: [url]).capture(action: :histogram, count: (Time.now - start)) unless @options[:monitoring]
103
-
104
- response
105
93
  rescue => e
106
94
  @callbacks[:HttpError]&.call(e)
107
95
  end
108
96
 
109
97
  def delete url, args = {}
110
- http(:delete, url, args)
98
+ response = http(:delete, url, args)
111
99
  rescue => e
112
100
  @callbacks[:HttpError]&.call(e)
113
101
  end
114
102
 
115
103
  def http method, url, args = {}
104
+ start = Time.now
116
105
  args.merge({
117
106
  read_timeout: @options[:request_timeout],
118
107
  open_timeout: @options[:request_open_timeout],
119
108
  ssl_verify: @options[:ssl_verify]
120
109
  })
121
110
  response = Pigeon::Http::Request.new(method, url, args).execute
122
- Pigeon::Statsd.new(@options[:request_name] + '_througput', tags: [url]).capture
111
+
112
+ uri = URI.parse(url)
113
+ Pigeon::Statsd.new(@options[:request_name] + '_latency', tags: ["host:#{uri.host}"]).capture(action: :histogram, count: (Time.now - start))
114
+ Pigeon::Statsd.new(@options[:request_name] + '_througput', tags: ["host:#{uri.host}"]).capture
115
+ Pigeon::Statsd.new(@options[:request_name] + '_status', tags: ["host:#{uri.host}", "http:#{response.code}"]).capture
123
116
 
124
117
  response
125
118
  end
data/lib/pigeon/http.rb CHANGED
@@ -17,7 +17,7 @@ module Pigeon
17
17
  end
18
18
 
19
19
  class Request
20
- VALID_PARAMETERS = %w[headers query body auth timeout open_timeout ssl_timeout read_timeout max_redirects ssl_verify]
20
+ VALID_PARAMETERS = %w[headers query body form auth timeout open_timeout ssl_timeout read_timeout max_redirects ssl_verify]
21
21
  DEFAULT_HEADERS = { 'User-Agent' => 'HTTP Client API/1.0' }
22
22
  VALID_VERBS = [GET, HEAD, PUT, POST, DELETE, OPTIONS, TRACE]
23
23
  VALID_SSL_VERIFICATIONS = [SSL_VERIFY_NONE, SSL_VERIFY_PEER]
@@ -81,24 +81,28 @@ module Pigeon
81
81
  klass = find_delegate_class(verb)
82
82
  headers = DEFAULT_HEADERS.merge(args.fetch(:headers, {}))
83
83
  body = args[:body]&.to_json
84
+ form = args[:form]&.transform_keys(&:to_s)
84
85
  query = args[:query]
85
86
  uri = uri.dup
86
87
  delegate = klass.new(uri, headers)
87
88
 
89
+ delegate.content_type = 'application/json'
90
+
88
91
  if body
89
92
  raise Error::Argument, "#{verb} cannot have body" unless klass.const_get(:REQUEST_HAS_BODY)
90
- delegate.content_type = 'application/json'
91
- delegate.body = body
93
+ delegate.body = body
94
+ elsif form
95
+ raise Error::Argument, "#{verb} cannot have form" unless klass.const_get(:REQUEST_HAS_BODY)
96
+ delegate.content_type = 'multipart/form-data'
97
+ delegate.set_form(form, 'multipart/form-data')
92
98
  elsif query
93
99
  if klass.const_get(:REQUEST_HAS_BODY)
94
- delegate = klass.new(uri, headers)
100
+ delegate.content_type = 'application/x-www-form-urlencoded'
95
101
  delegate.set_form_data(query)
96
102
  else
97
103
  uri.query = URI.encode_www_form(query)
98
- delegate = klass.new(uri, headers)
104
+ delegate = klass.new(uri, headers)
99
105
  end
100
- else
101
- delegate = klass.new(uri, headers)
102
106
  end
103
107
 
104
108
  delegate
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pigeon
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.5'
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.3
4
+ version: 0.1.5
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-12 00:00:00.000000000 Z
11
+ date: 2023-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: circuitbox