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

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