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



305
306
307
308
309
310
311
# File 'lib/openc3/script/script.rb', line 305

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



292
293
294
295
296
297
298
299
300
301
302
# File 'lib/openc3/script/script.rb', line 292

def generate_auth
  if ENV['OPENC3_API_TOKEN'].nil? and ENV['OPENC3_API_USER'].nil?
    if ENV['OPENC3_API_PASSWORD'] || ENV['OPENC3_SERVICE_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



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

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



277
278
279
280
281
282
283
# File 'lib/openc3/script/script.rb', line 277

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



317
318
319
320
321
322
323
324
325
326
327
328
329
330
# File 'lib/openc3/script/script.rb', line 317

def request(*method_params, **kw_params)
  kw_params[:scope] = $openc3_scope unless kw_params[:scope]
  if $disconnect
    result = nil
    # If :disconnect is there delete it and return the value
    # If it is not there, delete returns nil
    disconnect = kw_params.delete(:disconnect)

    # If they overrode the return value using the disconnect keyword then return that
    return disconnect ? disconnect : result
  else
    @json_api.request(*method_params, **kw_params)
  end
end

#shutdownObject



313
314
315
# File 'lib/openc3/script/script.rb', line 313

def shutdown
  @json_api.shutdown
end