1
0
mirror of https://github.com/balkian/eestec.codeit.git synced 2024-09-27 22:11:42 +00:00

Added API endpoints

This commit is contained in:
J.Fernando Sánchez 2013-03-04 14:19:43 +01:00
parent d02904bcf5
commit a7cc48ec51

46
app.py
View File

@ -1,11 +1,12 @@
import os
from flask import Flask from flask import Flask
from flask import Response
import os import os
from urlparse import urlsplit from urlparse import urlsplit
from pymongo import Connection from pymongo import Connection
import library import library
import json import json
from datetime import datetime from datetime import datetime
import ast
url = os.getenv('MONGOLAB_URI', 'mongodb://heroku_app12633543:e4kprjp4r1kj0bbv9f4gih4km@dbh44.mongolab.com:27447/heroku_app12633543') url = os.getenv('MONGOLAB_URI', 'mongodb://heroku_app12633543:e4kprjp4r1kj0bbv9f4gih4km@dbh44.mongolab.com:27447/heroku_app12633543')
parsed = urlsplit(url) parsed = urlsplit(url)
@ -23,6 +24,7 @@ if '@' in url:
db.authenticate(user_pass[0], user_pass[1]) db.authenticate(user_pass[0], user_pass[1])
app = Flask(__name__) app = Flask(__name__)
app.debug = True
@app.route('/') @app.route('/')
def hello(): def hello():
@ -30,33 +32,58 @@ def hello():
@app.route('/stats') @app.route('/stats')
def stats(): def stats():
stats = db.stats.findOne() stats = dict(db.stats.find_one(fields={'_id':False}))
return stats return Response(json.dumps(stats,skipkeys=True),mimetype='application/json')
@app.route('/orgs')
def orgs():
orglist = db.orgs.find(fields={'_id':False})
orgs={}
for org in orglist:
orgs[org[u'login']]=org
print orgs
return Response(json.dumps(orgs,skipkeys=True),mimetype='application/json')
@app.route('/users')
def users():
userlist = db.users.find(fields={'_id':False})
users={}
for user in userlist:
users[user[u'login']]=user
return Response(json.dumps(users,skipkeys=True),mimetype='application/json')
@app.route('/repos')
def repos():
repolist = db.repos.find(fields={'_id':False})
repos={}
for repo in repolist:
repos[repo[u'url']]=repo
return Response(json.dumps(repos,skipkeys=True),mimetype='application/json')
def update_db(): def update_db():
store.load_all('lcs.json') store.load_all(file='lcs.json')
stats=store.get_stats() stats=store.get_stats()
db.logs.insert({'time':str(datetime.now())}) db.logs.insert({'time':str(datetime.now())})
db.stats.insert(stats) db.stats.insert(stats)
orgs = db.orgs orgs = db.orgs
db.orgs.ensure_index('name',30) db.orgs.ensure_index('name',30)
for org in store.orgs: for org in store.orgs:
orgdb=orgs.update({'name':org}, orgdb=orgs.update({'login':org},
{'name': org, 'data':store.orgs[org]}, store.orgs[org],
upsert=True, upsert=True,
w=0) w=0)
users = db.users users = db.users
for user in store.users: for user in store.users:
print "User:%s"%user print "User:%s"%user
print ">%s"%store.users[user] print ">%s"%store.users[user]
userdb=users.update({'name':user}, userdb=users.update({'login':user},
{'name': user, 'data':store.users[user]}, store.users[user],
upsert=True, upsert=True,
w=0) w=0)
repos = db.repos repos = db.repos
for repo in store.repos: for repo in store.repos:
reposdb=repos.update({'url':repo}, reposdb=repos.update({'url':repo},
{'url': repo, 'data': store.repos[repo]}, store.repos[repo],
upsert=True, upsert=True,
w=0) w=0)
@ -65,5 +92,4 @@ if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000. # Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000)) port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port) app.run(host='0.0.0.0', port=port)
update_db()
# Connect to memcache with config from environment variables. # Connect to memcache with config from environment variables.