From eecd611f678febabe1d62d5cf9b0bc152caf7596 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 22 May 2008 14:34:21 -0400 Subject: tags and XRDS Starting the process of remote subscriptions. First, add the capacity to mint tags. May in the future want to allow some kind of UUID or URL for unique URIs. New config options for tag authority and date, and a function for minting tags. Store URIs in the DB. If the admin changes his/her tag config, this shouldn't change the URIs in the DB. Unless they really want to make that happen. Generate an XRDS document with the appropriate URLs for microblogging. Also, redefined some stuff in openmicroblogging.txt. And moved the file. darcs-hash:20080522183421-84dde-fe46f32e4050f2c4b6c850334103007ed7feabf7.gz --- actions/xrds.php | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 actions/xrds.php (limited to 'actions/xrds.php') diff --git a/actions/xrds.php b/actions/xrds.php new file mode 100644 index 000000000..4a9c3454c --- /dev/null +++ b/actions/xrds.php @@ -0,0 +1,69 @@ +. + */ + +if (!defined('LACONICA')) { exit(1); } + +define('OPENMICROBLOGGING01', 'http://openmicroblogging.org/protocol/0.1'); + +class XrdsAction extends Action { + + function handle($args) { + parent::handle($args); + $nickname = $this->trimmed('nickname'); + $user = User::staticGet('nickname', $nickname); + if (!$user) { + common_user_error(_t('No such user.')); + return; + } + $this->show_xrds($user); + } + + function show_xrds($user) { + + header('Content-Type: application/rdf+xml'); + + common_start_xml(); + common_element_start('xrds:XRDS', array('xmlns:xrds' => 'xri://$xrds', + 'xmlns' => 'xri://$xrd*($v*2.0)')); + common_element_start('XRD'); + + $this->show_service(OPENMICROBLOGGING01.'/identifier', + $user->uri); + + # XXX: decide whether to include user's ID/nickname in postNotice URL + + foreach (array('requestToken', 'userAuthorization', + 'accessToken', 'postNotice', + 'updateProfile') as $type) { + $this->show_service(OPENMICROBLOGGING01.'/'.$type, + common_local_url(strtolower($type))); + } + + common_element_end('XRD'); + common_element_end('xrds:XRDS'); + common_end_xml(); + } + + function show_service($type, $uri) { + common_element_start('Service'); + common_element('Type', $type); + common_element('URI', $uri); + common_element_end('Service'); + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf