documentElement);
$this->assertFalse(empty($act));
$this->assertEquals(1243860840, $act->time);
$this->assertEquals(ActivityVerb::POST, $act->verb);
$this->assertFalse(empty($act->objects[0]));
$this->assertEquals('Punctuation Changeset', $act->objects[0]->title);
$this->assertEquals('http://versioncentral.example.org/activity/changeset', $act->objects[0]->type);
$this->assertEquals('Fixing punctuation because it makes it more readable.', $act->objects[0]->summary);
$this->assertEquals('tag:versioncentral.example.org,2009:/change/1643245', $act->objects[0]->id);
}
public function testExample2()
{
global $_example2;
$dom = DOMDocument::loadXML($_example2);
$act = new Activity($dom->documentElement);
$this->assertFalse(empty($act));
// Did we handle correctly with a typical payload?
$this->assertEquals("
Geraldine posted a Photo on PhotoPanic
\n " .
"", trim($act->content));
}
public function testExample3()
{
global $_example3;
$dom = DOMDocument::loadXML($_example3);
$feed = $dom->documentElement;
$entries = $feed->getElementsByTagName('entry');
$entry = $entries->item(0);
$act = new Activity($entry, $feed);
$this->assertFalse(empty($act));
$this->assertEquals(1071340202, $act->time);
$this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->link);
$this->assertEquals($act->verb, ActivityVerb::POST);
$this->assertFalse(empty($act->actor));
$this->assertEquals(ActivityObject::PERSON, $act->actor->type);
$this->assertEquals('John Doe', $act->actor->title);
$this->assertEquals('mailto:johndoe@example.com', $act->actor->id);
$this->assertFalse(empty($act->objects[0]));
$this->assertEquals(ActivityObject::NOTE, $act->objects[0]->type);
$this->assertEquals('urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a', $act->objects[0]->id);
$this->assertEquals('Atom-Powered Robots Run Amok', $act->objects[0]->title);
$this->assertEquals('Some text.', $act->objects[0]->summary);
$this->assertEquals('http://example.org/2003/12/13/atom03.html', $act->objects[0]->link);
$this->assertFalse(empty($act->context));
$this->assertTrue(empty($act->target));
$this->assertEquals($act->entry, $entry);
$this->assertEquals($act->feed, $feed);
}
public function testExample4()
{
global $_example4;
$dom = DOMDocument::loadXML($_example4);
$entry = $dom->documentElement;
$act = new Activity($entry);
$this->assertFalse(empty($act));
$this->assertEquals(1266547958, $act->time);
$this->assertEquals('http://example.net/notice/14', $act->link);
$this->assertFalse(empty($act->context));
$this->assertEquals('http://example.net/notice/12', $act->context->replyToID);
$this->assertEquals('http://example.net/notice/12', $act->context->replyToUrl);
$this->assertEquals('http://example.net/conversation/11', $act->context->conversation);
$this->assertEquals(array('http://example.net/user/1'), $act->context->attention);
$this->assertFalse(empty($act->objects[0]));
$this->assertEquals($act->objects[0]->content,
'@evan now is the time for all good men to come to the aid of their country. #thetime');
$this->assertFalse(empty($act->actor));
}
public function testExample5()
{
global $_example5;
$dom = DOMDocument::loadXML($_example5);
$feed = $dom->documentElement;
// @todo Test feed elements
$entries = $feed->getElementsByTagName('entry');
$entry = $entries->item(0);
$act = new Activity($entry, $feed);
// Post
$this->assertEquals($act->verb, ActivityVerb::POST);
$this->assertFalse(empty($act->context));
// Actor w/Portable Contacts stuff
$this->assertFalse(empty($act->actor));
$this->assertEquals($act->actor->type, ActivityObject::PERSON);
$this->assertEquals($act->actor->title, 'Test User');
$this->assertEquals($act->actor->id, 'http://example.net/mysite/user/3');
$this->assertEquals($act->actor->link, 'http://example.net/mysite/testuser');
$avatars = $act->actor->avatarLinks;
$this->assertEquals(
$avatars[0]->url,
'http://example.net/mysite/avatar/3-96-20100224004207.jpeg'
);
$this->assertEquals($act->actor->displayName, 'Test User');
$poco = $act->actor->poco;
$this->assertEquals($poco->preferredUsername, 'testuser');
$this->assertEquals($poco->address->formatted, 'San Francisco, CA');
$this->assertEquals($poco->urls[0]->type, 'homepage');
$this->assertEquals($poco->urls[0]->value, 'http://example.com/blog.html');
$this->assertEquals($poco->urls[0]->primary, 'true');
$this->assertEquals($act->actor->geopoint, '37.7749295 -122.4194155');
}
public function testExample6()
{
global $_example6;
$dom = DOMDocument::loadXML($_example6);
$rss = $dom->documentElement;
$channels = $dom->getElementsByTagName('channel');
$channel = $channels->item(0);
$items = $channel->getElementsByTagName('item');
$item = $items->item(0);
$act = new Activity($item, $channel);
$this->assertEquals($act->verb, ActivityVerb::POST);
$this->assertEquals($act->id, 'http://en.blog.wordpress.com/?p=3857');
$this->assertEquals($act->link, 'http://en.blog.wordpress.com/2010/03/03/rub-a-dub-dub-in-the-pubsubhubbub/');
$this->assertEquals($act->title, 'Rub-a-Dub-Dub in the PubSubHubbub');
$this->assertEquals($act->time, 1267634892);
$actor = $act->actor;
$this->assertFalse(empty($actor));
$this->assertEquals($actor->title, "Joseph Scott");
}
public function testExample7()
{
global $_example7;
$dom = DOMDocument::loadXML($_example7);
$rss = $dom->documentElement;
$channels = $dom->getElementsByTagName('channel');
$channel = $channels->item(0);
$items = $channel->getElementsByTagName('item');
$item = $items->item(0);
$act = new Activity($item, $channel);
$this->assertEquals(ActivityVerb::POST, $act->verb);
$this->assertEquals('http://evanpro.posterous.com/checking-out-captain-bones', $act->link);
$this->assertEquals('http://evanpro.posterous.com/checking-out-captain-bones', $act->id);
$this->assertEquals('Checking out captain bones', $act->title);
$this->assertEquals(1269095551, $act->time);
$actor = $act->actor;
$this->assertEquals(ActivityObject::PERSON, $actor->type);
$this->assertEquals('http://posterous.com/people/3sDslhaepotz', $actor->id);
$this->assertEquals('Evan Prodromou', $actor->title);
$this->assertNull($actor->summary);
$this->assertNull($actor->content);
$this->assertEquals('http://posterous.com/people/3sDslhaepotz', $actor->link);
$this->assertNull($actor->source);
$this->assertTrue(is_array($actor->avatarLinks));
$this->assertEquals(1, count($actor->avatarLinks));
$this->assertEquals('http://files.posterous.com/user_profile_pics/480326/2009-08-05-142447.jpg',
$actor->avatarLinks[0]->url);
$this->assertNotNull($actor->poco);
$this->assertEquals('evanpro', $actor->poco->preferredUsername);
$this->assertEquals('Evan Prodromou', $actor->poco->displayName);
$this->assertNull($actor->poco->note);
$this->assertNull($actor->poco->address);
$this->assertEquals(0, count($actor->poco->urls));
}
// Media test - cliqset
public function testExample8()
{
global $_example8;
$dom = DOMDocument::loadXML($_example8);
$feed = $dom->documentElement;
$entries = $feed->getElementsByTagName('entry');
$entry = $entries->item(0);
$act = new Activity($entry, $feed);
$this->assertFalse(empty($act));
$this->assertEquals($act->time, 1269221753);
$this->assertEquals($act->verb, ActivityVerb::POST);
$this->assertEquals($act->summary, 'zcopley posted 5 photos on Flickr');
$this->assertFalse(empty($act->objects));
$this->assertEquals(sizeof($act->objects), 5);
$this->assertEquals($act->objects[0]->type, ActivityObject::PHOTO);
$this->assertEquals($act->objects[0]->title, 'IMG_1368');
$this->assertNull($act->objects[0]->description);
$this->assertEquals(
$act->objects[0]->thumbnail,
'http://media.cliqset.com/6f6fbee9d7dfbffc73b6ef626275eb5f_thumb.jpg'
);
$this->assertEquals(
$act->objects[0]->link,
'http://www.flickr.com/photos/zcopley/4452933806/'
);
$this->assertEquals($act->objects[1]->type, ActivityObject::PHOTO);
$this->assertEquals($act->objects[1]->title, 'IMG_1365');
$this->assertNull($act->objects[1]->description);
$this->assertEquals(
$act->objects[1]->thumbnail,
'http://media.cliqset.com/b8f3932cd0bba1b27f7c8b3ef986915e_thumb.jpg'
);
$this->assertEquals(
$act->objects[1]->link,
'http://www.flickr.com/photos/zcopley/4442630390/'
);
$this->assertEquals($act->objects[2]->type, ActivityObject::PHOTO);
$this->assertEquals($act->objects[2]->title, 'Classic');
$this->assertEquals(
$act->objects[2]->description,
'-Powered by pikchur.com/n0u'
);
$this->assertEquals(
$act->objects[2]->thumbnail,
'http://media.cliqset.com/fc54c15f850b7a9a8efa644087a48c91_thumb.jpg'
);
$this->assertEquals(
$act->objects[2]->link,
'http://www.flickr.com/photos/zcopley/4430754103/'
);
$this->assertEquals($act->objects[3]->type, ActivityObject::PHOTO);
$this->assertEquals($act->objects[3]->title, 'IMG_1363');
$this->assertNull($act->objects[3]->description);
$this->assertEquals(
$act->objects[3]->thumbnail,
'http://media.cliqset.com/4b1d307c9217e2114391a8b229d612cb_thumb.jpg'
);
$this->assertEquals(
$act->objects[3]->link,
'http://www.flickr.com/photos/zcopley/4416969717/'
);
$this->assertEquals($act->objects[4]->type, ActivityObject::PHOTO);
$this->assertEquals($act->objects[4]->title, 'IMG_1361');
$this->assertNull($act->objects[4]->description);
$this->assertEquals(
$act->objects[4]->thumbnail,
'http://media.cliqset.com/23d9b4b96b286e0347d36052f22f6e60_thumb.jpg'
);
$this->assertEquals(
$act->objects[4]->link,
'http://www.flickr.com/photos/zcopley/4417734232/'
);
}
public function testAtomContent()
{
$tests = array(array("Some regular plain text.",
"Some regular plain text."),
array("<b>this is not HTML</b>",
"<b>this is not HTML</b>"),
array("Some regular plain HTML.",
"Some regular plain HTML."),
array("<b>this is too HTML</b>",
"this is too HTML"),
array("<b>but this is not HTML!</b>",
"<b>but this is not HTML!</b>"),
array("
Some regular plain XHTML.
",
"Some regular plain XHTML."),
array("
This is some XHTML!
",
"This is some XHTML!"),
array("
<b>This is not some XHTML!</b>
",
"<b>This is not some XHTML!</b>"),
array("
<b>This is not some XHTML either!</b>
",
"<b>This is not some XHTML either!</b>"));
foreach ($tests as $data) {
list($source, $output) = $data;
$xml = "" .
"http://example.com/fakeid" .
"Test" .
"Atom content tests" .
$source .
"";
$dom = DOMDocument::loadXML($xml);
$act = new Activity($dom->documentElement);
$this->assertFalse(empty($act));
$this->assertEquals($output, trim($act->content));
}
}
public function testRssContent()
{
$tests = array(array("Some regular plain HTML.",
"Some regular plain HTML."),
array("Some <b>exciting bold HTML</b>",
"Some exciting bold HTML"),
array("Some <b>escaped non-HTML.</b>",
"Some <b>escaped non-HTML.</b>"),
array("Some plain text.",
"Some plain text."),
array("Some <b>non-HTML text</b>",
"Some <b>non-HTML text</b>"),
array("Some <b>double-escaped text</b>",
"Some <b>double-escaped text</b>"));
foreach ($tests as $data) {
list($source, $output) = $data;
$xml = "" .
"http://example.com/fakeid" .
"RSS content tests" .
$source .
"";
$dom = DOMDocument::loadXML($xml);
$act = new Activity($dom->documentElement);
$this->assertFalse(empty($act));
$this->assertEquals($output, trim($act->content));
}
}
}
$_example1 = <<tag:versioncentral.example.org,2009:/commit/16432452009-06-01T12:54:00ZGeraldine committed a change to yateGeraldine just committed a change to yate on VersionCentralhttp://activitystrea.ms/schema/1.0/posthttp://versioncentral.example.org/activity/commithttp://versioncentral.example.org/activity/changesettag:versioncentral.example.org,2009:/change/1643245Punctuation ChangesetFixing punctuation because it makes it more readable.
EXAMPLE1;
$_example2 = <<tag:photopanic.example.com,2008:activity01Geraldine posted a Photo on PhotoPanic2008-11-02T15:29:00Z
http://activitystrea.ms/schema/1.0/post
tag:photopanic.example.com,2008:photo01My Cat2008-11-02T15:29:00Z
tag:atomactivity.example.com,2008:photo
<p>Geraldine posted a Photo on PhotoPanic</p>
<img src="/geraldine/photo1.jpg">
EXAMPLE2;
$_example3 = <<Example FeedA subtitle.urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af62003-12-13T18:30:02ZJohn Doejohndoe@example.comAtom-Powered Robots Run Amokurn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a2003-12-13T18:30:02ZSome text.
EXAMPLE3;
$_example4 = <<@evan now is the time for all good men to come to the aid of their country. #thetime@evan now is the time for all good men to come to the aid of their country. #thetimespockhttp://example.net/user/2http://activitystrea.ms/schema/1.0/personhttp://example.net/user/2spockhttp://example.net/notice/142010-02-19T02:52:38+00:002010-02-19T02:52:38+00:00@<span class="vcard"><a href="http://example.net/user/1" class="url"><span class="fn nickname">evan</span></a></span> now is the time for all good men to come to the aid of their country. #<span class="tag"><a href="http://example.net/tag/thetime" rel="tag">thetime</a></span>
EXAMPLE4;
$_example5 = <<3testuser timelineUpdates from testuser on Zach Dev!http://example.net/mysite/avatar/3-96-20100224004207.jpeg2010-02-24T06:38:49+00:00testuserhttp://example.net/mysite/user/3http://activitystrea.ms/schema/1.0/personhttp://example.net/mysite/user/3Test User37.7749295 -122.4194155testuserTest UserJust another test user.San Francisco, CAhomepagehttp://example.com/blog.htmltrueHey man, is that Freedom Code?! #freedom #hippyHey man, is that Freedom Code?! #freedom #hippytestuserhttp://example.net/mysite/user/3http://activitystrea.ms/schema/1.0/personhttp://example.net/mysite/user/3Test User37.7749295 -122.4194155testuserTest UserJust another test user.San Francisco, CAhomepagehttp://example.com/blog.htmltruehttp://example.net/mysite/notice/72010-02-24T00:53:06+00:002010-02-24T00:53:06+00:00Hey man, is that Freedom Code?! #<span class="tag"><a href="http://example.net/mysite/tag/freedom" rel="tag">freedom</a></span> #<span class="tag"><a href="http://example.net/mysite/tag/hippy" rel="tag">hippy</a></span>37.8313160 -122.2852473
EXAMPLE5;
$_example6 = <<WordPress.com News
http://en.blog.wordpress.com
The latest news on WordPress.com and the WordPress community.Thu, 18 Mar 2010 23:25:35 +0000http://wordpress.com/enhourly1http://www.gravatar.com/blavatar/e6392390e3bcfadff3671c5a5653d95b?s=96&d=http://s2.wp.com/i/buttonw-com.pngWordPress.com News
http://en.blog.wordpress.com
Rub-a-Dub-Dub in the PubSubHubbub
http://en.blog.wordpress.com/2010/03/03/rub-a-dub-dub-in-the-pubsubhubbub/
http://en.blog.wordpress.com/2010/03/03/rub-a-dub-dub-in-the-pubsubhubbub/#commentsWed, 03 Mar 2010 16:48:12 +0000Joseph Scotthttp://en.blog.wordpress.com/?p=3857]]>From the tongue twisting name department we welcome PubSubHubbub, or as some people have shortened it to: PuSH. Like rssCloud, PuSH is a way for services that subscribe to updates from your blog (think Google Reader, Bloglines or Netvibes) to get updates even faster. In a nutshell, instead of having to periodically ask your blog if there are any updates they can now register to automatically receive updates each time you publish new content. In most cases these updates are sent out within a second or two of when you hit the publish button.
Today we’ve turned on PuSH support for the more than 10.5 million blogs on WordPress.com. There’s nothing to configure, it’s working right now behind the scenes to help others keep up to date with your posts.
For those using the WordPress.org software we are releasing a new PuSH plugin: PuSHPress. This plugin differs from the current PuSH related plugins by including a built-in hub.
]]>
http://files.posterous.com/user_profile_pics/480326/2009-08-05-142447.jpghttp://posterous.com/people/3sDslhaepotzEvanProdromouevanproEvan Prodromou
EXAMPLE7;
$_example8 = <<Activity Stream for: zcopleyhttp://cliqset.com/feed/atom?uid=zcopley0http://activitystrea.ms/schema/1.0/post2010-03-22T01:35:53.000Zflickrhttp://flickr.comhttp://cliqset-services.s3.amazonaws.com/flickr.pnghttp://activitystrea.ms/schema/1.0/photoIMG_1368http://activitystrea.ms/schema/1.0/photoIMG_1365http://activitystrea.ms/schema/1.0/photoClassic-Powered by pikchur.com/n0uhttp://activitystrea.ms/schema/1.0/photoIMG_1363http://activitystrea.ms/schema/1.0/photoIMG_1361zcopley posted some photos on Flickrzcopley posted 5 photos on Flickr2010-03-22T20:46:42.778Ztag:cliqset.com,2010-03-22:/user/zcopley/SVgAZubGhtAnSAeezcopleyhttp://cliqset.com/user/zcopleyhttp://activitystrea.ms/schema/1.0/personzcopleyZachCopley
EXAMPLE8;
$_example9 = <<Google Buzz2010-03-22T01:55:53.596Ztag:google.com,2009:buzz-feed/public/posted/117848251937215158042Google - Google BuzzBuzz by Zach Copley from FlickrIMG_13662010-03-18T04:29:23.000Z2010-03-18T05:14:03.325Ztag:google.com,2009:buzz/z12zwdhxowq2d13q204cjr04kzu0cns5gh0Zach Copleyhttp://www.google.com/profiles/zcopley<div>IMG_1366</div>IMG_1366IMG_1365http://activitystrea.ms/schema/1.0/posthttp://activitystrea.ms/schema/1.0/phototag:google.com,2009:buzz/z12zwdhxowq2d13q204cjr04kzu0cns5gh0Buzz by Zach Copley from Flickr<div>IMG_1366</div>0
EXAMPLE9;