3 * Ein fies zusammengehackter PHP-Diaspory-Client, der direkt von diesem abgeschaut ist:
4 * https://github.com/Javafant/diaspy/blob/master/client.py
8 function __construct($pod) {
9 $this->token_regex = '/content="(.*?)" name="csrf-token/';
12 $this->cookiejar = tempnam(sys_get_temp_dir(), 'cookies');
15 function _fetch_token() {
18 curl_setopt ($ch, CURLOPT_URL, $this->pod . "/stream");
19 curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
20 curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
21 curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
22 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
24 $output = curl_exec ($ch);
27 // Token holen und zurückgeben
28 preg_match($this->token_regex, $output, $matches);
32 function login($username, $password) {
34 'user[username]' => $username,
35 'user[password]' => $password,
36 'authenticity_token' => $this->_fetch_token()
39 $poststr = http_build_query($datatopost);
41 // Adresse per cURL abrufen
44 curl_setopt ($ch, CURLOPT_URL, $this->pod . "/users/sign_in");
45 curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
46 curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
47 curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, false);
48 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
49 curl_setopt ($ch, CURLOPT_POST, true);
50 curl_setopt ($ch, CURLOPT_POSTFIELDS, $poststr);
53 $info = curl_getinfo($ch);
56 if($info['http_code'] != 302) {
57 throw new Exception('Login error '.print_r($info, true));
60 // Das Objekt zurückgeben, damit man Aurufe verketten kann.
64 function post($text, $provider = "diasphp") {
65 // post-daten vorbereiten
66 $datatopost = json_encode(array(
67 'aspect_ids' => 'public',
68 'status_message' => array('text' => $text,
69 'provider_display_name' => $provider)
74 'Content-Type: application/json',
75 'accept: application/json',
76 'x-csrf-token: '.$this->_fetch_token()
79 // Adresse per cURL abrufen
82 curl_setopt ($ch, CURLOPT_URL, $this->pod . "/status_messages");
83 curl_setopt ($ch, CURLOPT_COOKIEFILE, $this->cookiejar);
84 curl_setopt ($ch, CURLOPT_COOKIEJAR, $this->cookiejar);
85 curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, false);
86 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
87 curl_setopt ($ch, CURLOPT_POST, true);
88 curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost);
89 curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
92 $info = curl_getinfo($ch);
95 if($info['http_code'] != 201) {
96 throw new Exception('Post error '.print_r($info, true));
99 // Ende der möglichen Kette, gib mal "true" zurück.