fs-walle-react-ts/walle_server.py

52 lines
1.5 KiB
Python

from flask import Flask,send_from_directory,request
app = Flask(__name__,static_url_path='',static_folder='build')
from freespeech_walle.get_morph_rule import get_morph,get_freq
import json
import codecs
import glob
import os
production = False if os.environ.get('NODE_ENV','') == 'development' else True
xmlDir = 'build/' if production else 'public/'
@app.route('/')
def walle_index():
return app.send_static_file('index.html')
@app.route('/api/morph')
def walle_morph():
word = request.args.get('word','water')
pos_req = request.args.get('pos','N')
pos = pos_req if pos_req != '' else 'N';
return json.dumps(get_morph(word,pos))
@app.route('/api/save',methods=['POST'])
def walle_save():
xmlData = request.form.get('file',None);
xmlFileName = request.form.get('name','new_es_saved.xml');
if xmlData:
with codecs.open(xmlDir+xmlFileName,'wb','utf-8') as xmlF:
print("saved as ",xmlFileName)
xmlF.write(xmlData);
return 'ok'
@app.route('/api/xmlfiles')
def walle_xmlfiles():
xml_files = map(os.path.basename,glob.glob(xmlDir+'*.xml'))
return json.dumps(xml_files)
# from flask_cors import CORS, cross_origin
# CORS(app)
# hmr streaming
# import requests
# from flask import Response,stream_with_context
# @app.route('/<path:url>',methods=['GET','POST'])
# def walle_hmr(url):
# webpack_server = 'http://localhost:3000/'
# req = requests.get(webpack_server+url, stream = True)
# return Response(stream_with_context(req.iter_content()))
if __name__ == '__main__':
app.run(debug=True)