Differentiate on group and user for WebFinger data
This commit is contained in:
parent
9f9af9a139
commit
7beec74f0c
@ -1289,21 +1289,21 @@ class OStatusPlugin extends Plugin
|
|||||||
function onEndWebFingerNoticeLinks(XML_XRD $xrd, Notice $target)
|
function onEndWebFingerNoticeLinks(XML_XRD $xrd, Notice $target)
|
||||||
{
|
{
|
||||||
$author = $target->getProfile();
|
$author = $target->getProfile();
|
||||||
$salmon_url = common_local_url('usersalmon', array('id' => $author->id));
|
$profiletype = $this->profileTypeString($author);
|
||||||
|
$salmon_url = common_local_url("{$profiletype}salmon", array('id' => $author->id));
|
||||||
$xrd->links[] = new XML_XRD_Element_Link(Salmon::REL_SALMON, $salmon_url);
|
$xrd->links[] = new XML_XRD_Element_Link(Salmon::REL_SALMON, $salmon_url);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onEndWebFingerProfileLinks(XML_XRD $xrd, Profile $target)
|
function onEndWebFingerProfileLinks(XML_XRD $xrd, Profile $target)
|
||||||
{
|
{
|
||||||
$xrd->links[] = new XML_XRD_Element_Link(Discovery::UPDATESFROM,
|
if ($target->getObjectType() === ActivityObject::PERSON) {
|
||||||
common_local_url('ApiTimelineUser',
|
$this->addWebFingerPersonLinks($xrd, $target);
|
||||||
array('id' => $target->id, 'format' => 'atom')),
|
}
|
||||||
'application/atom+xml');
|
|
||||||
|
|
||||||
// Salmon
|
// Salmon
|
||||||
$salmon_url = common_local_url('usersalmon',
|
$profiletype = $this->profileTypeString($target);
|
||||||
array('id' => $target->id));
|
$salmon_url = common_local_url("{$profiletype}salmon", array('id' => $target->id));
|
||||||
|
|
||||||
$xrd->links[] = new XML_XRD_Element_Link(Salmon::REL_SALMON, $salmon_url);
|
$xrd->links[] = new XML_XRD_Element_Link(Salmon::REL_SALMON, $salmon_url);
|
||||||
|
|
||||||
@ -1311,6 +1311,35 @@ class OStatusPlugin extends Plugin
|
|||||||
$xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_REPLIES, $salmon_url);
|
$xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_REPLIES, $salmon_url);
|
||||||
$xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_MENTIONS, $salmon_url);
|
$xrd->links[] = new XML_XRD_Element_Link(Salmon::NS_MENTIONS, $salmon_url);
|
||||||
|
|
||||||
|
// TODO - finalize where the redirect should go on the publisher
|
||||||
|
$xrd->links[] = new XML_XRD_Element_Link('http://ostatus.org/schema/1.0/subscribe',
|
||||||
|
common_local_url('ostatussub') . '?profile={uri}',
|
||||||
|
null, // type not set
|
||||||
|
true); // isTemplate
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function profileTypeString(Profile $target)
|
||||||
|
{
|
||||||
|
// This is just used to have a definitive string response to "USERsalmon" or "GROUPsalmon"
|
||||||
|
switch ($target->getObjectType()) {
|
||||||
|
case ActivityObject::PERSON:
|
||||||
|
return 'user';
|
||||||
|
case ActivityObject::GROUP:
|
||||||
|
return 'group';
|
||||||
|
default:
|
||||||
|
throw new ServerException('Unknown profile type for WebFinger profile links');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function addWebFingerPersonLinks(XML_XRD $xrd, Profile $target)
|
||||||
|
{
|
||||||
|
$xrd->links[] = new XML_XRD_Element_Link(Discovery::UPDATESFROM,
|
||||||
|
common_local_url('ApiTimelineUser',
|
||||||
|
array('id' => $target->id, 'format' => 'atom')),
|
||||||
|
'application/atom+xml');
|
||||||
|
|
||||||
// Get this profile's keypair
|
// Get this profile's keypair
|
||||||
$magicsig = Magicsig::getKV('user_id', $target->id);
|
$magicsig = Magicsig::getKV('user_id', $target->id);
|
||||||
if (!$magicsig instanceof Magicsig && $target->isLocal()) {
|
if (!$magicsig instanceof Magicsig && $target->isLocal()) {
|
||||||
@ -1323,14 +1352,6 @@ class OStatusPlugin extends Plugin
|
|||||||
$xrd->links[] = new XML_XRD_Element_Link(Magicsig::DIASPORA_PUBLICKEYREL,
|
$xrd->links[] = new XML_XRD_Element_Link(Magicsig::DIASPORA_PUBLICKEYREL,
|
||||||
base64_encode($magicsig->exportPublicKey()));
|
base64_encode($magicsig->exportPublicKey()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO - finalize where the redirect should go on the publisher
|
|
||||||
$xrd->links[] = new XML_XRD_Element_Link('http://ostatus.org/schema/1.0/subscribe',
|
|
||||||
common_local_url('ostatussub') . '?profile={uri}',
|
|
||||||
null, // type not set
|
|
||||||
true); // isTemplate
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onGetLocalAttentions(Profile $actor, array $attention_uris, array &$mentions, array &$groups)
|
public function onGetLocalAttentions(Profile $actor, array $attention_uris, array &$mentions, array &$groups)
|
||||||
|
Loading…
Reference in New Issue
Block a user