示例#1
0
 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)
示例#2
0
 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)
示例#3
0
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')
示例#4
0
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())
示例#5
0
    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))
示例#6
0
    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()
示例#7
0
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)
示例#8
0
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)
示例#9
0
 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)
示例#10
0
    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())
示例#11
0
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))
示例#12
0
    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())
示例#13
0
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)
示例#14
0
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())
示例#15
0
    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))
示例#16
0
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)
示例#17
0
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)
示例#18
0
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)
示例#19
0
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)
示例#20
0
    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()
示例#21
0
 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)