public function getOobResults($param = null,
      $user_ip = null, $gitkit_token = null) {
    if (!$param) {
      $param = $_POST;
    }
    if (!$user_ip) {
      $user_ip = $_SERVER['REMOTE_ADDR'];
    }
    if (!$gitkit_token) {
      $gitkit_token = $this->getTokenString();
    }
    if (isset($param['action'])) {
      try {
        if ($param['action'] == 'resetPassword') {
          $oob_link = $this->buildOobLink(
              $this->passwordResetRequest($param, $user_ip),
              $param['action']);
          return $this->passwordResetResponse($oob_link, $param);
        } else if ($param['action'] == 'changeEmail') {
          if (!$gitkit_token) {
            return $this->failureOobMsg('login is required');
          }
          $oob_link = $this->buildOobLink(
              $this->changeEmailRequest($param, $user_ip, $gitkit_token),
              $param['action']);
          return $this->emailChangeResponse($oob_link, $param);
        }
      } catch (Gitkit_ClientException $error) {
        return $this->failureOobMsg($error->getMessage());
      }
    }
    return $this->failureOobMsg('unknown action type');
  }