Browse Source

get qr code from api and render in sql page

Pi 4 tháng trước cách đây
mục cha
commit
a961cc3043

+ 0 - 1
home-sqlpage/sqlpage/Link.sql

@@ -8,7 +8,6 @@ SELECT 'text' AS component
   </div>
 </div>' AS html
 ;
-SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/QR.sql') AS properties;
 
 SET content = CASE $tool
   WHEN 'clip' THEN $paste

+ 2 - 2
home-sqlpage/sqlpage/QR.sql

@@ -1,9 +1,9 @@
-SET qr = COALESCE('https://shandan.one/'||$tool||'/'||$hash||'.qr', 'https://shandan.one/static/'||$tool||'/qr.svg');
 SELECT 'text' AS component
 , '<div class="pure-g" sty>
   <div class="pure-u-1">
     <details><summary>Show QR code ...</summary>
-    <img src="'||$qr||'"></details>
+'||$qr||'
+    </details>
   </div>
 </div>' AS html
 ;

+ 1 - 1
home-sqlpage/sqlpage/Style.sql

@@ -3,7 +3,7 @@ SELECT 'text' AS component
 body .pure-g {
     text-align: center
 }
-details img {
+details svg {
     background-color: white
 }
 .code-component pre {

+ 13 - 0
home-sqlpage/sqlpage/validate.sql

@@ -1,7 +1,20 @@
 SET url = 'https://shandan.one/clip/validate?hash=' || sqlpage.url_encode($hash);
+SET fallback = 'https://shandan.one/clip/' || sqlpage.url_encode($hash);
 SET api_results = sqlpage.fetch($url);
 SET content = $api_results->>'o';
 SET err = $api_results->>'err';
+
+SET request = json_object(
+    'method', 'POST',
+    'url', 'https://shandan.one/qr',
+    'headers', json_object(),
+    'body', json_object(
+        'data', $content,
+        'fallback', $fallback
+    )
+);
+SET qr = sqlpage.fetch($request);
+SELECT 'dynamic' AS component, sqlpage.run_sql('sqlpage/QR.sql') AS properties;
 SET inner = CASE $err IS NULL
   WHEN TRUE THEN $tool||'/form.sql'
   ELSE 'sqlpage/status.sql'

+ 6 - 1
rest/pyapi.py

@@ -15,7 +15,8 @@ from linkpreview import link_preview
 from .validate import CLIP_SIZE_LIMIT, _validate, get_file_mimetype, get_file_size, get_filename, validate, validate_file, validate_parameter, validate_url
 from .hash_util import normalize_base32
 from .save import save, save_upload
-from json import dumps
+from .qr import get_qr_code
+from json import dumps, load
 import bottle
 
 SCHEME = "https://"
@@ -44,6 +45,10 @@ def validate_clip():
         'err': ret[1:] if isinstance(ret, tuple) else None
     })
 
+@route('/qr', method=['POST'])
+def get_qr():
+    data = load(request.body)
+    return get_qr_code(**data).decode('utf-8')
 
 @route('/static/<filename:path>')
 def send_static(filename):