def response
id = @a[0]
opts = @a[1]
callback = @r[-1]
if opts[:statemachine].final? id
@status = 410
else
if CPEE::Persistence::extract_item(id,opts,"callback/#{callback}/type") == 'callback'
ret = {}
ret['values'] = @p.map{ |e|
[
e.name,
if e.class == Riddl::Parameter::Simple
[:simple,e.value]
elsif e.class == Riddl::Parameter::Complex && e.value.size <= 512000
[:complex,e.mimetype,cleanup_encoding(e.value.read)]
else
[:complex, e.mimetype,cleanup_encoding(e.value.read)]
end
]
}
ret['headers'] = @h
CPEE::Message::send(
:'callback-response',
callback,
opts[:url],
id,
{},
{},
ret,
opts[:redis]
)
elsif CPEE::Persistence::extract_item(id,opts,"callback/#{callback}/type") == 'vote'
if @p.length == 1 && @p[0].name == 'continue' && @p[0].class == Riddl::Parameter::Simple
CPEE::Message::send(
:'vote-response',
callback,
opts[:url],
id,
{},
{},
@p[0].value,
opts[:redis]
)
else
@status = 400
end
else
@status = 503
end
end
nil
end