]> git.mxchange.org Git - friendica-addons.git/blobdiff - diaspora/diasphp.php
Store hash tags
[friendica-addons.git] / diaspora / diasphp.php
index b26d3ee3a9e497a695466df178ca1c41a237e585..1588b58233b05ddf0cc4989ade24e84d7e0211ca 100644 (file)
@@ -1,46 +1,56 @@
 <?php
+
+use Friendica\Core\System;
+
 /**
  * Ein fies zusammengehackter PHP-Diaspory-Client, der direkt von diesem abgeschaut ist:
  * https://github.com/Javafant/diaspy/blob/master/client.py
  */
 
 class Diasphp {
+       private $cookiejar;
+
        function __construct($pod) {
                $this->token_regex = '/content="(.*?)" name="csrf-token/';
-               
+
                $this->pod = $pod;
-               $this->cookiejar = tempnam(sys_get_temp_dir(), 'cookies');
+               $this->cookiejar = tempnam(System::getTempPath(), 'cookies');
+       }
+
+       function __destruct() {
+               if (file_exists($this->cookiejar))
+                       unlink($this->cookiejar);
        }
 
        function _fetch_token() {
                $ch = curl_init();
-               
+
                curl_setopt ($ch, CURLOPT_URL, $this->pod . "/stream");
                curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
                curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
                curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
                curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
-               
+
                $output = curl_exec ($ch);
                curl_close($ch);
-               
+
                // Token holen und zurückgeben
                preg_match($this->token_regex, $output, $matches);
                return $matches[1];
        }
-       
+
        function login($username, $password) {
                $datatopost = array(
                        'user[username]' => $username,
                        'user[password]' => $password,
                        'authenticity_token' => $this->_fetch_token()
                );
-               
+
                $poststr = http_build_query($datatopost);
-               
+
                // Adresse per cURL abrufen
                $ch = curl_init();
-               
+
                curl_setopt ($ch, CURLOPT_URL, $this->pod . "/users/sign_in");
                curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
                curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
@@ -48,11 +58,11 @@ class Diasphp {
                curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt ($ch, CURLOPT_POST, true);
                curl_setopt ($ch, CURLOPT_POSTFIELDS, $poststr);
-               
+
                curl_exec ($ch);
                $info = curl_getinfo($ch);
                curl_close($ch);
-               
+
                if($info['http_code'] != 302) {
                        throw new Exception('Login error '.print_r($info, true));
                }
@@ -60,24 +70,25 @@ class Diasphp {
                // Das Objekt zurückgeben, damit man Aurufe verketten kann.
                return $this;
        }
-       
-       function post($text) {
+
+       function post($text, $provider = "diasphp") {
                // post-daten vorbereiten
                $datatopost = json_encode(array(
                                'aspect_ids' => 'public',
-                               'status_message' => array('text' => $text)
+                               'status_message' => array('text' => $text,
+                                                       'provider_display_name' => $provider)
                ));
-               
+
                // header vorbereiten
                $headers = array(
                        'Content-Type: application/json',
                        'accept: application/json',
                        'x-csrf-token: '.$this->_fetch_token()
                );
-               
+
                // Adresse per cURL abrufen
                $ch = curl_init();
-               
+
                curl_setopt ($ch, CURLOPT_URL, $this->pod . "/status_messages");
                curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
                curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
@@ -86,17 +97,16 @@ class Diasphp {
                curl_setopt ($ch, CURLOPT_POST, true);
                curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost);
                curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
-               
+
                curl_exec ($ch);
                $info = curl_getinfo($ch);
                curl_close($ch);
-               
+
                if($info['http_code'] != 201) {
                        throw new Exception('Post error '.print_r($info, true));
                }
-               
+
                // Ende der möglichen Kette, gib mal "true" zurück.
                return true;
        }
 }
-?>