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



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

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



271
272
273
274
275
276
277
278
279
280
281
# File 'lib/openc3/script/script.rb', line 271

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



265
266
267
268
# File 'lib/openc3/script/script.rb', line 265

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



256
257
258
259
260
261
262
# File 'lib/openc3/script/script.rb', line 256

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



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

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



292
293
294
# File 'lib/openc3/script/script.rb', line 292

def shutdown
  @json_api.shutdown
end