diff --git a/gh_gsql_req.py b/gh_gsql_req.py new file mode 100644 index 0000000..1ab84f0 --- /dev/null +++ b/gh_gsql_req.py @@ -0,0 +1,77 @@ +import requests +import datetime as dt +import json +import os + +key = os.environ.get('KKEXKEY') + +def main(vcs): + vcs_list = vcs[0].split('/') + repo_name = '"' + vcs_list[-1] + '"' + repo_owner = '"' + vcs_list[-2] + '"' + returned_content = get_discussion_gql(repo_owner, repo_name) + return returned_content + +def get_discussion_gql(repo_owner, repo_name): + url = "https://api.github.com/graphql" + data_string = (""" + query { + repository(owner: """ + repo_owner + """, name: """ + repo_name + """) { + discussions(first: 3) { + # type: DiscussionConnection + totalCount # Int! + + edges { + # type: DiscussionEdge + cursor + node { + # type: Discussion + id + title # String! + bodyText # String! + createdViaEmail # Boolean! + createdAt # DateTime! + answer { + #type: DiscussionComment + bodyText # String! + } + comments(first: 10){ + # type: DiscussionCommentConnection + totalCount # Int! + edges { + # type: DiscussionCommentEdge + node { + # type: DiscussionComment + id + bodyText # String! + } + + } + } + } + } + } + } + } + """) + data = {"query" : data_string} + data_json = json.dumps(data) + headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8', 'Authorization': 'bearer ' + key} + r = requests.post(url=url, data=data_json, headers=headers) + print(r.content) + return r + + +if __name__ == "__main__": + get_discussion_gql() + + +# stashed info about page cursors +''' pageInfo { + # type: PageInfo (from the public schema) + startCursor + endCursor + hasNextPage + hasPreviousPage + } +''' \ No newline at end of file diff --git a/github_api_req.py b/github_api_req.py index 536a163..0591f23 100644 --- a/github_api_req.py +++ b/github_api_req.py @@ -35,36 +35,3 @@ def parse_milestones(milestones, earliest_date): return count_of_milestones -def get_discussion_gql(): - #testing - url = "https://api.github.com/graphql" - x = {"query" : "query { repository(owner: 'beekeeper-studio', name: 'beekeeper-studio') { discussions(first: 10) {totalCount}}"} - data = json.dumps(x) - headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8', 'Authorization': 'bearer ' + key} - r = requests.post(url=url, data=data, headers=headers) - print(r.content) - print(r.json()) - -if __name__ == "__main__": - get_discussion_gql() -''' -#using the github API to identify who is a collaborator on the project and who is just a contributor -def split_actors(repo_uri, actors_list): - call_sheet = {'collaborator' : [], 'contributor' : []} - repo_uri_list = repo_uri.split('/') - api_url = "https://api.github.com/repos/" + repo_uri_list[-2] + "/" + repo_uri_list[-1] + "/collaborators/" - for actor in actors_list[:2]: - actor_email = actor.split('<')[1][:-1] - print(actor_email) - actor_user = get_gh_un(actor_email) - response_dict = response.json() - print(response_dict) - -#this function grabs the Github username from an associated email -def get_gh_un(email): - api_url = 'https://api.github.com/search/users?q=' + email - response = requests.get(api_url) - response_dict = response.json() - gh_username = response_dict['items'][0]['login'] - return gh_username -''' diff --git a/main.py b/main.py index e9d2d83..81b7547 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,11 @@ import perceval import os import yaml +import datetime as dt + import perceval_tasks as pt import github_api_req as gha -import datetime as dt +import gh_gsql_req as ghs def main(): # we should discuss whether we're using the 93 day window that seems to be widely used or if we want a longer window @@ -32,6 +34,10 @@ def main(): #new mmt formality score new_formality = compute_formality_score(new_mmt, gha_obj['milestone_count'], perceval_obj['age_of_project']) print(new_formality) + # testing out beneath: + # TODO: incorporate early cutoff to this, probably in a cleaning function + ghs_obj = ghs.main(vcs_path) + print(ghs_obj) except yaml.YAMLOError as err: print(err)