Esempio n. 1
0
def get_doc_data(req: Request, resp: Response, doc_id: str):
    print(f'/api/docs/{doc_id}')
    # ある話についての情報を取得する
    with closing(sqlite3.connect(DB_PATH)) as conn:
        c = conn.cursor()
        if DB_UPDATE_FLG:
            c.execute(
                'CREATE TABLE IF NOT EXISTS docs (id TEXT, datetime TEXT, images INTEGER, message TEXT)'
            )
        result = c.execute(
            f'SELECT datetime, images, message FROM docs WHERE id="{doc_id}"'
        ).fetchall()
        if len(result) > 0:
            data = {
                'datetime': result[0][0],
                'images': result[0][1],
                'message': result[0][2]
            }
        else:
            data = get_doc_data_impl(doc_id)
            if DB_UPDATE_FLG:
                c.execute(
                    'INSERT INTO docs (id, datetime, images, message) VALUES (?, ?, ?, ?)',
                    (doc_id, data['datetime'], data['images'],
                     data['message']))
        conn.commit()
    resp.media = data
Esempio n. 2
0
def verify_token(_: Request, resp: Response, token: str) -> None:
    try:
        exist = token_db.verify_token(token)
    except Exception:
        exist = False

    result = {"code": "Success", "exist": exist}

    resp.media = result
Esempio n. 3
0
async def register_token(req: Request, resp: Response) -> None:
    request: Dict = await req.media()
    token: str = request.get("token")
    try:
        exist = token_db.verify_token(token)
    except Exception:
        exist = False

    raw_token = b58.a2b_base58(token)
    hashed_token = sha256d(raw_token)
    try:
        used = bool(tx_db.get(hashed_token))
    except Exception:
        used = False

    if not exist:
        result = {
            "code": "Failed",
            "error": "Token is not registered or is invalid."
        }
    elif used:
        result = {"code": "Failed", "error": "Token is already used."}
    else:
        want_currency: str = request.get("wantCurrency")
        want_amount: int = request.get("wantAmount")
        send_currency: str = request.get("sendCurrency")
        send_amount: int = request.get("sendAmount")
        receive_address: str = request.get("receiveAddress")
        try:
            if want_amount.count(".") or send_amount.count("."):
                raise  # amount type isn't int...
            want_amount = int(want_amount)
            send_amount = int(send_amount)
        except Exception:
            pass

        if not (isinstance(want_currency, str) and isinstance(
                want_amount, int) and isinstance(send_currency, str)
                and isinstance(send_amount, int)
                and isinstance(receive_address, str)):
            result = {"code": "Failed", "error": "Request data is invalid."}
        else:
            data = TxDBData(i_currency=want_currency,
                            i_receive_amount=send_amount,
                            p_currency=send_currency,
                            p_receive_amount=want_amount,
                            p_addr=receive_address)
            try:
                tx_db.put(hashed_token, data)
                result = {"code": "Success"}
            except Exception as e:
                result = {"code": "Failed", "error": str(e)}

    resp.media = result
Esempio n. 4
0
def get_token(_: Request, resp: Response) -> None:
    raw_token = secrets.token_bytes(64)
    token = b58.b2a_base58(raw_token)
    hashed_token = sha256d(raw_token)
    created_at = int(time.time())
    result = {"code": "Success", "token": token}

    try:
        token_db.put(hashed_token, TokenDBData(created_at))
    except Exception as e:
        result = {"code": "Failed", "token": None, "error": str(e)}

    resp.media = result
Esempio n. 5
0
def get_swap_list(_: Request, res: Response) -> None:
    all_list = tx_db.get_all()
    result = {}
    for key in all_list.keys():
        value = all_list[key]
        if value.swap_status == SwapStatus.REGISTERED:
            result[key.hex()] = {
                "initiator_currency": value.i_currency,
                "initiator_receive_amount": value.i_receive_amount,
                "participator_currency": value.p_currency,
                "participator_receive_amount": value.p_receive_amount,
                "participator_address": value.p_addr
            }

    res.media = result
Esempio n. 6
0
def get_doc_image(req: Request, resp: Response, doc_id: str, image_index: str):
    print(f'/api/docs/{doc_id}/images/{image_index}')
    # ある画像についての情報を返す
    with closing(sqlite3.connect(DB_PATH)) as conn:
        c = conn.cursor()
        if DB_UPDATE_FLG:
            c.execute(
                'CREATE TABLE IF NOT EXISTS images (id TEXT, image_index TEXT, data BLOB)'
            )
        result = c.execute(
            f'SELECT data FROM images WHERE id="{doc_id}" AND image_index="{image_index}"'
        ).fetchall()
        if len(result) > 0:
            data = result[0][0]
        else:
            data = get_doc_image_impl(doc_id, image_index)
            if DB_UPDATE_FLG:
                c.execute(
                    'INSERT INTO images (id, image_index, data) VALUES (?, ?, ?)',
                    (doc_id, image_index, data))
        conn.commit()
    resp.content = data
Esempio n. 7
0
def index(req: Request, resp: Response):
    # noinspection PyDunderSlots,PyUnresolvedReferences
    resp.content = api.template('index.html')
Esempio n. 8
0
def get_docs_list(req: Request, resp: Response):
    print('/api/docs')

    # noinspection PyDunderSlots,PyUnresolvedReferences
    resp.media = get_docs_list_impl()
Esempio n. 9
0
def manifest(req: Request, resp: Response, static_file: str):
    with open(f'./root/{static_file}', mode='rb') as f:
        resp.content = f.read()
Esempio n. 10
0
def server_info(_: Request, resp: Response) -> None:
    resp.media = {"message": "This server is working."}