Notice metadata for WebFinger. Not sure if implemented properly.
This is more of a proof of concept and will likely not stay in exactly this form. We should reasonably deliver the entire notice upon webfinger querying.
This commit is contained in:
parent
7ddd561837
commit
6ef1967cec
@ -1311,6 +1311,14 @@ class OStatusPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onEndWebFingerNoticeLinks(XML_XRD $xrd, Notice $target)
|
||||||
|
{
|
||||||
|
$author = $target->getProfile();
|
||||||
|
$salmon_url = common_local_url('usersalmon', array('id' => $author->id));
|
||||||
|
$xrd->links[] = new XML_XRD_Element_Link(Salmon::REL_SALMON, $salmon_url);
|
||||||
|
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,
|
$xrd->links[] = new XML_XRD_Element_Link(Discovery::UPDATESFROM,
|
||||||
|
@ -22,10 +22,18 @@ EndWebFingerReconstruction: Last attempts to generate an acct: uri from a Profil
|
|||||||
- $profile: Profile object for which we want a WebFinger ID
|
- $profile: Profile object for which we want a WebFinger ID
|
||||||
- &$acct: String reference where reconstructed ID is stored
|
- &$acct: String reference where reconstructed ID is stored
|
||||||
|
|
||||||
StartWebFingerProfileLinks: About to set links for the resource descriptor of a profile
|
StartWebFingerNoticeLinks: About to set links for the resource descriptor of a Notice
|
||||||
|
- $xrd: XML_XRD object being shown
|
||||||
|
- $target: Notice being shown
|
||||||
|
|
||||||
|
EndWebFingerNoticeLinks: Done with links for the resource descriptor of a Notice
|
||||||
|
- $xrd: XML_XRD object being shown
|
||||||
|
- $target: Notice being shown
|
||||||
|
|
||||||
|
StartWebFingerProfileLinks: About to set links for the resource descriptor of a Profile
|
||||||
- $xrd: XML_XRD object being shown
|
- $xrd: XML_XRD object being shown
|
||||||
- $target: Profile being shown
|
- $target: Profile being shown
|
||||||
|
|
||||||
EndWebFingerProfileLinks: Done with links for the resource descriptor of a profile
|
EndWebFingerProfileLinks: Done with links for the resource descriptor of a Profile
|
||||||
- $xrd: XML_XRD object being shown
|
- $xrd: XML_XRD object being shown
|
||||||
- $target: Profile being shown
|
- $target: Profile being shown
|
||||||
|
@ -11,8 +11,6 @@
|
|||||||
|
|
||||||
abstract class WebFingerResource
|
abstract class WebFingerResource
|
||||||
{
|
{
|
||||||
const PROFILEPAGE = 'http://webfinger.net/rel/profile-page';
|
|
||||||
|
|
||||||
protected $identities = array();
|
protected $identities = array();
|
||||||
|
|
||||||
protected $object = null;
|
protected $object = null;
|
||||||
@ -47,8 +45,5 @@ abstract class WebFingerResource
|
|||||||
return $aliases;
|
return $aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateXRD(XML_XRD $xrd) {
|
abstract public function updateXRD(XML_XRD $xrd);
|
||||||
$xrd->links[] = new XML_XRD_Element_Link(WebFingerResource::PROFILEPAGE,
|
|
||||||
$this->object->getUrl(), 'text/html');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,19 @@ class WebFingerResource_Notice extends WebFingerResource
|
|||||||
|
|
||||||
public function updateXRD(XML_XRD $xrd)
|
public function updateXRD(XML_XRD $xrd)
|
||||||
{
|
{
|
||||||
parent::updateXRD($xrd);
|
if (Event::handle('StartWebFingerNoticeLinks', array($xrd, $this->object))) {
|
||||||
|
$xrd->links[] = new XML_XRD_Element_Link('alternate',
|
||||||
|
common_local_url('ApiStatusesShow',
|
||||||
|
array('id'=>$this->object->id,
|
||||||
|
'format'=>'atom')),
|
||||||
|
'application/atom+xml');
|
||||||
|
|
||||||
// TODO: Add atom and json representation links here
|
$xrd->links[] = new XML_XRD_Element_Link('alternate',
|
||||||
// TODO: Add Salmon/callback links and stuff here
|
common_local_url('ApiStatusesShow',
|
||||||
|
array('id'=>$this->object->id,
|
||||||
|
'format'=>'json')),
|
||||||
|
'application/json');
|
||||||
|
Event::handle('EndWebFingerNoticeLinks', array($xrd, $this->object));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
class WebFingerResource_Profile extends WebFingerResource
|
class WebFingerResource_Profile extends WebFingerResource
|
||||||
{
|
{
|
||||||
|
const PROFILEPAGE = 'http://webfinger.net/rel/profile-page';
|
||||||
|
|
||||||
public function __construct(Profile $object)
|
public function __construct(Profile $object)
|
||||||
{
|
{
|
||||||
// The type argument above verifies that it's our class
|
// The type argument above verifies that it's our class
|
||||||
@ -53,7 +55,8 @@ class WebFingerResource_Profile extends WebFingerResource
|
|||||||
{
|
{
|
||||||
if (Event::handle('StartWebFingerProfileLinks', array($xrd, $this->object))) {
|
if (Event::handle('StartWebFingerProfileLinks', array($xrd, $this->object))) {
|
||||||
|
|
||||||
parent::updateXRD($xrd);
|
$xrd->links[] = new XML_XRD_Element_Link(self::PROFILEPAGE,
|
||||||
|
$this->object->getUrl(), 'text/html');
|
||||||
|
|
||||||
// XFN
|
// XFN
|
||||||
$xrd->links[] = new XML_XRD_Element_Link('http://gmpg.org/xfn/11',
|
$xrd->links[] = new XML_XRD_Element_Link('http://gmpg.org/xfn/11',
|
||||||
|
Loading…
Reference in New Issue
Block a user