def CheckIDRequest.from_query(query)
mode = query['openid.mode']
identity = query['openid.identity']
raise ProtocolError.new(query, 'openid.identity missing') unless identity
return_to = query['openid.return_to']
raise ProtocolError.new(query, 'openid.return_to missing') unless return_to
trust_root = query['openid.trust_root']
trust_root = nil if trust_root and trust_root.empty?
unless OpenID::TrustRoot.parse(return_to)
raise MalformedReturnURL.new(query, return_to)
end
if trust_root and not OpenID::TrustRoot.parse(trust_root)
raise MalformedTrustRoot.new(query, trust_root)
end
assoc_handle = query['openid.assoc_handle']
req = new(mode, identity, return_to, trust_root, assoc_handle)
req.query = query
unless req.trust_root_valid
raise UntrustedReturnURL.new(query, return_to, trust_root)
end
return req
end