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 +5 -5
- data/lib/faraday/honeycomb/version.rb +1 -1
- data/lib/faraday-honeycomb/auto_install.rb +59 -12
- metadata +31 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5ab9e86fc18813b1af2006e63efc7c1194ffabf5
|
4
|
+
data.tar.gz: 26d1540af6203758683a8083963f9b227bdab16b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d37866d1e54e453ed2926e5cee15675b697d0c86eb8cb4c2698096ad03f069cde6e08af2758249f204dd33dd0ec36b4de0023321c40912c4d49276e04ecdf209
|
7
|
+
data.tar.gz: a38b48bf26a8aa686237b23fec1e100e1b98959dd0165cef4c1c45888af000a0e3969e89ae7d554fcdc6cfadd50bb25d8f0ab403b59501aeeb91ddda81cb7b17
|
@@ -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
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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.
|
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-
|
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.
|
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
|