Skip to content

Instantly share code, notes, and snippets.

@srishanbhattarai
Created January 18, 2018 06:53
Show Gist options
  • Save srishanbhattarai/7d4b91889f3865c8add9dec6be83fcf5 to your computer and use it in GitHub Desktop.
Save srishanbhattarai/7d4b91889f3865c8add9dec6be83fcf5 to your computer and use it in GitHub Desktop.
Get GitHub commits for a user using GitHub Events API
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