Пример #1
0
 function handle()
 {
     parent::handle();
     $domain = common_config('site', 'server');
     $url = common_local_url('userxrd');
     $url .= '?uri={uri}';
     $xrd = new XRD();
     $xrd = new XRD();
     $xrd->host = $domain;
     $xrd->links[] = array('rel' => Discovery::LRDD_REL, 'template' => $url, 'title' => array('Resource Descriptor'));
     print $xrd->toXML();
 }
Пример #2
0
 function handle()
 {
     parent::handle();
     $domain = common_config('site', 'server');
     $xrd = new XRD();
     $xrd->host = $domain;
     if (Event::handle('StartHostMetaLinks', array(&$xrd->links))) {
         $url = common_local_url('userxrd');
         $url .= '?uri={uri}';
         $xrd->links[] = array('rel' => Discovery::LRDD_REL, 'template' => $url, 'title' => array('Resource Descriptor'));
         Event::handle('EndHostMetaLinks', array(&$xrd->links));
     }
     header('Content-type: application/xrd+xml');
     print $xrd->toXML();
 }
Пример #3
0
 public static function parse($xml)
 {
     $xrd = new XRD();
     $dom = new DOMDocument();
     // Don't spew XML warnings to output
     $old = error_reporting();
     error_reporting($old & ~E_WARNING);
     $ok = $dom->loadXML($xml);
     error_reporting($old);
     if (!$ok) {
         // TRANS: Exception.
         throw new Exception(_m('Invalid XML.'));
     }
     $xrd_element = $dom->getElementsByTagName('XRD')->item(0);
     if (!$xrd_element) {
         // TRANS: Exception.
         throw new Exception(_m('Invalid XML, missing XRD root.'));
     }
     // Check for host-meta host
     $host = $xrd_element->getElementsByTagName('Host')->item(0);
     if ($host) {
         $xrd->host = $host->nodeValue;
     }
     // Loop through other elements
     foreach ($xrd_element->childNodes as $node) {
         if (!$node instanceof DOMElement) {
             continue;
         }
         switch ($node->tagName) {
             case 'Expires':
                 $xrd->expires = $node->nodeValue;
                 break;
             case 'Subject':
                 $xrd->subject = $node->nodeValue;
                 break;
             case 'Alias':
                 $xrd->alias[] = $node->nodeValue;
                 break;
             case 'Link':
                 $xrd->links[] = $xrd->parseLink($node);
                 break;
             case 'Type':
                 $xrd->types[] = $xrd->parseType($node);
                 break;
         }
     }
     return $xrd;
 }
Пример #4
0
 function handle()
 {
     parent::handle();
     $domain = common_config('site', 'server');
     $xrd = new XRD();
     $xrd->host = $domain;
     if (Event::handle('StartHostMetaLinks', array(&$xrd->links))) {
         $url = common_local_url('userxrd');
         $url .= '?uri={uri}';
         $xrd->links[] = array('rel' => Discovery::LRDD_REL, 'template' => $url, 'title' => array('Resource Descriptor'));
         Event::handle('EndHostMetaLinks', array(&$xrd->links));
     }
     // Output Cross-Origin Resource Sharing (CORS) header
     if (common_config('discovery', 'cors')) {
         header('Access-Control-Allow-Origin: *');
     }
     header('Content-type: application/xrd+xml');
     print $xrd->toXML();
 }
Пример #5
0
 public static function fetchXrd($url)
 {
     try {
         $client = new HTTPClient();
         $response = $client->get($url);
     } catch (HTTP_Request2_Exception $e) {
         return false;
     }
     if ($response->getStatus() != 200) {
         return false;
     }
     return XRD::parse($response->getBody());
 }