From 69b324229c0728319d02bd0747078f97fcc05c9e Mon Sep 17 00:00:00 2001 From: Vamshi Balanaga Date: Fri, 23 Dec 2016 21:41:04 -0500 Subject: [PATCH] Create GitHub authentication module. --- contrib_bots/lib/github.py | 51 ++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/contrib_bots/lib/github.py b/contrib_bots/lib/github.py index 548156b..f9d5e00 100644 --- a/contrib_bots/lib/github.py +++ b/contrib_bots/lib/github.py @@ -1,25 +1,56 @@ +#!/usr/bin/env python + # The purpose of this file is to handle all requests # to the Github API, which will make sure that all # requests are to the same account, and that all requests # authenticated correctly and securely # The sole purpose of this is to authenticate, and it will # return the requests session that is properly authenticated +import logging import os import requests import six.moves.configparser -CONFIG_FILE = '~/.github-issue-bot/github-issue-bot.conf' + +# This file contains the oauth token for a github user, their username, and optionally, a repository +# name and owner. All in the format: +# github_repo +# github_repo_owner +# github_username +# github_token +CONFIG_FILE = '~/.github-auth.conf' + +global config +config = six.moves.configparser.ConfigParser() # Sets up the configParser to read the .conf file +config.read([os.path.expanduser(CONFIG_FILE)]) # Reads the config file + def auth(): - # Sets up the configParser to read the .conf file - config = six.moves.configparser.ConfigParser() - # Reads the config file - config.read([os.path.expanduser(CONFIG_FILE)]) - # Gets the properties from the config file - oauth_token = config.get('github', 'github_token') - username = config.get('github', 'github_username') # Creates and authorises a requests session session = requests.session() - session.auth = (username, oauth_token) - # Returns the session + session.auth = (get_username(), get_oauth_token()) + return session + + +def get_oauth_token(): + _get_data('token') + + +def get_username(): + _get_data('username') + + +def get_repo(): + _get_data('repo') + + +def get_repo_owner(): + _get_data('repo_owner') + + +def _get_data(key): + try: + return config.get('github', 'github_%s' % (key)) + except Exception: + logging.exception('GitHub %s not supplied in ~/.github-auth.conf.' % (key))