class Anyway::Loaders::Doppler
Attributes
Public Class Methods
Source
# File lib/anyway/loaders/doppler.rb, line 18 def token @token || ENV["DOPPLER_TOKEN"] end
Public Instance Methods
Source
# File lib/anyway/loaders/doppler.rb, line 25 def call(env_prefix:, **_options) env_payload = parse_doppler_response(url: Doppler.download_url, token: Doppler.token) env = ::Anyway::Env.new(type_cast: ::Anyway::NoCast, env_container: env_payload) env.fetch_with_trace(env_prefix).then do |(conf, trace)| Tracing.current_trace&.merge!(trace) conf end end
Private Instance Methods
Source
# File lib/anyway/loaders/doppler.rb, line 48 def fetch_doppler_config(url, token) uri = URI.parse(url) raise "Doppler token is required to load configuration from Doppler" if token.nil? http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == "https" request = Net::HTTP::Get.new(uri) request["Accept"] = "application/json" request["Authorization"] = "Bearer #{token}" http.request(request) end
Source
# File lib/anyway/loaders/doppler.rb, line 38 def parse_doppler_response(url:, token:) response = fetch_doppler_config(url, token) unless response.is_a?(Net::HTTPSuccess) raise RequestError, "#{response.code} #{response.message}" end JSON.parse(response.read_body) end