Module: Belt::Helpers::CorsOrigin
- Defined in:
- lib/belt/helpers/cors_origin.rb
Class Method Summary collapse
- .allowed_origins ⇒ Object
- .matches_allowed?(origin, allowed) ⇒ Boolean
- .origin_from_event(event) ⇒ Object
- .reset! ⇒ Object
- .resolve_origin(request_origin) ⇒ Object
Class Method Details
.allowed_origins ⇒ Object
38 39 40 |
# File 'lib/belt/helpers/cors_origin.rb', line 38 def self.allowed_origins @allowed_origins ||= build_allowed_origins end |
.matches_allowed?(origin, allowed) ⇒ Boolean
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/belt/helpers/cors_origin.rb', line 16 def self.matches_allowed?(origin, allowed) return false unless origin allowed.any? do |pattern| if pattern.include?('*') regex = Regexp.new("\\A#{Regexp.escape(pattern).gsub('\*', '[^.]+')}\\z") regex.match?(origin) else pattern == origin end end end |
.origin_from_event(event) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/belt/helpers/cors_origin.rb', line 29 def self.origin_from_event(event) return nil unless event.is_a?(Hash) headers = event['headers'] return nil unless headers.is_a?(Hash) headers['Origin'] || headers['origin'] end |
.reset! ⇒ Object
42 43 44 |
# File 'lib/belt/helpers/cors_origin.rb', line 42 def self.reset! @allowed_origins = nil end |
.resolve_origin(request_origin) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/belt/helpers/cors_origin.rb', line 6 def self.resolve_origin(request_origin) allowed = allowed_origins return nil if allowed.empty? return request_origin if request_origin && matches_allowed?(request_origin, allowed) # Don't return a wildcard pattern as a literal origin — use '*' instead first = allowed.first first.include?('*') ? '*' : first end |