*/
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');
}
+ 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);
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));
}
// 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);
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;
}