honeycomb-beeline 1.0.0.pre.beta3 → 1.0.0.pre.beta4

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: 1b1b7ab0eda9a7af908e48d11f8b7d4e85daebc4a7aaf5495cc264c504d48b57
4
- data.tar.gz: 1bb0266837751cfb7b1941f408a5a68908bce74d2ef3f2d6b12dbc05a23df5b6
3
+ metadata.gz: e026a4de28efbaa5b1d09cebf23c00041c8c8f8853328dee4dd4d58c3b69604e
4
+ data.tar.gz: b8555942f5a814c6f2d8669c2dba53ddef45b34e7061c0959cc510eb0fe897e0
5
5
  SHA512:
6
- metadata.gz: 51d702c4bed8913233e7480777e76667871bbbd928415e5061688245c8c87d235aed6e537300a87464a23fa5f7d3a636003ab5cd005f34e2654aac8925f3ddb2
7
- data.tar.gz: acf01866b9c5d8051270ff2c1900dcb19e4cf6dda83a6aa92f461d5911deb40a43c7b8f3ebb9748eace39df226b2e98f5da96e1ee0815edce85ec421262683ba
6
+ metadata.gz: 8c00e52947f68bc3234b40a787bd04b92272f95e25e5ec96ea1409fe4b5f327c14f18c02ea33aae7739359c6eb5c675772c4d9a044980d539ab90aa988553099
7
+ data.tar.gz: cf5f39769d95e77d58ba65337cc13eeebb5ad876707fb922b48d555f6e1227485257fadd78fcd0b0c3faebbd6bb2af8d314d13e851dc311333451457c0ecbe66
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- honeycomb-beeline (1.0.0.pre.beta3)
4
+ honeycomb-beeline (1.0.0.pre.beta4)
5
5
  libhoney (~> 1.8)
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@
3
3
  module Honeycomb
4
4
  module Beeline
5
5
  NAME = "honeycomb-beeline".freeze
6
- VERSION = "1.0.0-beta3".freeze
6
+ VERSION = "1.0.0-beta4".freeze
7
7
  USER_AGENT_SUFFIX = "#{NAME}/#{VERSION}".freeze
8
8
  end
9
9
  end
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rack"
4
+ require "honeycomb/integrations/warden"
4
5
 
5
6
  module Honeycomb
6
- # Automatically capture rack requests and create a trace
7
- class Rack
7
+ # Rack specific methods for building middleware
8
+ module Rack
8
9
  RACK_FIELDS = [
9
10
  ["REQUEST_METHOD", "request.method"],
10
11
  ["PATH_INFO", "request.path"],
@@ -16,17 +17,6 @@ module Honeycomb
16
17
  ["rack.url_scheme", "request.protocol"],
17
18
  ].freeze
18
19
 
19
- COMMON_USER_FIELDS = %i[
20
- email
21
- name
22
- first_name
23
- last_name
24
- created_at
25
- id
26
- ].freeze
27
-
28
- SCOPE_PATTERN = /^warden\.user\.([^.]+)\.key$/.freeze
29
-
30
20
  attr_reader :app, :client
31
21
 
32
22
  def initialize(app, client:)
@@ -68,27 +58,10 @@ module Honeycomb
68
58
  end
69
59
  end
70
60
 
71
- def extract_user_information(env)
72
- warden = env["warden"]
73
-
74
- return unless warden
75
-
76
- session = env["rack.session"] || {}
77
- keys = session.keys.select do |key|
78
- key.match(SCOPE_PATTERN)
79
- end
80
- warden_scopes = keys.map do |key|
81
- key.gsub(SCOPE_PATTERN, "\1")
82
- end
83
- best_scope = warden_scopes.include?("user") ? "user" : warden_scopes.first
84
-
85
- return unless best_scope
86
-
87
- env["warden"].user(scope: best_scope, run_callbacks: false).tap do |user|
88
- COMMON_USER_FIELDS.each do |field|
89
- user.respond_to?(field) && yield("user.#{field}", user.send(field))
90
- end
91
- end
61
+ # Rack middleware
62
+ class Middleware
63
+ include Rack
64
+ include Warden
92
65
  end
93
66
  end
94
67
  end
@@ -3,9 +3,10 @@
3
3
  require "rails/railtie"
4
4
  require "honeycomb/integrations/active_support"
5
5
  require "honeycomb/integrations/rack"
6
+ require "honeycomb/integrations/warden"
6
7
 
7
8
  module Honeycomb
8
- # Add Rails specific information to the Honeycomb::Rack middleware
9
+ # Rails specific methods for building middleware
9
10
  module Rails
10
11
  def add_package_information(env)
11
12
  yield "meta.package", "rails"
@@ -27,6 +28,13 @@ module Honeycomb
27
28
  end
28
29
  end
29
30
  end
31
+
32
+ # Rails middleware
33
+ class Middleware
34
+ include Rack
35
+ include Warden
36
+ include Rails
37
+ end
30
38
  end
31
39
 
32
40
  # Automatically capture rack requests and create a trace
@@ -37,12 +45,10 @@ module Honeycomb
37
45
  # what location should we insert the middleware at?
38
46
  app.config.middleware.insert_before(
39
47
  ::Rails::Rack::Logger,
40
- Honeycomb::Rack,
48
+ Honeycomb::Rails::Middleware,
41
49
  client: Honeycomb.client,
42
50
  )
43
51
  end
44
52
  end
45
53
  end
46
54
  end
47
-
48
- Honeycomb::Rack.prepend Honeycomb::Rails
@@ -2,9 +2,10 @@
2
2
 
3
3
  require "sinatra"
4
4
  require "honeycomb/integrations/rack"
5
+ require "honeycomb/integrations/warden"
5
6
 
6
7
  module Honeycomb
7
- # Add Sinatra specific information to the Honeycomb::Rack middleware
8
+ # Sinatra specific methods for building middleware
8
9
  module Sinatra
9
10
  def add_package_information(env)
10
11
  yield "meta.package", "sinatra"
@@ -12,7 +13,12 @@ module Honeycomb
12
13
 
13
14
  yield "request.route", env["sinatra.route"]
14
15
  end
16
+
17
+ # Sinatra middleware
18
+ class Middleware
19
+ include Rack
20
+ include Warden
21
+ include Sinatra
22
+ end
15
23
  end
16
24
  end
17
-
18
- Honeycomb::Rack.prepend Honeycomb::Sinatra
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Honeycomb
4
+ # Methods for extracing common warden/devise fields from a rack env hash
5
+ module Warden
6
+ COMMON_USER_FIELDS = %i[
7
+ email
8
+ name
9
+ first_name
10
+ last_name
11
+ created_at
12
+ id
13
+ ].freeze
14
+
15
+ SCOPE_PATTERN = /^warden\.user\.([^.]+)\.key$/.freeze
16
+
17
+ def extract_user_information(env)
18
+ warden = env["warden"]
19
+
20
+ return unless warden
21
+
22
+ session = env["rack.session"] || {}
23
+ keys = session.keys.select do |key|
24
+ key.match(SCOPE_PATTERN)
25
+ end
26
+ warden_scopes = keys.map do |key|
27
+ key.gsub(SCOPE_PATTERN, "\1")
28
+ end
29
+ best_scope = warden_scopes.include?("user") ? "user" : warden_scopes.first
30
+
31
+ return unless best_scope
32
+
33
+ env["warden"].user(scope: best_scope, run_callbacks: false).tap do |user|
34
+ COMMON_USER_FIELDS.each do |field|
35
+ user.respond_to?(field) && yield("user.#{field}", user.send(field))
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeycomb-beeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta3
4
+ version: 1.0.0.pre.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Holman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-17 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libhoney
@@ -231,6 +231,7 @@ files:
231
231
  - lib/honeycomb/integrations/rake.rb
232
232
  - lib/honeycomb/integrations/sequel.rb
233
233
  - lib/honeycomb/integrations/sinatra.rb
234
+ - lib/honeycomb/integrations/warden.rb
234
235
  - lib/honeycomb/propagation.rb
235
236
  - lib/honeycomb/rollup_fields.rb
236
237
  - lib/honeycomb/span.rb