Class: URBANopt::REopt::URLConfig
- Inherits:
-
Object
- Object
- URBANopt::REopt::URLConfig
- Defined in:
- lib/urbanopt/reopt/url_config.rb
Overview
URLConfig provides centralized configuration for all REopt API endpoint URLs. Supports environment variable overrides and default production URLs.
Configuration priority:
-
REOPT_BASE_URL environment variable
-
Default production URL (developer.nlr.gov)
Constant Summary collapse
- DEFAULT_BASE_URL =
Default production base URL for REopt API
'https://developer.nlr.gov/api/reopt/v3'
Instance Method Summary collapse
-
#base_url ⇒ Object
Get the base URL for REopt API.
-
#configure_ssl(http) ⇒ Object
Configure SSL settings for HTTP connection based on URL scheme.
-
#erp_results_uri(run_uuid) ⇒ Object
Get URI for resilience results endpoint.
-
#erp_submit_uri ⇒ Object
Get URI for resilience job submission endpoint.
-
#initialize(api_key: nil) ⇒ URLConfig
constructor
Initialize URL configuration.
-
#requires_api_key? ⇒ Boolean
Check if this URL requires an API key.
-
#results_uri(run_uuid) ⇒ Object
Get URI for job results endpoint.
-
#submit_uri ⇒ Object
Get URI for job submission endpoint.
-
#url_for(endpoint, run_uuid: nil) ⇒ Object
Get URL string for any endpoint (used by GHP API).
Constructor Details
#initialize(api_key: nil) ⇒ URLConfig
Initialize URL configuration
- parameters:
-
api_key- String - API key for endpoints that require authentication
29 30 31 32 |
# File 'lib/urbanopt/reopt/url_config.rb', line 29 def initialize(api_key: nil) @api_key = api_key @base_url = determine_base_url end |
Instance Method Details
#base_url ⇒ Object
Get the base URL for REopt API
- return:
-
String - Base URL without trailing slash
39 40 41 |
# File 'lib/urbanopt/reopt/url_config.rb', line 39 def base_url @base_url end |
#configure_ssl(http) ⇒ Object
Configure SSL settings for HTTP connection based on URL scheme
- parameters:
-
http- Net::HTTP - HTTP connection object to configure
129 130 131 132 133 |
# File 'lib/urbanopt/reopt/url_config.rb', line 129 def configure_ssl(http) if @base_url.start_with?('https') http.use_ssl = true end end |
#erp_results_uri(run_uuid) ⇒ Object
Get URI for resilience results endpoint
- parameters:
-
run_uuid- String - Unique identifier for the resilience job
- return:
-
URI - Complete URI for resilience results
96 97 98 99 100 |
# File 'lib/urbanopt/reopt/url_config.rb', line 96 def erp_results_uri(run_uuid) url = "#{@base_url}/erp/#{run_uuid}/results" url += requires_api_key? ? "?api_key=#{@api_key}" : '' URI.parse(url) end |
#erp_submit_uri ⇒ Object
Get URI for resilience job submission endpoint
- return:
-
URI - Complete URI for ERP submission
82 83 84 85 86 |
# File 'lib/urbanopt/reopt/url_config.rb', line 82 def erp_submit_uri url = "#{@base_url}/erp" url += requires_api_key? ? "?api_key=#{@api_key}" : '/' URI.parse(url) end |
#requires_api_key? ⇒ Boolean
Check if this URL requires an API key
- return:
-
Bool - True if API key is required
48 49 50 |
# File 'lib/urbanopt/reopt/url_config.rb', line 48 def requires_api_key? @base_url.include?('developer.nlr.gov') || @base_url.include?('developer.nrel.gov') end |
#results_uri(run_uuid) ⇒ Object
Get URI for job results endpoint
- parameters:
-
run_uuid- String - Unique identifier for the optimization job
- return:
-
URI - Complete URI for job results
71 72 73 74 75 |
# File 'lib/urbanopt/reopt/url_config.rb', line 71 def results_uri(run_uuid) url = "#{@base_url}/job/#{run_uuid}/results" url += requires_api_key? ? "?api_key=#{@api_key}" : '' URI.parse(url) end |
#submit_uri ⇒ Object
Get URI for job submission endpoint
- return:
-
URI - Complete URI for job submission
57 58 59 60 61 |
# File 'lib/urbanopt/reopt/url_config.rb', line 57 def submit_uri url = "#{@base_url}/job" url += requires_api_key? ? "?api_key=#{@api_key}" : '/' URI.parse(url) end |
#url_for(endpoint, run_uuid: nil) ⇒ Object
Get URL string for any endpoint (used by GHP API)
- parameters:
-
endpoint- String - Endpoint path (e.g., ‘job’, ‘erp’) -
run_uuid- String - Optional run UUID for results endpoints
- return:
-
String - Complete URL string
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/urbanopt/reopt/url_config.rb', line 111 def url_for(endpoint, run_uuid: nil) path = run_uuid ? "/#{endpoint}/#{run_uuid}/results" : "/#{endpoint}" url = "#{@base_url}#{path}" if requires_api_key? separator = path.include?('/results') ? '?' : (endpoint == 'erp' ? '?' : '?') url += "#{separator}api_key=#{@api_key}" end url end |