Created
January 18, 2018 06:53
-
-
Save srishanbhattarai/7d4b91889f3865c8add9dec6be83fcf5 to your computer and use it in GitHub Desktop.
Get GitHub commits for a user using GitHub Events API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import sys | |
import requests | |
from pprint import pprint | |
EVENTS_URL = "https://api.github.com/users/{username}/events" | |
class Github(): | |
def __init__(self, token): | |
self.token = token | |
self.tokenize = identity if token == "" else tokenize(token) | |
def push_events(self, username): | |
events = self.fetch_user_events(username) | |
return list(map( | |
lambda ev: ev['payload']['commits'], | |
list(filter(lambda ev: ev['type'] == "PushEvent", events) | |
))) | |
def fetch_user_events(self, username): | |
if not username: | |
print("Username cannot be blank.") | |
try: | |
r = requests.get(EVENTS_URL.format(username=username)) | |
except Exception as e: | |
print("Could not fetch user events.", e.__repr__()) | |
sys.exit(1) | |
return r.json() | |
def identity(r): | |
return r | |
def tokenize(token): | |
''' Appends ?access_token queryparam to the URL. ''' | |
def inner(url): | |
return url + '?access_token={}'.format(token) | |
return inner | |
def get_token(): | |
try: | |
return os.environ['GITHUB_TOKEN'] | |
except KeyError: | |
return '' | |
def main(): | |
token = get_token() | |
hub = Github(token) | |
username = input('Enter your username: ') | |
values = hub.push_events(username) | |
pprint(values) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment