85 lines
1.9 KiB
PHP
Executable file
85 lines
1.9 KiB
PHP
Executable file
<?php
|
|
|
|
/**
|
|
* OAuth2.0 draft v10 exception handling.
|
|
*
|
|
* @author Originally written by Naitik Shah <naitik@facebook.com>.
|
|
* @author Update to draft v10 by Edison Wong <hswong3i@pantarei-design.com>.
|
|
*
|
|
* @sa <a href="https://github.com/facebook/php-sdk">Facebook PHP SDK</a>.
|
|
*/
|
|
class OAuth2Exception extends Exception {
|
|
|
|
/**
|
|
* The result from the API server that represents the exception information.
|
|
*/
|
|
protected $result;
|
|
|
|
/**
|
|
* Make a new API Exception with the given result.
|
|
*
|
|
* @param $result
|
|
* The result from the API server.
|
|
*/
|
|
public function __construct($result) {
|
|
$this->result = $result;
|
|
|
|
$code = isset($result['code']) ? $result['code'] : 0;
|
|
|
|
if (isset($result['error'])) {
|
|
// OAuth 2.0 Draft 10 style
|
|
$message = $result['error'];
|
|
}
|
|
elseif (isset($result['message'])) {
|
|
// cURL style
|
|
$message = $result['message'];
|
|
}
|
|
else {
|
|
$message = 'Unknown Error. Check getResult()';
|
|
}
|
|
|
|
parent::__construct($message, $code);
|
|
}
|
|
|
|
/**
|
|
* Return the associated result object returned by the API server.
|
|
*
|
|
* @returns
|
|
* The result from the API server.
|
|
*/
|
|
public function getResult() {
|
|
return $this->result;
|
|
}
|
|
|
|
/**
|
|
* Returns the associated type for the error. This will default to
|
|
* 'Exception' when a type is not available.
|
|
*
|
|
* @return
|
|
* The type for the error.
|
|
*/
|
|
public function getType() {
|
|
if (isset($this->result['error'])) {
|
|
$message = $this->result['error'];
|
|
if (is_string($message)) {
|
|
// OAuth 2.0 Draft 10 style
|
|
return $message;
|
|
}
|
|
}
|
|
return 'Exception';
|
|
}
|
|
|
|
/**
|
|
* To make debugging easier.
|
|
*
|
|
* @returns
|
|
* The string representation of the error.
|
|
*/
|
|
public function __toString() {
|
|
$str = $this->getType() . ': ';
|
|
if ($this->code != 0) {
|
|
$str .= $this->code . ': ';
|
|
}
|
|
return $str . $this->message;
|
|
}
|
|
}
|