-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
49 lines (36 loc) · 1.28 KB
/
app.py
File metadata and controls
49 lines (36 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from flask import Flask, request, jsonify
from model import new_soup, new_url
from views import *
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/', methods=['GET'])
def index():
return {'status': 'server is running'}
@app.route('/api', methods=['POST'])
def api():
try:
data = request.get_json()
username = data['username']
if username == "" or username == None:
return jsonify({'error': 'username is empty'})
except KeyError as e:
return jsonify({'error': f'{e} is missing'})
repo_url = new_url(username, "repos")
repo_soup = new_soup(repo_url)
default_url = new_url(username, "default")
default_soup = new_soup(default_url)
languages = get_top_languages(repo_soup)
try:
contributions = get_contributions_count(default_soup)
except AttributeError:
return jsonify({'error': 'user does not exist'}), 400
years_active = get_years_active(default_soup, username)
response = {
'languages': analyze_languages(languages),
'contributions': analyze_contributions(contributions),
'years_active': analyze_years_active(years_active)
}
return jsonify(response)
if __name__ == '__main__':
app.run(host='0.0.0.0', port='5000', debug=True)