Quellcode durchsuchen

update receive, follow handler

CJYen vor 3 Jahren
Ursprung
Commit
b69e52cccc
1 geänderte Dateien mit 79 neuen und 59 gelöschten Zeilen
  1. 79 59
      main.py

+ 79 - 59
main.py

@@ -11,6 +11,7 @@ import json
 import qrcode
 from PIL import Image
 import base64, io
+from random import randrange
 
 app = fastapi.FastAPI()
 
@@ -38,12 +39,11 @@ async def callback(request: fastapi.Request):
     handler.handle(body.decode('utf-8'), signature)
     return 'OK'
 
-
 # nft collection api
 @app.get("/collection/{userid}")
 def collection(userid):
     xname = userid
-    sql = 'SELECT a.* FROM nft a INNER JOIN ( SELECT userid FROM users WHERE userid="' + xname + '" ) b ON b.userid = a.userid'
+    sql = 'SELECT a.* FROM nft a INNER JOIN ( SELECT userid FROM users WHERE userid="'+xname+'" ) b ON b.userid = a.userid'
     result = db.query(sql)
     rows = {}
     i = 0
@@ -52,69 +52,90 @@ def collection(userid):
         i += 1
     return rows
 
-
 # receive handler
 @app.get("/receive/{userid}")
 def receive(userid):
+    if not table.find_one(userid=userid):
+        return "ERROR: User Not Found"
+    else:
+        return {"base":(table.find_one(userid=userid))['base']}
+
+# TODO send handler 發送nft
+# @app.get("/collection/{userid}/{hash}")
+# def blockchain():
 
-    # generate qr code from user id
-    results = table.find_one(userid=userid)
-    address = results['useraddress']
-    qr = qrcode.QRCode(
-        version=1,
-        box_size=10,
-        border=5)
-    qr.add_data(address)
-    qr.make(fit=True)
-
-    img_qr = qr.make_image(fill='black', back_color='white')
-    filename = "qrcode/" + userid + '.png'
-    img_save = img_qr.save(filename)
-
-    # open file
-    im = Image.open(filename)
-
-    # convert
-    imgByteArr = io.BytesIO()
-    im.save(imgByteArr, format='PNG')
-
-    # decode to ascii
-    x = imgByteArr.getvalue()
-    base64.b64encode(x).decode('ascii')
-    encode = base64.b64encode(x).decode('ascii')
-
-    # add to db
-    data = dict(base64=encode)
-    result = data['base64']
-    # print(data['base64'])
-    # table.insert(data)
-    table.update(dict(userid=userid, base=result), ['userid'])
+# TODO post blockchain api 上鏈nft
+# @app.get("/collection/{userid}/{art}")
+# def blockchain():
+
+# TODO get transaction update 取得交易結果
+# @app.get("/collection/{userid}")
+# def blockchain():
 
 # follow event
 @handler.add(FollowEvent)
 def handle_follow(event):
     # get user id when follow
     real_user_id = event.source.user_id
-    rand_num = '_test_000_000_002'
+    rand_num = randrange(999999)
     user_id = event.source.user_id + rand_num
+    result = table.find_one(userid=real_user_id)
 
-    # create user account
-    url = 'https://nft-api-staging.joyso.io/api/v1/accounts'
-    headers = {'Authorization': 'Basic bmZ0OmMxOTEzOWMzYjM3YjdjZWU3ZmY3OTFiZGU3NzdjZWNl'}
-    # setup for temp use (unique id)
-    data = 'uid=' + user_id
-    r = requests.post(url=url, headers=headers, data=data)
-    # extract the account address
-    dict_str = json.loads(r.text)
-    user_account = dict_str['account']
-    user_address = user_account['address']
-    # write in sql
-    data = dict(userid=real_user_id, useraddress=user_address)
-    table.insert(data)
-    print(" Follow event: " + event.source.user_id)
-    line_bot_api.reply_message(
-        event.reply_token,
-        TextSendMessage(text='歡迎加入好友'))
+    if result:
+        print(real_user_id)
+        line_bot_api.reply_message(
+            event.reply_token,
+            TextSendMessage(text='很高興再見到您!'))
+    else:
+        print("n")
+        # create user account
+        url = 'https://nft-api-staging.joyso.io/api/v1/accounts'
+        headers = {'Authorization': 'Basic bmZ0OmMxOTEzOWMzYjM3YjdjZWU3ZmY3OTFiZGU3NzdjZWNl'}
+        # setup for temp use (unique id)
+        data = 'uid=' + user_id
+        r = requests.post(url=url, headers=headers, data=data)
+        # extract the account address
+        dict_str = json.loads(r.text)
+        user_account = dict_str['account']
+        user_address = user_account['address']
+
+        # generate qr code from user id
+        qr = qrcode.QRCode(
+            version=1,
+            box_size=10,
+            border=5)
+        qr.add_data(user_address)
+        qr.make(fit=True)
+
+        img_qr = qr.make_image(fill='black', back_color='white')
+        filename = "qrcode/" + real_user_id + '.png'
+        img_save = img_qr.save(filename)
+
+        # open file
+        im = Image.open(filename)
+
+        # convert
+        imgByteArr = io.BytesIO()
+        im.save(imgByteArr, format='PNG')
+
+        # decode to ascii
+        x = imgByteArr.getvalue()
+        base64.b64encode(x).decode('ascii')
+        encode = base64.b64encode(x).decode('ascii')
+
+        # add to db
+        data = dict(base64=encode)
+        result = data['base64']
+        # table.update(dict(userid=userid, base=result), ['userid'])
+
+        # write in sql
+        data = dict(userid=real_user_id, useraddress=user_address, base=result)
+        table.insert(data)
+
+        print(" Follow event: " + event.source.user_id)
+        line_bot_api.reply_message(
+            event.reply_token,
+            TextSendMessage(text='歡迎加入好友'))
 
 # message handler
 @handler.add(MessageEvent, message=TextMessage)
@@ -140,21 +161,21 @@ def message(event):
             actions=[
                 URITemplateAction(
                     label='打開接收頁面',
-                    uri='http://ark.cards/receive/' + event.source.user_id), ])
+                    uri='http://ark.cards/receive/' + event.source.user_id),])
         line_bot_api.reply_message(
             event.reply_token,
             TemplateSendMessage(
                 alt_text="Receive",
                 template=button_template_message))
 
-    elif '我的收藏' in event.message.text:
+    elif '我的NFT收藏' in event.message.text:
         button_template_message = ButtonsTemplate(
             title=' ',
-            text='點擊並打開接收頁面,即可分享接收地址給對方!',
+            text='點擊並打開收藏頁面,就可以查看所有的收藏品哦!',
             actions=[
                 URITemplateAction(
-                    label='打開接收頁面',
-                    uri='http://ark.cards/collection/' + event.source.user_id), ])
+                    label='打開我的NFT收藏頁面',
+                    uri='http://ark.cards/collection/' + event.source.user_id),])
         line_bot_api.reply_message(
             event.reply_token,
             TemplateSendMessage(
@@ -166,6 +187,5 @@ def message(event):
             event.reply_token,
             TextSendMessage(text="更多的服務內容,歡迎請上我們的官網!(http://ark.cards)"))
 
-
 if __name__ == '__main__':
     uvicorn.run("main:app", host="0.0.0.0", port=8228, reload=True)