def complete(query, service_endpoint)
return FailureResponse.new(nil, msg='no session state found') unless service_endpoint
consumer_id = service_endpoint.consumer_id
server_id = service_endpoint.server_id
server_url = service_endpoint.server_url
nonce = query['nonce']
if nonce.nil?
return FailureResponse.new(consumer_id, 'could not extract nonce')
end
mode = query["openid.mode"]
case mode
when "cancel"
return CancelResponse.new(consumer_id)
when "error"
error = query["openid.error"]
unless error.nil?
OpenID::Util.log('Error: '+error)
end
return FailureResponse.new(nil, msg=error)
when "id_res"
return self.do_id_res(nonce, consumer_id, server_id, server_url, query)
else
return FailureResponse.new(nil, msg="unknown mode #{mode}")
end
end