OStatus sub/unsub updates:
- fix for PuSH unsub verification - send Salmon notification on unsub
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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'));
|
||||
|
||||
|
Reference in New Issue
Block a user