%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/utils/ |
Current File : //usr/lib/python2.7/site-packages/salt/utils/github.py |
# -*- coding: utf-8 -*- ''' Connection library for GitHub ''' # Import Python libs from __future__ import absolute_import, unicode_literals, print_function import logging # Import Salt libs import salt.utils.json import salt.utils.http # Import 3rd-party libs from salt.ext import six log = logging.getLogger(__name__) def get_user_pubkeys(users): ''' Retrieve a set of public keys from GitHub for the specified list of users. Expects input in list format. Optionally, a value in the list may be a dict whose value is a list of key IDs to be returned. If this is not done, then all keys will be returned. Some example data structures that coupld be passed in would look like: .. code_block:: yaml ['user1', 'user2', 'user3'] [ 'user1': [ '12345', '67890', ], 'user2', 'user3', ] ''' if not isinstance(users, list): return {'Error': 'A list of users is expected'} ret = {} for user in users: key_ids = [] if isinstance(user, dict): tmp_user = next(six.iterkeys(user)) key_ids = user[tmp_user] user = tmp_user url = 'https://api.github.com/users/{0}/keys'.format(user) result = salt.utils.http.query( url, 'GET', decode=False, text=True, ) keys = salt.utils.json.loads(result['text']) ret[user] = {} for key in keys: if len(key_ids) > 0: if six.text_type(key['id']) in key_ids: ret[user][key['id']] = key['key'] else: ret[user][key['id']] = key['key'] return ret