/** * Returns the current request url * @return string */ public static function current_request_url() { $request_url = SPUtils::url_from_parts(array("host" => $_SERVER["HTTP_HOST"], "scheme" => isset($_SERVER["HTTPS"]) ? "https" : "http", "port" => $_SERVER["SERVER_PORT"], "path" => $_SERVER["SCRIPT_NAME"])); $query = ""; if ($_GET) { $query = SPUtils::join_key_values_encode("=", "&", $_GET); } return rtrim("{$request_url}?{$query}", "?"); }
/** * Alias for execute_request (called with "POST" as the request method, and url encoded data) * @param $url * @param $data * @param $number_redirects * @return execute_request result */ function post($url, $data = null, $number_redirects = 0) { if (is_array($data)) { $data = SPUtils::join_key_values_encode("=", "&", $data); } return $this->execute_request(SPConstants::HTTP_METHOD_POST, $url, $data, $number_redirects); }
/** * This method assumes authentication has not happened previously * Parameters expected: email, password, captcha, extra (where extra is retrieved via GetState() after previous unsucessful attempt, optional or null otherwise) * @param string $email * @param string $password * @param string $captcha * @param string $extra */ public function Authenticate() { $loginparms = func_get_args(); if ($loginparms) { if (is_array(current($loginparms))) { $loginparms = array_shift($login_parms); } if (count($loginparms) > 3 && $loginparms[3]) { RestoreState($loginparms[3]); } if (count($loginparms) > 2 && $loginparms[2]) { $this->auth_parms["logincaptcha"] = $loginparms[2]; } if (count($loginparms) > 1 && $loginparms[1]) { $this->auth_parms["Passwd"] = $loginparms[1]; } if (count($loginparms) > 0 && $loginparms[0]) { $this->auth_parms["Email"] = $loginparms[0]; } } if (!$this->auth_parms["Email"] || !$this->auth_parms["Passwd"]) { $this->LoginResponse = GoogleAuthResponses::EmailPasswordMissing; return false; } $auth_string = SPUtils::join_key_values_encode("=", "&", $this->auth_parms); if (!$this->post(self::$login_url, $auth_string) && (!$this->http_response_code || !$this->http_response_body)) { $this->LoginResponse = GoogleAuthResponses::HTTPError; return false; } $response = SPUtils::parse_query(join("&", explode("\n", $this->http_response_body))); if ($auth = SPUtils::search_array($response, "auth")) { $this->auth_parms = $response; $this->auto_redirect_curl = false; $this->request_headers["Authorization"] = "GoogleLogin auth={$response[$auth]}"; return true; } $this->LoginResponse = isset($response["Error"]) ? $response["Error"] : GoogleAuthResponses::Unknown; $this->auth_parms["logintoken"] = isset($response['CaptchaToken']) ? $response['CaptchaToken'] : ""; $this->CaptchaUrl = self::$captcha_base_url . (isset($response['CaptchaUrl']) ? $response['CaptchaUrl'] : ""); return false; }
public function GetState() { return SPUtils::join_key_values_encode("=", "&", array_intersect_key($this->__oauth, array_flip($this->include_in_state))); }