def _build(cls, u_from, c_to, **kwargs): """ Generate an XML message to send to a remote node. """ diasp = DiasporaContact.get_for_contact(u_from.contact) fn = kwargs.pop('fn', cls.generate) xml = fn(u_from, c_to, **kwargs) m = DiasporaMessageBuilder(xml, diasp.username, u_from._unlocked_key) return m
def _build(cls, u_from, c_to, **kwargs): """ Generate an XML message to send to a remote node. """ diasp = DiasporaContact.get_for_contact(u_from.contact) fn = kwargs.pop('fn', cls.generate) xml = fn(u_from, c_to, **kwargs) m = DiasporaMessageBuilder(xml, diasp.username, u_from._unlocked_key) return m
def webfinger(contact_addr): """ Returns the Webfinger profile for a contact called <contact> (in "user@host" form). """ contact_id, _ = contact_addr.split('@') c = Contact.get(int(contact_id)) if not c or not c.user or not c.user.activated: abort(404, 'No such contact') diasp = DiasporaContact.get_for_contact(c) ns = 'http://docs.oasis-open.org/ns/xri/xrd-1.0' doc = etree.Element("{%s}XRD" % ns, nsmap={None: ns}) etree.SubElement(doc, "Subject").text = "acct:%s" % diasp.username etree.SubElement(doc, "Alias").text = \ '"{0}"'.format(url_for('index', _external=True)) etree.SubElement( doc, "Link", rel='http://microformats.org/profile/hcard', type='text/html', href=url_for('.hcard', guid=diasp.guid, _external=True) ) etree.SubElement( doc, "Link", rel='http://joindiaspora.com/seed_location', type='text/html', href=url_for('index', _external=True) ) etree.SubElement( doc, "Link", rel='http://joindiaspora.com/guid', type='text/html', href=diasp.guid ) etree.SubElement( doc, "Link", rel='http://webfinger.net/rel/profile-page', type='text/html', href=url_for('contacts.profile', contact_id=c.id, _external=True) ) etree.SubElement( doc, "Link", rel='http://schemas.google.com/g/2010#updates-from', type='application/atom+xml', href=url_for('contacts.feed', contact_id=c.id, _external=True) ) etree.SubElement( doc, "Link", rel='diaspora-public-key', type='RSA', href=b64encode(c.public_key.encode('ascii')) ) return send_xml(doc)
def webfinger(contact_addr): """ Returns the Webfinger profile for a contact called <contact> (in "user@host" form). """ contact_id, _ = contact_addr.split('@') c = Contact.get(int(contact_id)) if not c or not c.user or not c.user.activated: abort(404, 'No such contact') diasp = DiasporaContact.get_for_contact(c) ns = 'http://docs.oasis-open.org/ns/xri/xrd-1.0' doc = etree.Element("{%s}XRD" % ns, nsmap={None: ns}) etree.SubElement(doc, "Subject").text = "acct:%s" % diasp.username etree.SubElement(doc, "Alias").text = \ '"{0}"'.format(url_for('index', _external=True)) etree.SubElement( doc, "Link", rel='http://microformats.org/profile/hcard', type='text/html', href=url_for('.hcard', guid=diasp.guid, _external=True) ) etree.SubElement( doc, "Link", rel='http://joindiaspora.com/seed_location', type='text/html', href=url_for('index', _external=True) ) etree.SubElement( doc, "Link", rel='http://joindiaspora.com/guid', type='text/html', href=diasp.guid ) etree.SubElement( doc, "Link", rel='http://webfinger.net/rel/profile-page', type='text/html', href=url_for('contacts.profile', contact_id=c.id, _external=True) ) etree.SubElement( doc, "Link", rel='http://schemas.google.com/g/2010#updates-from', type='application/atom+xml', href=url_for('contacts.feed', contact_id=c.id, _external=True) ) etree.SubElement( doc, "Link", rel='diaspora-public-key', type='RSA', href=b64encode(c.public_key.encode('ascii')) ) return send_xml(doc)