almost done w gsql implementation

This commit is contained in:
mjgaughan 2023-10-26 10:57:56 -05:00
parent 7d0a0866c7
commit acdf656552
3 changed files with 84 additions and 34 deletions

77
gh_gsql_req.py Normal file
View File

@ -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
}
'''

View File

@ -35,36 +35,3 @@ def parse_milestones(milestones, earliest_date):
return count_of_milestones 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
'''

View File

@ -1,9 +1,11 @@
import perceval import perceval
import os import os
import yaml import yaml
import datetime as dt
import perceval_tasks as pt import perceval_tasks as pt
import github_api_req as gha import github_api_req as gha
import datetime as dt import gh_gsql_req as ghs
def main(): 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 # 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 mmt formality score
new_formality = compute_formality_score(new_mmt, gha_obj['milestone_count'], perceval_obj['age_of_project']) new_formality = compute_formality_score(new_mmt, gha_obj['milestone_count'], perceval_obj['age_of_project'])
print(new_formality) 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: except yaml.YAMLOError as err:
print(err) print(err)