53 lines
1.2 KiB
Ruby
53 lines
1.2 KiB
Ruby
|
class CsmlEngine
|
||
|
API_KEY_HEADER = 'X-Api-Key'.freeze
|
||
|
|
||
|
def initialize
|
||
|
@host_url = GlobalConfigService.load('CSML_BOT_HOST', '')
|
||
|
@api_key = GlobalConfigService.load('CSML_BOT_API_KEY', '')
|
||
|
|
||
|
raise ArgumentError, 'Missing Credentials' if @host_url.blank? || @api_key.blank?
|
||
|
end
|
||
|
|
||
|
def status
|
||
|
response = HTTParty.get("#{@host_url}/status")
|
||
|
process_response(response)
|
||
|
end
|
||
|
|
||
|
def run(bot, params)
|
||
|
payload = {
|
||
|
bot: bot,
|
||
|
event: {
|
||
|
request_id: SecureRandom.uuid,
|
||
|
client: params[:client],
|
||
|
payload: params[:payload],
|
||
|
metadata: params[:metadata],
|
||
|
ttl_duration: 4000
|
||
|
}
|
||
|
}
|
||
|
response = post('run', payload)
|
||
|
process_response(response)
|
||
|
end
|
||
|
|
||
|
def validate(bot)
|
||
|
response = post('validate', bot)
|
||
|
process_response(response)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def process_response(response)
|
||
|
return response.parsed_response if response.success?
|
||
|
|
||
|
{ error: response.parsed_response, status: response.code }
|
||
|
end
|
||
|
|
||
|
def post(path, payload)
|
||
|
HTTParty.post(
|
||
|
"#{@host_url}/#{path}", {
|
||
|
headers: { API_KEY_HEADER => @api_key, 'Content-Type' => 'application/json' },
|
||
|
body: payload.to_json
|
||
|
}
|
||
|
)
|
||
|
end
|
||
|
end
|