X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=diaspora%2Fdiasphp.php;h=f48933a62115e32b85b636732bcdba06a2279c36;hb=7c8c09836eac3ade1e886ceb402dc73849ddd753;hp=b26d3ee3a9e497a695466df178ca1c41a237e585;hpb=21f3adb91172c497e4fff928e2990eae02e36468;p=friendica-addons.git diff --git a/diaspora/diasphp.php b/diaspora/diasphp.php index b26d3ee3..f48933a6 100644 --- a/diaspora/diasphp.php +++ b/diaspora/diasphp.php @@ -5,42 +5,49 @@ */ 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(get_temppath(), '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 +55,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 +67,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,15 +94,15 @@ 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; }