summaryrefslogtreecommitdiff
path: root/plugins/OStatus/lib
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-02-22 09:43:27 -0800
committerBrion Vibber <brion@pobox.com>2010-02-22 12:13:57 -0800
commit06f155c02df91ae81eb4401c738815ee46b802a6 (patch)
tree0c03f3b97e81297790b5e59eb533737f05bd9998 /plugins/OStatus/lib
parent7e8c3ea418796152151a5780e52dd095ca4e114b (diff)
OStatus: initial hookup of remote group membership (notice delivery not yet working quite right)
- added a temp config var to disable salmon magic signatures until they're working consistently
Diffstat (limited to 'plugins/OStatus/lib')
-rw-r--r--plugins/OStatus/lib/activity.php6
-rw-r--r--plugins/OStatus/lib/salmon.php21
-rw-r--r--plugins/OStatus/lib/salmonaction.php23
3 files changed, 40 insertions, 10 deletions
diff --git a/plugins/OStatus/lib/activity.php b/plugins/OStatus/lib/activity.php
index a26248f19..6cb9881bf 100644
--- a/plugins/OStatus/lib/activity.php
+++ b/plugins/OStatus/lib/activity.php
@@ -367,6 +367,9 @@ class ActivityObject
return $object;
}
+ /**
+ * @fixme missing avatar, bio info, etc
+ */
static function fromProfile($profile)
{
$object = new ActivityObject();
@@ -379,6 +382,9 @@ class ActivityObject
return $object;
}
+ /**
+ * @fixme missing avatar, bio info, etc
+ */
function asString($tag='activity:object')
{
$xs = new XMLStringer(true);
diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php
index 53925dc3f..b5f178cc6 100644
--- a/plugins/OStatus/lib/salmon.php
+++ b/plugins/OStatus/lib/salmon.php
@@ -28,15 +28,26 @@
*/
class Salmon
{
+ /**
+ * Sign and post the given Atom entry as a Salmon message.
+ *
+ * @fixme pass through the actor for signing?
+ *
+ * @param string $endpoint_uri
+ * @param string $xml
+ * @return boolean success
+ */
public function post($endpoint_uri, $xml)
{
if (empty($endpoint_uri)) {
- return FALSE;
+ return false;
}
- $xml = $this->createMagicEnv($xml);
-
- $headers = array('Content-type: application/atom+xml');
+ if (!common_config('ostatus', 'skip_signatures')) {
+ $xml = $this->createMagicEnv($xml);
+ }
+
+ $headers = array('Content-Type: application/atom+xml');
try {
$client = new HTTPClient();
@@ -51,7 +62,7 @@ class Salmon
$response->getStatus() . ': ' . $response->getBody());
return false;
}
-
+ return true;
}
public function createMagicEnv($text)
diff --git a/plugins/OStatus/lib/salmonaction.php b/plugins/OStatus/lib/salmonaction.php
index 09a042975..83cf0b8f8 100644
--- a/plugins/OStatus/lib/salmonaction.php
+++ b/plugins/OStatus/lib/salmonaction.php
@@ -41,7 +41,7 @@ class SalmonAction extends Action
$this->clientError(_('This method requires a POST.'));
}
- if ($_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
+ if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/atom+xml') {
$this->clientError(_('Salmon requires application/atom+xml'));
}
@@ -57,11 +57,13 @@ class SalmonAction extends Action
// Check the signature
$salmon = new Salmon;
- if (!$salmon->verifyMagicEnv($dom)) {
- common_log(LOG_DEBUG, "Salmon signature verification failed.");
- $this->clientError(_m('Salmon signature verification failed.'));
+ if (!common_config('ostatus', 'skip_signatures')) {
+ if (!$salmon->verifyMagicEnv($dom)) {
+ common_log(LOG_DEBUG, "Salmon signature verification failed.");
+ $this->clientError(_m('Salmon signature verification failed.'));
+ }
}
-
+
$this->act = new Activity($dom->documentElement);
return true;
}
@@ -101,6 +103,9 @@ class SalmonAction extends Action
case ActivityVerb::JOIN:
$this->handleJoin();
break;
+ case ActivityVerb::LEAVE:
+ $this->handleLeave();
+ break;
default:
throw new ClientException(_("Unimplemented."));
}
@@ -155,6 +160,14 @@ class SalmonAction extends Action
}
/**
+ * Hmmmm
+ */
+ function handleLeave()
+ {
+ throw new ClientException(_("Unimplemented!"));
+ }
+
+ /**
* @return Ostatus_profile
*/
function ensureProfile()