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
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
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
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
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
def get_docs_list(req: Request, resp: Response): print('/api/docs') # noinspection PyDunderSlots,PyUnresolvedReferences resp.media = get_docs_list_impl()
def server_info(_: Request, resp: Response) -> None: resp.media = {"message": "This server is working."}