75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
# coding=utf-8
|
||
from crawler import Crawler
|
||
import json
|
||
from hashlib import md5
|
||
from urllib.parse import urlencode, unquote_plus
|
||
from db import addRank, getRank
|
||
# 主函数
|
||
|
||
# 处理登录操作 data:{cid,pwd,sign}
|
||
# 这里三个接口公用一个session所以合并成一个接口,一个session走到底,一次性返回所有数据
|
||
def manageLogin(request):
|
||
# json化,应该能当dict用
|
||
data = json.loads(request.form['data'])
|
||
# MD5校验
|
||
checked = checkData(data)
|
||
if checked:
|
||
# 创建会话
|
||
phone = ''
|
||
if data.get('phone'):
|
||
phone = data['phone']
|
||
c = Crawler(data['cid'], data['pwd'], phone)
|
||
res = c.connection()
|
||
if res[-1] == 200:
|
||
c.getGrade()
|
||
c.getSchedule()
|
||
return c.getData()
|
||
else:
|
||
return res
|
||
else:
|
||
return '数据校验失败', 400
|
||
|
||
# 处理更新课表游戏排名信息
|
||
def manageScheduleUpload(request):
|
||
# json化,应该能当dict用
|
||
data_cache = json.loads(request.form['data'])
|
||
# MD5校验
|
||
checked = checkData(data_cache)
|
||
data_cache.pop('sign')
|
||
if checked:
|
||
add_res = addRank( data_cache['nick'], data_cache['count'], data_cache['time'])
|
||
return add_res
|
||
else:
|
||
return {'errcode': 400, 'errmsg': '数据校验失败'}
|
||
|
||
# 处理获取课表游戏排名信息
|
||
def manageScheduleGet(request):
|
||
# json化,应该能当dict用
|
||
data_cache = json.loads(request.form['data'])
|
||
# MD5校验
|
||
checked = checkData(data_cache)
|
||
data_cache.pop('sign')
|
||
if checked:
|
||
# 获取排名表
|
||
get_res = getRank()
|
||
return get_res
|
||
else:
|
||
return {'errcode': 400, 'errmsg': '数据校验失败'}
|
||
|
||
|
||
# 工具函数
|
||
|
||
# MD5 校验
|
||
def checkData(data):
|
||
d = data.copy()
|
||
try:
|
||
d.pop('sign')
|
||
except KeyError:
|
||
pass
|
||
d = str(d)
|
||
d = d.replace(' ', '')
|
||
md = md5()
|
||
md.update(d.encode('utf-8'))
|
||
r = md.hexdigest().upper()
|
||
return r == data['sign']
|