hooks-ruby 0.0.5 → 0.0.6

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: 20afc330ce2c974fa7cb50950e261e0ed8bfb01a9e65aa615f1d1fc4aeff3b90
4
- data.tar.gz: 2e561e403eab068f75cce3f41b48ba0642d4fd5f81124d9bea66d563f1472ff4
3
+ metadata.gz: 9025d70b78a67040f436318091d556090c7f17e9dffe094b6437bde394ef7010
4
+ data.tar.gz: 24cf76930b63917dad1795a72113b9cf0646330671983b60bd367cc04d11d015
5
5
  SHA512:
6
- metadata.gz: 1152f3eef93d6c1d872b13dc59154584229f3bfed17a46c2cc748c0f8d1bd9847441dbe96ca2d084bdb6ed6f30077bcf0b49515c8e46bf668c355c8bdb5d52b0
7
- data.tar.gz: '038523ad1ed72fc0f27fad4172a15b316c02d52b95936951a3f9f9efbdc2034dc074847665ee43524d7af93f6432ddd91c0ac97b2a0dbafa0f10deea8238fd67'
6
+ metadata.gz: 0e8acdf59a00128c3a68fb2db10864c0e0bf6a5e454aabceaf824cdf4ba62f8057f166da2dae0f17238a7a280137861ca4ba1da70b33165e6e890becb36be391
7
+ data.tar.gz: 33178114bcbbda82ecf91cd27bfd7633621f6d7f2ea64fc3891596a8769cc80dac55ceab5c4fc75cd035d2a0188c9da2821743442cfcdbbce0cef2d3d479e6b5
data/lib/hooks/app/api.rb CHANGED
@@ -102,14 +102,13 @@ module Hooks
102
102
  validate_auth!(raw_body, headers, endpoint_config, config)
103
103
  end
104
104
 
105
- payload = parse_payload(raw_body, headers, symbolize: config[:symbolize_payload])
105
+ payload = parse_payload(raw_body, headers, symbolize: false)
106
106
  handler = load_handler(handler_class_name)
107
- normalized_headers = config[:normalize_headers] ? Hooks::Utils::Normalize.headers(headers) : headers
108
- symbolized_headers = config[:symbolize_headers] ? Hooks::Utils::Normalize.symbolize_headers(normalized_headers) : normalized_headers
107
+ processed_headers = config[:normalize_headers] ? Hooks::Utils::Normalize.headers(headers) : headers
109
108
 
110
109
  response = handler.call(
111
110
  payload:,
112
- headers: symbolized_headers,
111
+ headers: processed_headers,
113
112
  config: endpoint_config
114
113
  )
115
114
 
@@ -44,9 +44,9 @@ module Hooks
44
44
  #
45
45
  # @param raw_body [String] The raw request body
46
46
  # @param headers [Hash] The request headers
47
- # @param symbolize [Boolean] Whether to symbolize keys in parsed JSON (default: true)
48
- # @return [Hash, String] Parsed JSON as Hash (optionally symbolized), or raw body if not JSON
49
- def parse_payload(raw_body, headers, symbolize: true)
47
+ # @param symbolize [Boolean] Whether to symbolize keys in parsed JSON (default: false)
48
+ # @return [Hash, String] Parsed JSON as Hash with string keys, or raw body if not JSON
49
+ def parse_payload(raw_body, headers, symbolize: false)
50
50
  # Optimized content type check - check most common header first
51
51
  content_type = headers["Content-Type"] || headers["CONTENT_TYPE"] || headers["content-type"] || headers["HTTP_CONTENT_TYPE"]
52
52
 
@@ -55,6 +55,7 @@ module Hooks
55
55
  begin
56
56
  # Security: Limit JSON parsing depth and complexity to prevent JSON bombs
57
57
  parsed_payload = safe_json_parse(raw_body)
58
+ # Note: symbolize parameter is kept for backward compatibility but defaults to false
58
59
  parsed_payload = parsed_payload.transform_keys(&:to_sym) if symbolize && parsed_payload.is_a?(Hash)
59
60
  return parsed_payload
60
61
  rescue JSON::ParserError, ArgumentError => e
@@ -20,9 +20,7 @@ module Hooks
20
20
  production: true,
21
21
  endpoints_dir: "./config/endpoints",
22
22
  use_catchall_route: false,
23
- symbolize_payload: true,
24
- normalize_headers: true,
25
- symbolize_headers: true
23
+ normalize_headers: true
26
24
  }.freeze
27
25
 
28
26
  SILENCE_CONFIG_LOADER_MESSAGES = ENV.fetch(
@@ -142,9 +140,7 @@ module Hooks
142
140
  "HOOKS_ENVIRONMENT" => :environment,
143
141
  "HOOKS_ENDPOINTS_DIR" => :endpoints_dir,
144
142
  "HOOKS_USE_CATCHALL_ROUTE" => :use_catchall_route,
145
- "HOOKS_SYMBOLIZE_PAYLOAD" => :symbolize_payload,
146
143
  "HOOKS_NORMALIZE_HEADERS" => :normalize_headers,
147
- "HOOKS_SYMBOLIZE_HEADERS" => :symbolize_headers,
148
144
  "HOOKS_SOME_STRING_VAR" => :some_string_var # Added for test
149
145
  }
150
146
 
@@ -156,7 +152,7 @@ module Hooks
156
152
  case config_key
157
153
  when :request_limit, :request_timeout
158
154
  env_config[config_key] = value.to_i
159
- when :use_catchall_route, :symbolize_payload, :normalize_headers, :symbolize_headers
155
+ when :use_catchall_route, :normalize_headers
160
156
  # Convert string to boolean
161
157
  env_config[config_key] = %w[true 1 yes on].include?(value.downcase)
162
158
  else
@@ -26,7 +26,6 @@ module Hooks
26
26
  optional(:environment).filled(:string, included_in?: %w[development production])
27
27
  optional(:endpoints_dir).filled(:string)
28
28
  optional(:use_catchall_route).filled(:bool)
29
- optional(:symbolize_payload).filled(:bool)
30
29
  optional(:normalize_headers).filled(:bool)
31
30
  end
32
31
 
@@ -15,7 +15,7 @@ module Hooks
15
15
  # Process a webhook request
16
16
  #
17
17
  # @param payload [Hash, String] Parsed request body (JSON Hash) or raw string
18
- # @param headers [Hash] HTTP headers (symbolized keys by default)
18
+ # @param headers [Hash] HTTP headers (string keys, optionally normalized - default is normalized)
19
19
  # @param config [Hash] Merged endpoint configuration including opts section (symbolized keys)
20
20
  # @return [Hash, String, nil] Response body (will be auto-converted to JSON)
21
21
  # @raise [NotImplementedError] if not implemented by subclass
data/lib/hooks/version.rb CHANGED
@@ -4,5 +4,5 @@
4
4
  module Hooks
5
5
  # Current version of the Hooks webhook framework
6
6
  # @return [String] The version string following semantic versioning
7
- VERSION = "0.0.5".freeze
7
+ VERSION = "0.0.6".freeze
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hooks-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - github