class SesameOs2::Client

Constants

API_ENDPOINT
COMMAND
HISTORY_TYPES

Attributes

api_key[R]
name[R]
ssm[R]

Public Class Methods

new(api_key: ENV['SESAME_API_KEY'], name:, ssm: ENV['SESAME_SSM']) click to toggle source
# File lib/sesame_os2/client.rb, line 33
def initialize(api_key: ENV['SESAME_API_KEY'], name:, ssm: ENV['SESAME_SSM'])
  @api_key = api_key
  @name = name
  @ssm = Ssm.new(ssm: ssm)
end

Public Instance Methods

command(command:) click to toggle source
# File lib/sesame_os2/client.rb, line 57
def command(command:)
  res = client.post("#{uuid}/cmd") do |req|
    req.body = { cmd: command, history: encoded64_name, sign: sign }.to_json
  end

  { status: res.status }
end
histories(page: 0, lg: 50) click to toggle source
# File lib/sesame_os2/client.rb, line 44
def histories(page: 0, lg: 50)
  res = client.get("#{uuid}/history", { page: page, lg: lg })
  parsed_body = JSON.parse(res.body)

  return parsed_body if res.status != 200

  parsed_body.map do |body|
    body['cast_type'] = HISTORY_TYPES[body['type']]
    body['name'] = Base64.decode64(body['historyTag']) if body['historyTag']
    body
  end
end
status() click to toggle source
# File lib/sesame_os2/client.rb, line 39
def status
  res = client.get(uuid)
  JSON.parse(res.body)
end

Private Instance Methods

client() click to toggle source
# File lib/sesame_os2/client.rb, line 75
def client
  @client = ::Faraday.new(url: API_ENDPOINT, headers: { 'x-api-key' => api_key })
end
encoded64_name() click to toggle source
# File lib/sesame_os2/client.rb, line 87
def encoded64_name
  Base64.encode64(name)
end
secret_key() click to toggle source
# File lib/sesame_os2/client.rb, line 83
def secret_key
  ssm.secret_key
end
sign() click to toggle source
# File lib/sesame_os2/client.rb, line 91
def sign
  Sign.create(secret_key: secret_key)
end
uuid() click to toggle source
# File lib/sesame_os2/client.rb, line 79
def uuid
  ssm.uuid
end