]> git.mxchange.org Git - friendica-addons.git/blobdiff - statusnet/library/statusnetoauth.php
Move StatusNet addon dependencies in own library subfolder
[friendica-addons.git] / statusnet / library / statusnetoauth.php
diff --git a/statusnet/library/statusnetoauth.php b/statusnet/library/statusnetoauth.php
new file mode 100644 (file)
index 0000000..beed59e
--- /dev/null
@@ -0,0 +1,102 @@
+<?php\r
+\r
+require_once __DIR__ . DIRECTORY_SEPARATOR . 'twitteroauth.php';\r
+\r
+/*\r
+ * We have to alter the TwitterOAuth class a little bit to work with any GNU Social\r
+ * installation abroad. Basically it's only make the API path variable and be happy.\r
+ *\r
+ * Thank you guys for the Twitter compatible API!\r
+ */\r
+class StatusNetOAuth extends TwitterOAuth\r
+{\r
+       function get_maxlength()\r
+       {\r
+               $config = $this->get($this->host . 'statusnet/config.json');\r
+               return $config->site->textlimit;\r
+       }\r
+\r
+       function accessTokenURL()\r
+       {\r
+               return $this->host . 'oauth/access_token';\r
+       }\r
+\r
+       function authenticateURL()\r
+       {\r
+               return $this->host . 'oauth/authenticate';\r
+       }\r
+\r
+       function authorizeURL()\r
+       {\r
+               return $this->host . 'oauth/authorize';\r
+       }\r
+\r
+       function requestTokenURL()\r
+       {\r
+               return $this->host . 'oauth/request_token';\r
+       }\r
+\r
+       function __construct($apipath, $consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL)\r
+       {\r
+               parent::__construct($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);\r
+               $this->host = $apipath;\r
+       }\r
+\r
+       /**\r
+        * Make an HTTP request\r
+        *\r
+        * Copied here from the TwitterOAuth library and complemented by applying the proxy settings of Friendica\r
+        *\r
+        * @param string $method\r
+        * @param string $host\r
+        * @param string $path\r
+        * @param array  $parameters\r
+        *\r
+        * @return array|object API results\r
+        */\r
+       function http($url, $method, $postfields = NULL)\r
+       {\r
+               $this->http_info = [];\r
+               $ci = curl_init();\r
+               /* Curl settings */\r
+               $prx = Config::get('system', 'proxy');\r
+               if (strlen($prx)) {\r
+                       curl_setopt($ci, CURLOPT_HTTPPROXYTUNNEL, 1);\r
+                       curl_setopt($ci, CURLOPT_PROXY, $prx);\r
+                       $prxusr = Config::get('system', 'proxyuser');\r
+                       if (strlen($prxusr)) {\r
+                               curl_setopt($ci, CURLOPT_PROXYUSERPWD, $prxusr);\r
+                       }\r
+               }\r
+               curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);\r
+               curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);\r
+               curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);\r
+               curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);\r
+               curl_setopt($ci, CURLOPT_HTTPHEADER, ['Expect:']);\r
+               curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);\r
+               curl_setopt($ci, CURLOPT_HEADERFUNCTION, [$this, 'getHeader']);\r
+               curl_setopt($ci, CURLOPT_HEADER, FALSE);\r
+\r
+               switch ($method) {\r
+                       case 'POST':\r
+                               curl_setopt($ci, CURLOPT_POST, TRUE);\r
+                               if (!empty($postfields)) {\r
+                                       curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);\r
+                               }\r
+                               break;\r
+                       case 'DELETE':\r
+                               curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');\r
+                               if (!empty($postfields)) {\r
+                                       $url = "{$url}?{$postfields}";\r
+                               }\r
+               }\r
+\r
+               curl_setopt($ci, CURLOPT_URL, $url);\r
+               $response = curl_exec($ci);\r
+               $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);\r
+               $this->http_info = array_merge($this->http_info, curl_getinfo($ci));\r
+               $this->url = $url;\r
+               curl_close($ci);\r
+               return $response;\r
+       }\r
+}\r