Skip to content

Commit dfbd6ae

Browse files
committed
deep symbolize keys on messages
1 parent c1b0fd1 commit dfbd6ae

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

lib/travis/hub/handler.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
require 'travis/hub/helper/context'
2+
require 'travis/hub/helper/hash'
23
require 'travis/hub/helper/string'
34
require 'travis/hub/service'
45

56
module Travis
67
module Hub
78
class Handler
8-
include Helper::Context, Helper::String
9+
include Helper::Context, Helper::Hash, Helper::String
910

1011
attr_reader :context, :type, :event, :payload, :object
1112

@@ -46,7 +47,7 @@ def normalize_event(event)
4647
end
4748

4849
def normalize_payload(payload)
49-
payload = payload.symbolize_keys
50+
payload = deep_symbolize_keys(payload)
5051
payload = normalize_state(payload)
5152
normalize_timestamps(payload)
5253
end

lib/travis/hub/helper/hash.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module Travis
2+
module Hub
3+
module Helper
4+
module Hash
5+
def deep_symbolize_keys(hash)
6+
hash.map do |key, obj|
7+
obj = case obj
8+
when Array
9+
obj.map { |obj| deep_symbolize_keys(obj) }
10+
when ::Hash
11+
deep_symbolize_keys(obj)
12+
else
13+
obj
14+
end
15+
[key.to_sym, obj]
16+
end.to_h
17+
end
18+
end
19+
end
20+
end
21+
end

0 commit comments

Comments
 (0)