summaryrefslogtreecommitdiffstats
path: root/Auth
diff options
context:
space:
mode:
authortailor <cygnus@janrain.com>2007-09-26 19:47:53 +0000
committertailor <cygnus@janrain.com>2007-09-26 19:47:53 +0000
commitd7e921dea988a2d030e077b75d8c721ec853f146 (patch)
tree1f4eaeea5f2a29283d33dfddd3fd9f244b84647a /Auth
parent62c7fc41349c8c196e9d4a1dcc1286cd15764805 (diff)
downloadphp-openid-d7e921dea988a2d030e077b75d8c721ec853f146.zip
php-openid-d7e921dea988a2d030e077b75d8c721ec853f146.tar.gz
php-openid-d7e921dea988a2d030e077b75d8c721ec853f146.tar.bz2
[project @ Split consumer response processing into mode-specific methods]
Diffstat (limited to 'Auth')
-rw-r--r--Auth/OpenID/Consumer.php77
1 files changed, 55 insertions, 22 deletions
diff --git a/Auth/OpenID/Consumer.php b/Auth/OpenID/Consumer.php
index 9ccbaaf..e3a6334 100644
--- a/Auth/OpenID/Consumer.php
+++ b/Auth/OpenID/Consumer.php
@@ -637,29 +637,62 @@ class Auth_OpenID_GenericConsumer {
}
}
- if ($mode == 'cancel') {
- return new Auth_OpenID_CancelResponse($endpoint);
- } else if ($mode == 'error') {
- $error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
- $contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
- $reference = $message->getArg(Auth_OpenID_OPENID_NS, 'reference');
-
- return new Auth_OpenID_FailureResponse($endpoint, $error,
- $contact, $reference);
- } else if ($message->isOpenID2() && ($mode == 'setup_needed')) {
- return new Auth_OpenID_SetupNeededResponse($endpoint);
-
- } else if ($mode == 'id_res') {
- if ($this->_checkSetupNeeded($message)) {
- return SetupNeededResponse($endpoint,
- $result->user_setup_url);
- } else {
- return $this->_doIdRes($message, $endpoint);
- }
+ $mode_methods = array(
+ 'cancel' => '_complete_cancel',
+ 'error' => '_complete_error',
+ 'setup_needed' => '_complete_setup_needed',
+ 'id_res' => '_complete_id_res',
+ );
+
+ $method = Auth_OpenID::arrayGet($mode_methods, $mode,
+ '_completeInvalid');
+
+ return call_user_func_array(array(&$this, $method),
+ array($message, $endpoint));
+ }
+
+ function _completeInvalid($message, &$endpoint)
+ {
+ $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
+ '<No mode set>');
+
+ return new Auth_OpenID_FailureResponse($endpoint,
+ sprintf("Invalid openid.mode '%s'", $mode));
+ }
+
+ function _complete_cancel($message, &$endpoint)
+ {
+ return new Auth_OpenID_CancelResponse($endpoint);
+ }
+
+ function _complete_error($message, &$endpoint)
+ {
+ $error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
+ $contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
+ $reference = $message->getArg(Auth_OpenID_OPENID_NS, 'reference');
+
+ return new Auth_OpenID_FailureResponse($endpoint, $error,
+ $contact, $reference);
+ }
+
+ function _complete_setup_needed($message, &$endpoint)
+ {
+ if (!$message->isOpenID2()) {
+ return $this->_completeInvalid($message, $endpoint);
+ }
+
+ return new Auth_OpenID_SetupNeededResponse($endpoint);
+ }
+
+ function _complete_id_res($message, &$endpoint)
+ {
+ $user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
+ 'user_setup_url');
+
+ if ($this->_checkSetupNeeded($message)) {
+ return SetupNeededResponse($endpoint, $user_setup_url);
} else {
- return new Auth_OpenID_FailureResponse($endpoint,
- sprintf("Invalid openid.mode '%s'",
- $mode));
+ return $this->_doIdRes($message, $endpoint);
}
}