se-hub/SE_API/GitHub_API_Connector.py

62 lines
2.1 KiB
Python
Raw Normal View History

__author__ = 'sagi'
import requests
from GithubAPI.GithubAPI import GitHubAPI_Keys
githubKeys = GitHubAPI_Keys()
def get_repo_general_info(repo_url):
url = 'https://api.github.com/repos/' + repo_url + '?client_id='+githubKeys.getId()+'&client_secret=' + githubKeys.getSecret()
req = requests.get(url)
return req.json()
def get_repo_stats(repo_url):
url = 'https://api.github.com/repos/' + repo_url + '/stats/contributors' + '?client_id='+githubKeys.getId()+'&client_secret=' + githubKeys.getSecret()
req = requests.get(url)
return req.json()
def get_repo_issues(repo_url):
url = 'https://api.github.com/repos/' + repo_url + '/issues' + '?client_id=' + githubKeys.getId() + '&client_secret=' + githubKeys.getSecret()
req = requests.get(url)
return req.json()
2015-06-29 13:38:39 +00:00
def get_repo_weekly_commits(repo_url):
url = 'https://api.github.com/repos/' + repo_url + '/stats/participation' + '?client_id=' + githubKeys.getId() + '&client_secret=' + githubKeys.getSecret()
req = requests.get(url)
return req.json()['all']
2015-06-29 13:38:39 +00:00
def make_macro(stats, info):
2015-06-29 13:47:57 +00:00
macro = {'labels': [], 'data': [[0]]}
2015-06-29 13:38:39 +00:00
macro['labels'].append('Commits')
macro['labels'].append('Open Issues')
for stat in stats:
2015-06-29 13:50:16 +00:00
macro['data'][0][0] += stat['total']
2015-06-29 13:38:39 +00:00
macro['data'].append(info['open_issues'])
return macro
2015-06-29 13:50:16 +00:00
# def make_micro(stats, info):
# micro = {'labels': [], 'data': [[]], 'series': []}
# micro['labels'].append('Commits')
# micro['labels'].append('Open Issues')
# for stat in stats:
# micro['data'][0][0] += stat['total']
# micro['data'].append(info['open_issues'])
#
# return micro
2015-06-29 13:38:39 +00:00
def get_github_data(repo_url):
project_info = {'stats': {}}
github_stats = get_repo_stats(repo_url) #first Call
project_info['info'] = get_repo_general_info(repo_url)
2015-06-29 13:38:39 +00:00
issues = get_repo_issues(repo_url)
weekly_commits = get_repo_weekly_commits(repo_url)
github_stats = get_repo_stats(repo_url) #Second Call
project_info['stats']['macro'] = make_macro(github_stats, project_info['info'])
project_info['stats']['weekly_commits'] = weekly_commits
project_info['issues'] = issues
2015-06-29 13:38:39 +00:00
return project_info