Skip to content

Commit 53872f8

Browse files
authored
Revert "[APPSEC-56614] Add Instrumentation::Gateway#pushed? method"
1 parent e721aba commit 53872f8

File tree

5 files changed

+35
-75
lines changed

5 files changed

+35
-75
lines changed

lib/datadog/appsec/instrumentation/gateway.rb

+22-17
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,35 @@
11
# frozen_string_literal: true
22

3-
require_relative 'gateway/middleware'
4-
53
module Datadog
64
module AppSec
75
# Instrumentation for AppSec
86
module Instrumentation
97
# Instrumentation gateway implementation
108
class Gateway
9+
# Instrumentation gateway middleware
10+
class Middleware
11+
attr_reader :key, :block
12+
13+
def initialize(key, &block)
14+
@key = key
15+
@block = block
16+
end
17+
18+
def call(stack, env)
19+
@block.call(stack, env)
20+
end
21+
end
22+
23+
private_constant :Middleware
24+
1125
def initialize
1226
@middlewares = Hash.new { |h, k| h[k] = [] }
13-
@pushed_events = {}
1427
end
1528

16-
# NOTE: Be careful with pushed names because every pushed event name
17-
# is recorded in order to provide an ability to any subscriber
18-
# to check wether an arbitrary event had happened.
19-
#
20-
# WARNING: If we start pushing generated names we should consider
21-
# limiting the storage of pushed names.
2229
def push(name, env, &block)
23-
@pushed_events[name] = true
24-
2530
block ||= -> {}
26-
middlewares_for_name = @middlewares[name]
31+
32+
middlewares_for_name = middlewares[name]
2733

2834
return [block.call, nil] if middlewares_for_name.empty?
2935

@@ -42,15 +48,14 @@ def push(name, env, &block)
4248
end
4349

4450
def watch(name, key, &block)
45-
@middlewares[name] << Middleware.new(key, &block) unless @middlewares[name].any? { |m| m.key == key }
51+
@middlewares[name] << Middleware.new(key, &block) unless middlewares[name].any? { |m| m.key == key }
4652
end
4753

48-
def pushed?(name)
49-
@pushed_events.key?(name)
50-
end
54+
private
55+
56+
attr_reader :middlewares
5157
end
5258

53-
# NOTE: This left as-is and will be depricated soon.
5459
def self.gateway
5560
@gateway ||= Gateway.new # TODO: not thread safe
5661
end

lib/datadog/appsec/instrumentation/gateway/middleware.rb

-24
This file was deleted.

sig/datadog/appsec/instrumentation/gateway.rbs

+12-3
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,26 @@ module Datadog
77
type final_call = ^() -> final_call_result
88
type stack = ::Proc
99

10+
# TODO: this should be a struct
1011
type stack_result = ::Array[nil | middleware_result | final_call_result]
1112

13+
class Middleware
14+
attr_reader key: ::Symbol
15+
attr_reader block: ::Proc
16+
17+
def initialize: (::Symbol key) { (stack next, Instrumentation::Gateway::Argument env) -> stack_result } -> void
18+
def call: (stack next, Gateway::Argument? env) -> stack_result
19+
end
20+
1221
@middlewares: ::Hash[::String, ::Array[Middleware]]
1322

1423
def initialize: () -> void
15-
1624
def push: (::String name, Gateway::Argument env) ?{ () -> final_call_result } -> stack_result
17-
1825
def watch: (::String name, ::Symbol key) { (stack next, Gateway::Argument env) -> stack_result } -> void
1926

20-
def pushed?: (::String name) -> bool
27+
private
28+
29+
attr_reader middlewares: ::Hash[::String, ::Array[Middleware]]
2130
end
2231

2332
self.@gateway: Gateway

sig/datadog/appsec/instrumentation/gateway/middleware.rbs

-15
This file was deleted.

spec/datadog/appsec/instrumentation/gateway_spec.rb

+1-16
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
RSpec.describe Datadog::AppSec::Instrumentation::Gateway do
77
subject(:gateway) { described_class.new }
8-
let(:middlewares) { gateway.instance_variable_get(:@middlewares) }
8+
let(:middlewares) { gateway.send(:middlewares) }
99

1010
describe '#watch' do
1111
it 'stores middleware' do
@@ -81,19 +81,4 @@
8181
expect(env_2).to eq({ a: :b, c: :d })
8282
end
8383
end
84-
85-
describe '#pushed?' do
86-
it { expect(gateway.pushed?('event.0')).to be(false) }
87-
88-
it 'returns true if event was pushed' do
89-
expect { gateway.push('event.1', {}) }.to change { gateway.pushed?('event.1') }
90-
.from(false).to(true)
91-
92-
expect { gateway.push('event.2', {}) }.to change { gateway.pushed?('event.2') }
93-
.from(false).to(true)
94-
95-
expect { gateway.push('event.2', {}) }.not_to change { gateway.pushed?('event.2') }
96-
.from(true)
97-
end
98-
end
9984
end

0 commit comments

Comments
 (0)