Class: OpenC3::ScriptServerProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/openc3/script/script.rb

Overview

Provides a proxy to the Script Runner Api which communicates with the API server

Instance Method Summary collapse

Constructor Details

#initializeScriptServerProxy

Create a JsonDRbObject connection to the API server



313
314
315
316
317
318
319
# File 'lib/openc3/script/script.rb', line 313

def initialize
  @json_api = JsonApiObject.new(
    url: generate_url(),
    timeout: generate_timeout(),
    authentication: generate_auth()
  )
end

Instance Method Details

#generate_authObject

generate the auth object



300
301
302
303
304
305
306
307
308
309
310
# File 'lib/openc3/script/script.rb', line 300

def generate_auth
  if ENV['OPENC3_API_TOKEN'].nil? and ENV['OPENC3_API_USER'].nil?
    if ENV['OPENC3_API_PASSWORD']
      return OpenC3Authentication.new()
    else
      return nil
    end
  else
    return OpenC3KeycloakAuthentication.new(ENV['OPENC3_KEYCLOAK_URL'])
  end
end

#generate_timeoutObject

pull openc3-cosmos-script-runner-api timeout from environment variables



294
295
296
297
# File 'lib/openc3/script/script.rb', line 294

def generate_timeout
  timeout = ENV['OPENC3_SCRIPT_API_TIMEOUT'] || '5.0'
  return timeout.to_f
end

#generate_urlObject

pull openc3-cosmos-script-runner-api url from environment variables



285
286
287
288
289
290
291
# File 'lib/openc3/script/script.rb', line 285

def generate_url
  schema = ENV['OPENC3_SCRIPT_API_SCHEMA'] || 'http'
  hostname = ENV['OPENC3_SCRIPT_API_HOSTNAME'] || (ENV['OPENC3_DEVEL'] ? '127.0.0.1' : 'openc3-cosmos-script-runner-api')
  port = ENV['OPENC3_SCRIPT_API_PORT'] || '2902'
  port = port.to_i
  return "#{schema}://#{hostname}:#{port}"
end

#request(*method_params, **kw_params) ⇒ Object



325
326
327
328
329
330
331
332
333
334
335
336
# File 'lib/openc3/script/script.rb', line 325

def request(*method_params, **kw_params)
  kw_params[:scope] = $openc3_scope unless kw_params[:scope]
  # If :disconnect is there delete it and return the value
  # If it is not there, delete returns nil
  disconnect = kw_params.delete(:disconnect)
  if $disconnect and disconnect
    # If they overrode the return value using the disconnect keyword then return that
    return disconnect
  else
    @json_api.request(*method_params, **kw_params)
  end
end

#shutdownObject



321
322
323
# File 'lib/openc3/script/script.rb', line 321

def shutdown
  @json_api.shutdown
end