faraday-honeycomb 0.3.1 → 0.3.2

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
- 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