コード例 #1
0
ファイル: views.py プロジェクト: takaaki7/chatty
def login_redirect():
    uid = None
    token_ = None
    try:
        token_ = request.query.get('state')
        uidenc = request.query.get('uid')
        uid = uidcrypt.decryptuid(uidenc)
        tok_valid = tokener.check(uid, token_, tokener.NS_LOGIN)
        if not tok_valid:
            abort(400, "Something went wrong. Token might be expired")
        bot.logged_in_with_fb(uid, request.query.get("code"),
                              fb._LOGIN_REDIRECT_URL.format(uid=uidenc))
    except HTTPError as e:
        logger.exception(
            "failed to login for uid:{} token:{}".format(uid, token_))
        bot.do_action(uid)
        raise e
    except requests.exceptions.HTTPError as e:
        logger.exception("Failed {}".format(e.response.text))
    except Exception as e:
        bot.do_action(uid)
        logger.exception(
            "Failed to login with bad access.state:{} uid: {} token:{}".format(
                request.query.get('state'), uid, token_))
        abort(400, "Something went wrong. Please try it again. If the problem persists, please contact us at https://m.me/ChattySupport")
        return
    return dict()
コード例 #2
0
def log(uidenc):
    uid = uidcrypt.decryptuid(uidenc)
    json = request.json
    json['uid'] = uid
    try:
        json['locale'] = User.get(uid).locale
    except Exception:
        logger.exception("faild to get ui lang ")
    logger.info("kpi_action:{}".format(json))
コード例 #3
0
ファイル: views.py プロジェクト: takaaki7/chatty
def settings(uidenc):
    uid = uidcrypt.decryptuid(uidenc)
    settings = bot.get_settings(uid)
    languages = [Lang(code=k, name=v, checked=(k in settings['languages']))
                 for k, v in
                 filter(lambda (k1, v1): k1 in config.ENABLED_LANGUAGES,
                        bot.get_language())]
    languages.sort(key=lambda x: x.name)
    userc = UserContext.get(uid)
    return dict(settings=settings,
                languages=languages,
                buy_points_url=fb.PAYMENT_LOGIN_URL.format(
                    uid=uidenc,
                    state=tokener.gen_token(uid, tokener.NS_PAYMENT)),
                userc=userc)
コード例 #4
0
def post_settings(uidenc):
    uid = uidcrypt.decryptuid(uidenc)
    logger.debug("%s", request.forms.items())
    languages = request.forms.getall('languages')
    genders = request.forms.getall('genders')
    l = len(genders)
    assert l <= 2
    if l == 0 or l == 2:
        g = ["male", "female"]
    else:
        assert genders[0] in ["male", "female"]
        g = [genders[0]]
    lat = request.forms.get('latitude', default=None, type=float)
    lon = request.forms.get('longitude', default=None, type=float)
    sr = request.forms.get('search_radius', default=None, type=int)
    le = request.forms.get('location_enabled', None) == "true"

    bot.set_settings(uid, languages, g, lat, lon, sr, le)
    return "OK"
コード例 #5
0
ファイル: views.py プロジェクト: takaaki7/chatty
def set_lang_complete(uidenc):
    uid = uidcrypt.decryptuid(uidenc)
    user_languages, _ = bot.get_settings(uid)
    languages = [Lang(code=k, name=v, checked=(k in user_languages))
                 for k, v in bot.get_language() if k in user_languages]
    return dict(uidenc=uidenc, languages=languages)
コード例 #6
0
def test_crypt():
    enc = uidcrypt.encryptuid("12345")
    assert enc != "12345"
    assert isinstance(enc, str)
    dec = uidcrypt.decryptuid(enc)
    assert dec == "12345"