Revision feb16bd0
Added by Marc Dequènes about 13 years ago
- ID feb16bd04a7ec187c0b34b06c5680c51197af84f
lib/cyborghood/cyborg/botnet/protocol.rb | ||
---|---|---|
end
|
||
|
||
def process_request_result(result)
|
||
# TODO: better processing of result (info/warnings/…)
|
||
if result[:error]
|
||
send_error_action(result[:reply_message], result[:error])
|
||
send_error_action(result[:reply_message], result[:errors])
|
||
else
|
||
send_reply_result(result[:reply_message], result[:action_result])
|
||
send_reply_result(result[:reply_message], result[:results])
|
||
end
|
||
end
|
||
|
||
... | ... | |
:message => "missing parameters"
|
||
})
|
||
end
|
||
|
||
send_reply_ack(message)
|
||
@conversation.bot.schedule_task(@@request_callback) do
|
||
result = {
|
||
:reply_message => message
|
||
}
|
||
|
||
process_result_cb = Proc.new do |reply|
|
||
reply[:reply_message] = message
|
||
|
||
@@request_callback.call reply
|
||
end
|
||
|
||
@conversation.bot.schedule_task do
|
||
begin
|
||
result[:action_result] = @conversation.bot.interface._call(message.conv_thread.session,
|
||
@conversation.bot.interface._call(message.conv_thread.session,
|
||
message.action_parameters[:node],
|
||
message.action_parameters[:parameters])
|
||
message.action_parameters[:parameters],
|
||
&process_result_cb)
|
||
rescue CyberError => e
|
||
result[:error] = {
|
||
process_result_cb.call(:errors => [{
|
||
:category => e.category,
|
||
:severity => e.severity,
|
||
:message => e.message
|
||
}
|
||
}])
|
||
rescue
|
||
result[:error] = {
|
||
process_result_cb.call(:errors => [{
|
||
:category => 'unknown',
|
||
:severity => :unrecoverable,
|
||
:message => $!.to_s
|
||
}
|
||
}])
|
||
end
|
||
|
||
result
|
||
end
|
||
end
|
||
|
||
... | ... | |
@conversation.bot.schedule_task(@@request_callback) do
|
||
{
|
||
:reply_message => message,
|
||
:action_result => @conversation.bot.interface._is_node?(message.conv_thread.session, message.action_parameters[:node])
|
||
:results => @conversation.bot.interface._is_node?(message.conv_thread.session, message.action_parameters[:node])
|
||
}
|
||
end
|
||
end
|
Also available in: Unified diff
[evol] Cyborg/Interface: support returning API call replies asynchronously