summaryrefslogtreecommitdiff
path: root/plugins/OStatus/classes
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-02-18 18:20:48 +0000
committerBrion Vibber <brion@pobox.com>2010-02-18 18:20:48 +0000
commit22ff358ba8d1fd0396136e1de570d788dd0727b6 (patch)
treee53d46a094dea1c653ad7e2cb6576ac8ec17c86e /plugins/OStatus/classes
parentc2ba7645359242590c8ac60b66f012110ae889ef (diff)
OStatus sub/unsub updates:
- fix for PuSH unsub verification - send Salmon notification on unsub
Diffstat (limited to 'plugins/OStatus/classes')
-rw-r--r--plugins/OStatus/classes/HubSub.php11
-rw-r--r--plugins/OStatus/classes/Ostatus_profile.php44
2 files changed, 27 insertions, 28 deletions
diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php
index 7071ee5b4..0cd4281f8 100644
--- a/plugins/OStatus/classes/HubSub.php
+++ b/plugins/OStatus/classes/HubSub.php
@@ -30,7 +30,6 @@ class HubSub extends Memcached_DataObject
public $topic;
public $callback;
public $secret;
- public $verify_token;
public $challenge;
public $lease;
public $sub_start;
@@ -62,7 +61,6 @@ class HubSub extends Memcached_DataObject
'topic' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'callback' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL,
'secret' => DB_DATAOBJECT_STR,
- 'verify_token' => DB_DATAOBJECT_STR,
'challenge' => DB_DATAOBJECT_STR,
'lease' => DB_DATAOBJECT_INT,
'sub_start' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
@@ -84,8 +82,6 @@ class HubSub extends Memcached_DataObject
255, false),
new ColumnDef('secret', 'text',
null, true),
- new ColumnDef('verify_token', 'text',
- null, true),
new ColumnDef('challenge', 'varchar',
32, true),
new ColumnDef('lease', 'int',
@@ -154,8 +150,9 @@ class HubSub extends Memcached_DataObject
/**
* Send a verification ping to subscriber
* @param string $mode 'subscribe' or 'unsubscribe'
+ * @param string $token hub.verify_token value, if provided by client
*/
- function verify($mode)
+ function verify($mode, $token=null)
{
assert($mode == 'subscribe' || $mode == 'unsubscribe');
@@ -172,8 +169,8 @@ class HubSub extends Memcached_DataObject
if ($mode == 'subscribe') {
$params['hub.lease_seconds'] = $this->lease;
}
- if ($this->verify_token) {
- $params['hub.verify_token'] = $this->verify_token;
+ if ($token !== null) {
+ $params['hub.verify_token'] = $token;
}
$url = $this->callback . '?' . http_build_query($params, '', '&'); // @fixme ugly urls
diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
index be01cdfe1..486417617 100644
--- a/plugins/OStatus/classes/Ostatus_profile.php
+++ b/plugins/OStatus/classes/Ostatus_profile.php
@@ -484,7 +484,7 @@ class Ostatus_profile extends Memcached_DataObject
} else {
$this->sub_end = null;
}
- $this->lastupdate = common_sql_date();
+ $this->lastupdate = common_sql_now();
return $this->update($original);
}
@@ -497,12 +497,13 @@ class Ostatus_profile extends Memcached_DataObject
{
$original = clone($this);
- $this->verify_token = null;
- $this->secret = null;
- $this->sub_state = null;
- $this->sub_start = null;
- $this->sub_end = null;
- $this->lastupdate = common_sql_date();
+ // @fixme these should all be null, but DB_DataObject doesn't save null values...?????
+ $this->verify_token = '';
+ $this->secret = '';
+ $this->sub_state = '';
+ $this->sub_start = '';
+ $this->sub_end = '';
+ $this->lastupdate = common_sql_now();
return $this->update($original);
}
@@ -527,24 +528,25 @@ class Ostatus_profile extends Memcached_DataObject
':' . $actor->id .
':' . time(); // @fixme
- $entry = new Atom10Entry();
+ //$entry = new Atom10Entry();
+ $entry = new XMLStringer();
$entry->elementStart('entry');
$entry->element('id', null, $id);
$entry->element('title', null, $text);
$entry->element('summary', null, $text);
- $entry->element('published', null, common_date_w3dtf());
+ $entry->element('published', null, common_date_w3dtf(time()));
$entry->element('activity:verb', null, $verb);
- $entry->raw($profile->asAtomAuthor());
- $entry->raw($profile->asActivityActor());
+ $entry->raw($actor->asAtomAuthor());
+ $entry->raw($actor->asActivityActor());
$entry->raw($object->asActivityNoun('object'));
- $entry->elmentEnd('entry');
+ $entry->elementEnd('entry');
$feed = $this->atomFeed($actor);
- $feed->initFeed();
+ #$feed->initFeed();
$feed->addEntry($entry);
- $feed->renderEntries();
- $feed->endFeed();
+ #$feed->renderEntries();
+ #$feed->endFeed();
$xml = $feed->getString();
common_log(LOG_INFO, "Posting to Salmon endpoint $salmon: $xml");
@@ -568,7 +570,7 @@ class Ostatus_profile extends Memcached_DataObject
$feed = new Atom10Feed();
// @fixme should these be set up somewhere else?
$feed->addNamespace('activity', 'http://activitystrea.ms/spec/1.0/');
- $feed->addNamesapce('thr', 'http://purl.org/syndication/thread/1.0');
+ $feed->addNamespace('thr', 'http://purl.org/syndication/thread/1.0');
$feed->addNamespace('georss', 'http://www.georss.org/georss');
$feed->addNamespace('ostatus', 'http://ostatus.org/schema/1.0');
@@ -579,14 +581,14 @@ class Ostatus_profile extends Memcached_DataObject
$feed->setUpdated(time());
$feed->setPublished(time());
- $feed->addLink(common_url('ApiTimelineUser',
- array('id' => $actor->id,
- 'type' => 'atom')),
+ $feed->addLink(common_local_url('ApiTimelineUser',
+ array('id' => $actor->id,
+ 'type' => 'atom')),
array('rel' => 'self',
'type' => 'application/atom+xml'));
- $feed->addLink(common_url('userbyid',
- array('id' => $actor->id)),
+ $feed->addLink(common_local_url('userbyid',
+ array('id' => $actor->id)),
array('rel' => 'alternate',
'type' => 'text/html'));