gnupg = GnuPG() keys = gnupg.list_keys() results = [] vcards = {} for key_id, key in keys.iteritems(): vcls = [VCardLine(name='KEY', value=self.VCL_KEY_FMT % key_id)] card = None emails = [] for uid in key.get('uids', []): if uid.get('email'): vcls.append(VCardLine(name='email', value=uid['email'])) card = card or vcards.get(uid['email']) emails.append(uid['email']) if uid.get('name'): name = uid['name'] vcls.append(VCardLine(name='fn', value=name)) if card and emails: card.add(*vcls) elif emails: # This is us taking care to only create one card for each # set of e-mail addresses. card = MailpileVCard(*vcls) for email in emails: vcards[email] = card results.append(card) return results _plugins.register_vcard_importers(GnuPGImporter)
if mailpile.util.QUITTING: return [] vcard = MailpileVCard(VCardLine(name=self.VCARD_TS, value=int(time.time()))) email, img, gcard, gjson = self.check_libravatar(contact, email) if gcard: # FIXME: Is this boring? # vcard.load(data=gcard) pass if gjson: # FIXME: This is less boring! pass if img: vcard.add(VCardLine( name='photo', value='data:image/jpeg;base64,%s' % _b64(img), mediatype='image/jpeg' )) if gcard or gjson or img: vcard.add(VCardLine(name='email', value=email)) results.append(vcard) return results _plugins.register_vcard_importers(LibravatarImporter)
HTTP_QUERY_VARS = { 'q': 'selectors', 'no_public': 'omit public keys', 'no_secret': 'omit secret keys' } COMMAND_SECURITY = security.CC_CHANGE_CONTACTS def command(self): session, config = self.session, self.session.config selectors = [a for a in self.args if not a.startswith('-')] selectors.extend(self.data.get('q', [])) public = not (int(self.data.get('no_public', [0])[0]) or '-no_public' in self.args) secret = not (int(self.data.get('no_secret', [0])[0]) or '-no_secret' in self.args) imported = 0 for cfg in config.prefs.vcard.importers.gpg: gimp = GnuPGImporter(session, cfg) imported += gimp.import_vcards(session, config.vcards, selectors=selectors) return self._success(_('Imported %d vCards from GPG keychain' ) % imported, {'vcards': imported}) _plugins.register_commands(PGPKeysAsVCards, PGPKeysImportAsVCards) _plugins.register_vcard_importers(GnuPGImporter)
self.config.rating)) if not json: json = _get('%s/%s.json' % (self.config.url, digest)) email = vcl.value except IOError: pass if json: pass # FIXME: parse the JSON if (self.config.default != '404') and not img: try: img = _get(('%s/avatar/%s.jpg?s=%s&d=%s') % (self.config.url, md5_hex(email.lower()), self.config.size, self.config.default)) except IOError: pass if img: vcls.append( VCardLine(name='photo', value='data:image/jpeg;base64,%s' % _b64(img), mediatype='image/jpeg')) vcls.append(VCardLine(name='email', value=email)) results.append(SimpleVCard(*vcls)) return results _plugins.register_vcard_importers(GravatarImporter)
self.inputMork(data) def get_vcards(self): self.load() people = self.morkToHash() # print people results = [] vcards = {} for person in people: card = MailpileVCard() if "name" in person: card.add(VCardLine(name="FN", value=person["name"])) if "email" in person: card.add(VCardLine(name="EMAIL", value=person["email"])) results.append(card) return results if __name__ == "__main__": import json filename = sys.argv[1] m = MorkImporter(filename=filename) m.load() print m.get_contacts(data) else: _plugins.register_vcard_importers(MorkImporter)
class CardDAVImporter(VCardImporter): REQUIRED_PARAMETERS = ["host", "url"] OPTIONAL_PARAMETERS = ["port", "username", "password", "protocol"] FORMAT_NAME = "CardDAV Server" FORMAT_DESCRIPTION = "CardDAV HTTP contact server." SHORT_NAME = "carddav" CONFIG_RULES = { 'host': ('Host name', 'hostname', None), 'port': ('Port number', int, None), 'url': ('CardDAV URL', 'url', None), 'protcol': ('Connection protocol', 'string', 'https'), 'password': ('CardDAV URL', 'url', None), 'username': ('CardDAV URL', 'url', None) } def get_contacts(self): self.carddav = CardDAV(host, url, port, username, password, protocol) results = [] cards = self.carddav.list_vcards() for card in cards: results.append(self.carddav.get_vcard(card)) return results def filter_contacts(self, terms): pass _plugins.register_vcard_importers(CardDAVImporter)
self.inputMork(data) def get_vcards(self): self.load() people = self.morkToHash() # print people results = [] vcards = {} for person in people: card = MailpileVCard() if "name" in person: card.add(VCardLine(name="FN", value=person["name"])) if "email" in person: card.add(VCardLine(name="EMAIL", value=person["email"])) results.append(card) return results if __name__ == "__main__": import json filename = sys.argv[1] m = MorkImporter(filename=filename) m.load() print m.get_contacts(data) else: _plugins.register_vcard_importers(MorkImporter)
class CardDAVImporter(VCardImporter): REQUIRED_PARAMETERS = ["host", "url"] OPTIONAL_PARAMETERS = ["port", "username", "password", "protocol"] FORMAT_NAME = "CardDAV Server" FORMAT_DESCRIPTION = "CardDAV HTTP contact server." SHORT_NAME = "carddav" CONFIG_RULES = { 'host': ('Host name', 'hostname', None), 'port': ('Port number', int, None), 'url': ('CardDAV URL', 'url', None), 'protcol': ('Connection protocol', 'string', 'https'), 'password': ('CardDAV URL', 'url', None), 'username': ('CardDAV URL', 'url', None) } def get_contacts(self): self.carddav = CardDAV(host, url, port, username, password, protocol) results = [] cards = self.carddav.list_vcards() for card in cards: results.append(self.carddav.get_vcard(card)) return results def filter_contacts(self, terms): pass _plugins.register_vcard_importers(CardDAVImporter)