]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge remote branch 'statusnet/testing' into testing
authorJames Walker <walkah@walkah.net>
Fri, 26 Feb 2010 04:49:45 +0000 (23:49 -0500)
committerJames Walker <walkah@walkah.net>
Fri, 26 Feb 2010 04:49:45 +0000 (23:49 -0500)
Conflicts:
plugins/OStatus/lib/webfinger.php

1  2 
plugins/OStatus/actions/xrd.php
plugins/OStatus/classes/Ostatus_profile.php

index cc5c70b08ed646d74c826c8d268df065b798b09f,0000000000000000000000000000000000000000..2a754dcfef7d8b7d11bcb7fcb73f302b725fb6ab
mode 100644,000000..100644
--- /dev/null
@@@ -1,109 -1,0 +1,109 @@@
-         $xrd->links[] = array('rel' => 'http://microformats.org/profile/hcard',
 +<?php
 +/*
 + * StatusNet - the distributed open-source microblogging tool
 + * Copyright (C) 2010, StatusNet, Inc.
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU Affero General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU Affero General Public License for more details.
 + *
 + * You should have received a copy of the GNU Affero General Public License
 + * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 + */
 +
 +/**
 + * @package OStatusPlugin
 + * @maintainer James Walker <james@status.net>
 + */
 +
 +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 +
 +class XrdAction extends Action
 +{
 +
 +    public $uri;
 +
 +    function prepare($args)
 +    {
 +        parent::prepare($args);
 +
 +        $this->uri = $this->trimmed('uri');
 +
 +        return true;
 +    }
 +
 +    function handle()
 +    {
 +        $acct = Discovery::normalize($this->uri);
 +
 +        $xrd = new XRD();
 +
 +        list($nick, $domain) = explode('@', substr(urldecode($acct), 5));
 +        $nick = common_canonical_nickname($nick);
 +
 +        $this->user = User::staticGet('nickname', $nick);
 +        if (!$this->user) {
 +            $this->clientError(_('No such user.'), 404);
 +            return false;
 +        }
 +
 +        $xrd->subject = $this->uri;
 +        $xrd->alias[] = common_profile_url($nick);
 +        $xrd->links[] = array('rel' => Discovery::PROFILEPAGE,
 +                              'type' => 'text/html',
 +                              'href' => common_profile_url($nick));
 +
 +        $xrd->links[] = array('rel' => Discovery::UPDATESFROM,
 +                              'href' => common_local_url('ApiTimelineUser',
 +                                                         array('id' => $this->user->id,
 +                                                               'format' => 'atom')),
 +                              'type' => 'application/atom+xml');
 +
 +        // hCard
-                               'href' => common_profile_url($nick));
++        $xrd->links[] = array('rel' => Webfinger::HCARD,
 +                              'type' => 'text/html',
-                                                          array('nickname' => $nick)));                        
-         
++                              'href' => common_local_url('hcard', array('nickname' => $nick)));
 +
 +        // XFN
 +        $xrd->links[] = array('rel' => 'http://gmpg.org/xfn/11',
 +                              'type' => 'text/html',
 +                              'href' => common_profile_url($nick));
 +        // FOAF
 +        $xrd->links[] = array('rel' => 'describedby',
 +                              'type' => 'application/rdf+xml',
 +                              'href' => common_local_url('foaf',
-         
++                                                         array('nickname' => $nick)));
++
 +        $salmon_url = common_local_url('salmon',
 +                                       array('id' => $this->user->id));
 +
 +        $xrd->links[] = array('rel' => 'salmon',
 +                              'href' => $salmon_url);
 +
 +        // Get this user's keypair
 +        $magickey = Magicsig::staticGet('user_id', $this->user->id);
 +        if (!$magickey) {
 +            // No keypair yet, let's generate one.
 +            $magickey = new Magicsig();
 +            $magickey->generate($this->user->id);
 +        }
-         
++
 +        $xrd->links[] = array('rel' => Magicsig::PUBLICKEYREL,
 +                              'href' => 'data:application/magic-public-key;'. $magickey->keypair);
++
 +        // TODO - finalize where the redirect should go on the publisher
 +        $url = common_local_url('ostatussub') . '?profile={uri}';
 +        $xrd->links[] = array('rel' => 'http://ostatus.org/schema/1.0/subscribe',
 +                              'template' => $url );
 +
 +        header('Content-type: text/xml');
 +        print $xrd->toXML();
 +    }
 +
 +}
index 0fec8fc43d6104c6debb37b25bac245924fd4dc9,9c344feb77be5e15605b3b3e03878630d7bcceab..4a9aafce1e31d55c93d444b33b5d0d528905c407
@@@ -1328,11 -1285,12 +1285,12 @@@ class Ostatus_profile extends Memcached
  
          // Now, try some discovery
  
 -        $wf = new Webfinger();
 +        $disco = new Discovery();
  
 -        $result = $wf->lookup($addr);
 +        $result = $disco->lookup($addr);
  
          if (!$result) {
+             self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null);
              return null;
          }
  
              case 'salmon':
                  $salmonEndpoint = $link['href'];
                  break;
 -            case Webfinger::UPDATESFROM:
 +            case Discovery::UPDATESFROM:
                  $feedUrl = $link['href'];
                  break;
+             case Webfinger::HCARD:
+                 $hcardUrl = $link['href'];
+                 break;
              default:
                  common_log(LOG_NOTICE, "Don't know what to do with rel = '{$link['rel']}'");
                  break;