示例#1
0
def check_auth(update, context):
    query = update.callback_query
    user_id = query.from_user.id

    with conn.cursor() as cur:
        cur.execute(
            "SELECT request_token, request_token_secret "
            "FROM tokens where id = %s", (user_id, ))
        tokens = cur.fetchone()

    try:
        session = goodreads_service.get_auth_session(*tokens)
    except KeyError:
        logger.error(f"authorize error: user_id {user_id}")
        context.bot.answer_callback_query(query.id, "Ошибка авторизации!")
        return

    goodreads_id = goodreads_api.me(session)

    logger.info(f"Success auth, user_id: {user_id}")
    with conn.cursor() as cur:
        cur.execute(
            "UPDATE tokens "
            "SET (access_token, access_token_secret, "
            "     goodreads_id) = (%s, %s, %s) "
            "WHERE id = %s",
            (session.access_token, session.access_token_secret, goodreads_id,
             user_id))
    conn.commit()

    message = (
        """Авторизация успешна 🚀\n"""
        """Для начала работы просто попробуйте отправить боту название книги 📖\n"""
        """Либо загляните на свои полки 📚 с помощью /shelves""")
    update.callback_query.edit_message_text(message)
示例#2
0
def check_auth(update, context):
    query = update.callback_query
    user_id = query.from_user.id

    with conn.cursor() as cur:
        cur.execute(
            "SELECT request_token, request_token_secret "
            "FROM tokens where id = %s", (user_id, ))
        tokens = cur.fetchone()

    try:
        session = goodreads_service.get_auth_session(*tokens)
    except KeyError:
        logger.error(f"authorize error: user_id {user_id}")
        context.bot.answer_callback_query(query.id, "Ошибка авторизации!")
        return

    goodreads_id = goodreads_api.me(session)

    logger.info(f"Success auth, user_id: {user_id}")
    with conn.cursor() as cur:
        cur.execute(
            "UPDATE tokens "
            "SET (access_token, access_token_secret, "
            "     goodreads_id) = (%s, %s, %s) "
            "WHERE id = %s",
            (session.access_token, session.access_token_secret, goodreads_id,
             user_id))
    conn.commit()

    update.callback_query.edit_message_text(str(f"Авторизован:{goodreads_id}"))
    def get_db_tokens_session(self, user_id):
        with conn.cursor() as cur:
            cur.execute(
                "SELECT access_token, access_token_secret "
                "FROM tokens "
                "where id = %s", (user_id, ))
            tokens = cur.fetchone()

        if tokens and all(tokens):
            return super().get_session(token=tokens)
def _session(user_id):
    with conn.cursor() as cur:
        cur.execute(
            "SELECT access_token, access_token_secret "
            "FROM tokens where id = %s", (user_id, ))
        tokens = cur.fetchone()
    conn.commit()

    if tokens is not None:
        session = goodreads_service.get_session(tokens)
    else:
        return None

    return session
示例#5
0
def logout(update, context):
    logger.info(f"message: {update.message.text}")
    user_id = update.message.from_user.id

    with conn.cursor() as cur:
        cur.execute("DELETE FROM tokens "
                    "where id = %s "
                    "RETURNING id", [user_id])
        count = cur.fetchone()
    conn.commit()

    if not count:
        return start_handler(update, context)

    text = ("Готово!\nДля повторной авторизации бота используйте /authorize")

    update.message.reply_text(text=text)
示例#6
0
def authorize(update, context):
    req_token, req_token_secret = goodreads_service.get_request_token(
        header_auth=True)
    authorize_url = goodreads_service.get_authorize_url(req_token)

    user_id = update.message.from_user.id
    with conn.cursor() as cur:
        cur.execute(
            "INSERT INTO tokens (id, request_token, "
            "                     request_token_secret) "
            "VALUES(%s, %s, %s)"
            "ON CONFLICT DO NOTHING", (user_id, req_token, req_token_secret))
    conn.commit()

    logger.info(f"Authorize, sending url to user: {str(user_id)}")

    markup = InlineKeyboardMarkup(
        [[InlineKeyboardButton('Готово!', callback_data='check_auth')]])
    text = f'Для авторизации бота перейдите по ссылке: {authorize_url}'

    update.message.reply_text(text=text, reply_markup=markup)