def wrapper(request, *args, **kwargs): """wrapper""" if not isinstance(request, HttpRequest): return error_response(Error.STRANGE) if request.method != method: return error_response(Error.ERROR_METHOD, append_msg=',需要%s请求' % method) if request.method == "GET": request.DICT = request.GET.dict() else: try: request.DICT = json.loads(request.body.decode()) except json.JSONDecodeError as err: deprint(str(err)) request.DICT = {} if decode: for k in request.DICT.keys(): import binascii try: base64.decodebytes(bytes(request.DICT[k], encoding='utf8')).decode() except binascii.Error as err: deprint(str(err)) return error_response(Error.REQUIRE_BASE64) ret = validate_params(r_params, request.DICT) if ret.error is not Error.OK: return error_response(ret) request.d = Param(ret.body) return func(request, *args, **kwargs)
def wrapper(request, *args, **kwargs): """wrapper""" if not isinstance(request, HttpRequest): return error_response(Error.STRANGE) if request.path != path: return error_response(Error.ERROR_PATH) return func(request, *args, **kwargs)
def auth_callback(request): code = request.d.code deprint('CODE -- ', code) access_token = get_access_token(code) if access_token is None: return error_response(Error.ERROR_CODE) rtn = User.create(access_token) if rtn.error is not Error.OK: return error_response(rtn.error) return HttpResponseRedirect('/random')
def get_user_info(request, qt_user_app_id): """ GET /api/user/@:qt_user_app_id 获取用户信息 """ ret = User.get_user_by_qt_user_app_id(qt_user_app_id) if ret.error is not Error.OK: return error_response(ret) o_user = ret.body if not isinstance(o_user, User): return error_response(Error.STRANGE) o_user.update() return response(body=o_user.to_dict())
def get(request): code = request.d.code ret = Weixin.code2session(code) if ret.error is not Error.OK: return error_response(ret) openid = ret.body['openid'] session_key = ret.body['session_key'] ret = User.create(openid) if ret.error is not Error.OK: return error_response(ret) o_user = ret.body return response(get_token_info(o_user, session_key))
def put(request): msg_id = request.d.msg_id o_user = request.user ret = Message.get_msg_by_id(msg_id) if ret.error is not Error.OK: return error_response(ret) o_msg = ret.body if not isinstance(o_msg, Message): return error_response(Error.STRANGE) if o_msg.to_user != o_user: return error_response(Error.MESSAGE_NOT_BELONG) o_msg.read_msg() return response()
def match_phrase(request): phrase = request.GET['phrase'] try: phrase_len = int(request.GET['phrase_len']) except: phrase_len = 0 try: min_max_match = int(request.GET['min_max_match']) except: min_max_match = 0 phonetics = phrase.split(' ') o_phrase = list() for phonetic in phonetics: if phonetic[-1] in '01234': t = phonetic[-1] p = phonetic[:-1] else: t = '' p = phonetic o_phrase.append(dict(t=t, p=p)) o_phrase.reverse() rtn = match(o_phrase, phrase_len=phrase_len, min_max_match=min_max_match) if rtn.error is not Error.OK: return error_response(rtn.error, append_msg=rtn.body) return response(body=rtn.body)
def match_phrase(request): phrase = request.d.phrase phrase_len = request.d.phrase_len min_max_match = request.d.min_max_match cluster_type = request.d.cluster_type cluster = request.GET['cluster'].upper() phonetics = phrase.split(' ') o_phrase = list() for phonetic in phonetics: if phonetic[-1] in '01234': t = phonetic[-1] p = phonetic[:-1] else: t = '' p = phonetic o_phrase.append(dict(t=t, p=p)) o_phrase.reverse() ret = match(o_phrase=o_phrase, phrase_len=phrase_len, min_max_match=min_max_match, cluster_type=cluster_type, cluster=cluster) if ret.error is not Error.OK: return error_response(ret) return response(body=ret.body)
def wrapper(request, *args, **kwargs): """wrapper""" if request.body: try: request.DICT = json.loads(request.body.decode()) except json.JSONDecodeError as err: deprint(str(err)) return func(request, *args, **kwargs) return error_response(Error.REQUIRE_JSON)
def post(request): """ POST /api/image/ 七牛上传用户头像回调函数 """ deprint('ImageView-post') ret = QN_PUBLIC_MANAGER.qiniu_auth_callback(request) if ret.error is not Error.OK: return error_response(ret) key = request.d.key ret = Image.create(key) if ret.error is not Error.OK: return error_response(ret) o_image = ret.body if not isinstance(o_image, Image): return error_response(Error.STRANGE) return response(body=o_image.to_dict())
def oauth_qtb_callback(request): code = request.d.code ret = get_qtb_user_token(code) if ret.error is not Error.OK: return error_response(ret) body = ret.body token = body['token'] qt_user_app_id = body['user_app_id'] ret = User.create(qt_user_app_id, token) if ret.error is not Error.OK: return error_response(ret) o_user = ret.body if not isinstance(o_user, User): return error_response(Error.STRANGE) ret = o_user.update() if ret.error is not Error.OK: return error_response(ret) return response(body=get_token_info(o_user))
def put(request): encrypted_data = request.d.encrypted_data iv = request.d.iv session_key = request.session_key ret = Weixin.decrypt(encrypted_data, iv, session_key) if ret.error is not Error.OK: return error_response(ret) data = ret.body o_user = request.user if not isinstance(o_user, User): return error_response(Error.STRANGE) avatar = data['avatarUrl'] nickname = data['nickName'] ret = o_user.update(avatar, nickname) if ret.error is not Error.OK: return error_response(ret) return response(o_user.to_dict())
def rt_qt_user_app_id(request, qt_user_app_id): """ /api/user/@:username GET: get_user_info, 获取用户信息 """ options = { Method.GET: "获取用户信息", Method.DELETE: "删除用户", } if request.method == Method.OPTIONS: return response(body=options, allow=True) if request.method == Method.GET: return get_user_info(request, qt_user_app_id) return error_response(Error.ERROR_METHOD)
def change_ss(request): """ PUT /api/user/ss 修改VPN信息 """ action = request.d.action o_user = request.user if not isinstance(o_user, User): return error_response(Error.STRANGE) print(action) if action == 'on': ret = o_user.do_ss_on() elif action == 'off': ret = o_user.do_ss_off() else: ret = o_user.do_ss_reset() if ret.error is not Error.OK: return error_response(ret) return response(body=o_user.to_dict())
def get(request): """ GET /api/message/ 获取已读/所有消息 """ only_unread = request.d.only_unread start = request.d.start count = request.d.count o_user = request.user if not isinstance(o_user, User): return error_response(Error.STRANGE) return response( Message.get_list_by_user(o_user.str_id, only_unread, start, count))
def rt_qtb_callback(request): """ /api/oauth/qtb/callback GET: 齐天簿身份认证回调函数 """ options = { Method.GET: "齐天簿身份认证回调函数" } if request.method == Method.OPTIONS: return response(body=options, allow=True) if request.method == Method.GET: return oauth_qtb_callback(request) return error_response(Error.ERROR_METHOD)
def rt_ss(request): """ /api/user/ss PUT: change_ss, 修改VPN信息 """ options = { # Method.GET: "获取我的信息", # Method.POST: "创建用户", Method.PUT: "修改VPN信息", } if request.method == Method.OPTIONS: return response(body=options, allow=True) if request.method == Method.PUT: return change_ss(request) return error_response(Error.ERROR_METHOD)
def random(request, size): quick = request.d.quick if size not in ['thumb', 'small', 'regular', 'full', 'raw']: size = 'regular' if quick: return HttpResponseRedirect(Photo.get_random_photo()[size]) users = User.objects.all() for user in users: if not user.expired: rtn = get_random_photo(user.access_token) if rtn is not None: clear_old_photo() Photo.create(rtn) return HttpResponseRedirect(rtn['urls'][size]) else: return HttpResponseRedirect(Photo.get_random_photo()[size]) return error_response(Error.NO_LEGAL_USER)
def rt_user(request): """ /api/user/ GET: get_my_info, 获取我的信息 POST: create_user, 创建用户 # PUT: modify_user, 修改用户信息 """ options = { Method.GET: "获取我的信息", # Method.POST: "创建用户", # Method.PUT: "修改用户信息", } if request.method == Method.OPTIONS: return response(body=options, allow=True) if request.method == Method.GET: return get_my_info(request) return error_response(Error.ERROR_METHOD)
def post(request): phrase = request.d.phrase tags = request.d.tags tags = str(tags) start = Config.get_config_by_key('start').body if tags == 'BACK': start.value = str(int(start.value) - 1) elif tags == 'DELETE': start.value = str(int(start.value) + 1) else: ret = Phrase.create(phrase, tags) if ret.error is not Error.OK: return error_response(ret) start.value = str(int(start.value) + 1) start.save() return response()
def wrapper(request, *args, **kwargs): """wrapper, using verify_func to verify""" ret = verify_func(request) if ret.error is not Error.OK: return error_response(ret) return func(request, *args, **kwargs)