faraday-honeycomb 0.3.1 → 0.3.2

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
- SHA256:
3
- metadata.gz: 3f5f4e6835284d3e0dcb3c6a0bf6ed865d7b8ede86effb953be5d81f222f767f
4
- data.tar.gz: a1ee3f1c33b1dda61e728004fe9d0c5a28af38ee82e8b54745dac8c7daeda2d0
2
+ SHA1:
3
+ metadata.gz: 5ab9e86fc18813b1af2006e63efc7c1194ffabf5
4
+ data.tar.gz: 26d1540af6203758683a8083963f9b227bdab16b
5
5
  SHA512:
6
- metadata.gz: 9c516370d6ca1313616cec77a3702793bab508e2695e4af49de936f700fbd684de093ea95150a9c075a51272c13ad51a4ac767e3b20369635ebe4e8a828cf787
7
- data.tar.gz: 4d9d7e340b23112ba86e9c1dc1642073aa17cb0f17e8c7616761ef96ead942b763cc5d6bec9aac11fca256976d941dccac69cc760492eb87ad2399ffe4950a6c
6
+ metadata.gz: d37866d1e54e453ed2926e5cee15675b697d0c86eb8cb4c2698096ad03f069cde6e08af2758249f204dd33dd0ec36b4de0023321c40912c4d49276e04ecdf209
7
+ data.tar.gz: a38b48bf26a8aa686237b23fec1e100e1b98959dd0165cef4c1c45888af000a0e3969e89ae7d554fcdc6cfadd50bb25d8f0ab403b59501aeeb91ddda81cb7b17
@@ -1,7 +1,7 @@
1
1
  module Faraday
2
2
  module Honeycomb
3
3
  GEM_NAME = 'faraday-honeycomb'
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.2'
5
5
 
6
6
  MIN_FARADAY_VERSION = '0.8'
7
7
  end
@@ -14,26 +14,73 @@ module Faraday
14
14
  false
15
15
  end
16
16
 
17
+ def ensure_middleware_in_builder!(builder, client, logger)
18
+ if builder.handlers.any? { |m| m.klass == ::Faraday::Honeycomb::Middleware }
19
+ logger.debug "Faraday::Honeycomb::Middleware already exists in Faraday middleware" if logger
20
+ return
21
+ end
22
+
23
+ # In faraday < 1.0 the adapter is added directly to handlers, so we
24
+ # need to find it in the stack and insert honeycomb's middleware
25
+ # before it
26
+ #
27
+ # In faraday >= 1.0 the adapter will never be in the list of
28
+ # handlers, and will _always_ be the last thing called in the
29
+ # middleware stack, so we need to handle it not being present.
30
+ # https://github.com/lostisland/faraday/pull/750
31
+ index_of_first_adapter = (builder.handlers || [])
32
+ .find_index { |h| h.klass.ancestors.include? Faraday::Adapter }
33
+
34
+ if index_of_first_adapter
35
+ logger.debug "Adding Faraday::Honeycomb::Middleware before adapter" if logger
36
+ builder.insert_before(
37
+ index_of_first_adapter,
38
+ Faraday::Honeycomb::Middleware,
39
+ client: client, logger: logger
40
+ )
41
+ else
42
+ logger.debug "Appending Faraday::Honeycomb::Middleware to stack" if logger
43
+ builder.use Faraday::Honeycomb::Middleware, client: client, logger: logger
44
+ end
45
+ end
46
+
17
47
  def auto_install!(honeycomb_client:, logger: nil)
18
48
  require 'faraday'
19
49
  require 'faraday-honeycomb'
20
50
 
21
51
  Faraday::Connection.extend(Module.new do
22
52
  define_method :new do |*args, &orig_block|
23
- block = if orig_block
24
- proc do |b|
25
- logger.debug "Adding Faraday::Honeycomb::Middleware in #{self}.new{}" if logger
26
- b.use :honeycomb, client: honeycomb_client, logger: logger
27
- orig_block.call(b)
28
- end
29
- else
30
- proc do |b|
31
- logger.debug "Adding Faraday::Honeycomb::Middleware in #{self}.new" if logger
32
- b.use :honeycomb, client: honeycomb_client, logger: logger
33
- b.request :url_encoded
34
- b.adapter Faraday.default_adapter
53
+ # If there are two arguments the first argument might be an
54
+ # options hash, or a URL. The last argument in the array is
55
+ # always an instance of `ConnectionOptions`.
56
+ options = args.reduce({}) do |out, arg|
57
+ out.merge!(arg.to_hash) if arg.respond_to? :to_hash
58
+ out
59
+ end
60
+
61
+ builder = options["builder"] || options[:builder]
62
+
63
+ if !builder
64
+ # This is the configuration that would be applied if someone
65
+ # created faraday without a config block/builder. We need to specify it
66
+ # here because our monkeypatch causes a block to _always_ be
67
+ # passed to Faraday
68
+ # https://github.com/lostisland/faraday/blob/v0.15.4/lib/faraday/rack_builder.rb#L56-L60
69
+ orig_block ||= proc do |c|
70
+ c.request :url_encoded
71
+ c.adapter Faraday.default_adapter
35
72
  end
36
73
  end
74
+
75
+ # Always add honeycomb middleware after the middleware stack has
76
+ # been resolved by the original block/any defaults that are
77
+ # applied by Faraday
78
+ block = proc do |b|
79
+ orig_block.call(b) if orig_block
80
+
81
+ Honeycomb::AutoInstall.ensure_middleware_in_builder!(b.builder, honeycomb_client, logger)
82
+ end
83
+
37
84
  super(*args, &block)
38
85
  end
39
86
  end)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-honeycomb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Stokes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-14 00:00:00.000000000 Z
11
+ date: 2019-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libhoney
@@ -94,6 +94,34 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  description: " TO DO *is* a description\n"
98
126
  email:
99
127
  - support@honeycomb.io
@@ -127,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
155
  version: '0'
128
156
  requirements: []
129
157
  rubyforge_project:
130
- rubygems_version: 2.7.7
158
+ rubygems_version: 2.6.14.4
131
159
  signing_key:
132
160
  specification_version: 4
133
161
  summary: Instrument your Faraday HTTP requests with Honeycomb