Created
January 2, 2018 15:09
-
-
Save alextercete/6b9dea4677e585661494c2c4df305dc1 to your computer and use it in GitHub Desktop.
Try to find a Makers graduate GitHub CV from their name
This file contains hidden or 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 argparse | |
import requests | |
def parse_command_line_args(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument('-t', '--token', required=True) | |
parser.add_argument('-n', '--name', required=True) | |
args = parser.parse_args() | |
return args.token, args.name | |
def get_forks(personal_access_token, repo, page = 1): | |
url = 'https://api.github.com/repos/{}/forks?page={}'.format(repo, page) | |
forks_response = requests.get(url, auth=(personal_access_token, '')) | |
forks_json = forks_response.json() | |
if forks_json: | |
for json in forks_json: | |
yield json | |
for json in get_forks(personal_access_token, repo, page + 1): | |
yield json | |
def get_makers_by_name(personal_access_token, name): | |
for cv_fork_json in get_forks(personal_access_token, 'makersacademy/cv'): | |
maker_response = requests.get(cv_fork_json['owner']['url'], auth=(personal_access_token, '')) | |
maker_json = maker_response.json() | |
maker = Maker(maker_json['name'], cv_fork_json['html_url']) | |
if maker.answers_to(name): | |
yield maker | |
class Maker: | |
def __init__(self, name, github_cv_url): | |
self.name = name | |
self.github_cv_url = github_cv_url | |
def answers_to(self, name): | |
return self.name and name.lower() in self.name.lower() | |
def __str__(self): | |
return '{} <{}>'.format(self.name, self.github_cv_url) | |
def main(): | |
personal_access_token, name = parse_command_line_args() | |
for maker in get_makers_by_name(personal_access_token, name): | |
print(maker) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment