]> git.mxchange.org Git - friendica.git/blobdiff - library/oauth2-php/lib/OAuth2Exception.inc
Initial work adding oauth to api
[friendica.git] / library / oauth2-php / lib / OAuth2Exception.inc
diff --git a/library/oauth2-php/lib/OAuth2Exception.inc b/library/oauth2-php/lib/OAuth2Exception.inc
new file mode 100644 (file)
index 0000000..8dc0469
--- /dev/null
@@ -0,0 +1,85 @@
+<?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;
+  }
+}