85 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
|   }
 | |
| }
 |