Module: Supabase::Rails::Env
- Defined in:
- lib/supabase/rails/env.rb
Class Method Summary collapse
- .loopback_host?(hostname) ⇒ Boolean
- .parse_jwks(raw) ⇒ Object
- .parse_jwks_url(raw) ⇒ Object
- .parse_keys(raw) ⇒ Object
- .resolve(overrides = {}) ⇒ Object
- .resolve_jwks ⇒ Object
- .resolve_keys(singular_var, plural_var) ⇒ Object
- .symbolize_overrides(overrides) ⇒ Object
Class Method Details
.loopback_host?(hostname) ⇒ Boolean
94 95 96 97 98 99 100 101 102 |
# File 'lib/supabase/rails/env.rb', line 94 def loopback_host?(hostname) return false if hostname.nil? return true if hostname == "localhost" return true if hostname.end_with?(".localhost") return true if hostname == "[::1]" || hostname == "::1" return true if /\A127\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/.match?(hostname) false end |
.parse_jwks(raw) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/supabase/rails/env.rb', line 65 def parse_jwks(raw) return nil if raw.nil? || raw.empty? parsed = JSON.parse(raw) return { "keys" => parsed } if parsed.is_a?(Array) return parsed if parsed.is_a?(Hash) && parsed["keys"].is_a?(Array) nil rescue JSON::ParserError nil end |
.parse_jwks_url(raw) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/supabase/rails/env.rb', line 77 def parse_jwks_url(raw) return nil if raw.nil? trimmed = raw.strip return nil if trimmed.empty? uri = URI.parse(trimmed) return nil if uri.host.nil? || uri.host.empty? return uri if uri.scheme == "https" return uri if uri.scheme == "http" && loopback_host?(uri.host) nil rescue URI::InvalidURIError nil end |
.parse_keys(raw) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/supabase/rails/env.rb', line 44 def parse_keys(raw) return {} if raw.nil? || raw.empty? parsed = JSON.parse(raw) return {} unless parsed.is_a?(Hash) parsed rescue JSON::ParserError {} end |
.resolve(overrides = {}) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/supabase/rails/env.rb', line 15 def resolve(overrides = {}) overrides = symbolize_overrides(overrides) url = overrides.fetch(:url) { ENV["SUPABASE_URL"] } raise EnvError.missing_supabase_url if url.nil? || url.to_s.empty? SupabaseEnv.new( url: url, publishable_keys: overrides[:publishable_keys] || resolve_keys("SUPABASE_PUBLISHABLE_KEY", "SUPABASE_PUBLISHABLE_KEYS"), secret_keys: overrides[:secret_keys] || resolve_keys("SUPABASE_SECRET_KEY", "SUPABASE_SECRET_KEYS"), jwks: overrides.key?(:jwks) ? overrides[:jwks] : resolve_jwks ) end |
.resolve_jwks ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/supabase/rails/env.rb', line 55 def resolve_jwks raw_jwks = ENV["SUPABASE_JWKS"] return parse_jwks(raw_jwks) if raw_jwks && !raw_jwks.strip.empty? raw_jwks_url = ENV["SUPABASE_JWKS_URL"] return parse_jwks_url(raw_jwks_url) if raw_jwks_url && !raw_jwks_url.strip.empty? nil end |
.resolve_keys(singular_var, plural_var) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/supabase/rails/env.rb', line 34 def resolve_keys(singular_var, plural_var) plural = ENV[plural_var] return parse_keys(plural) if plural && !plural.empty? singular = ENV[singular_var] return { "default" => singular } if singular && !singular.empty? {} end |
.symbolize_overrides(overrides) ⇒ Object
29 30 31 32 |
# File 'lib/supabase/rails/env.rb', line 29 def symbolize_overrides(overrides) return {} if overrides.nil? overrides.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } end |