def answer(allow, server_url=nil)
if allow or @immediate
mode = 'id_res'
else
mode = 'cancel'
end
response = OpenIDResponse.new(self)
if allow
response.add_fields(nil, {
'mode' => mode,
'identity' => @identity,
'return_to' => @return_to
})
else
response.add_field(nil, 'mode', mode, false)
response.signed.clear
if @immediate
unless server_url
raise ArgumentError, "setup_url is required for allow=false in immediate mode"
end
setup_request = self.class.new('checkid_immediate',
@identity,
@return_to,
@trust_root)
setup_url = setup_request.encode_to_url(server_url)
response.add_field(nil, 'user_setup_url', setup_url, false)
end
end
return response
end