curl -fsSL https://packages.httpie.io/deb/KEY.gpg\
| sudo tee /etc/apt/keyrings/httpie.asc >/dev/null
cat << SRC | sudo tee /etc/apt/sources.list.d/httpie.list >/dev/null
deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/httpie.asc] https://packages.httpie.io/deb ./
SRC
echo 'apt-get update;echo;apt list -a --upgradable;apt-get install -y httpie' | sudo bash
httpie --version
python3 -m venv ~/.venv/mockapi --prompt="MockApi"
source ~/.venv/mockapi/bin/activate
pip install Flask
rm rf ~/Documents/flask-playground/MockApi/*.py
cat << EOF | tee ~/Documents/flask-playground/MockApi/__main__.py >/dev/null
from flask import Flask, request, json
import time, os
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
def load_collections():
jsonurl = os.path.join(basedir, 'collections-v1.json')
return json.load(open(jsonurl))
@app.route("/api/v1/collections", methods=['GET'])
def find_all():
time.sleep(1)
return load_collections()
@app.route("/api/v1/collections/<string:group>", methods=['GET'])
def find_by_group(group):
collections = load_collections()
fetch_group = collections[group]
return fetch_group
@app.route("/api/v1/collections/<string:group>/<string:code>", methods=['GET'])
def find_by_group_and_code(group, code):
collections = load_collections()
fetch_group = collections[group]
fetch_monad = next(filter(lambda monad: (monad['code']==code), fetch_group), None)
return fetch_monad
@app.route("/api/v1/collections/-/<string:locale>", methods=['GET'])
def find_by_locale(locale):
collections = load_collections()
group_names = list(collections.keys())
locale_data = dict(map(lambda n:
(n, list(map(lambda c: {
'domain':c['domain'],
'group' :c['group'], 'code':c['code'],
'name' :c['extendedProperties']['locale'][locale]
},
collections[n]))
), group_names))
return locale_data
@app.route("/api/v1/collections", methods=['POST'])
def create():
return request.json
@app.route("/api/v1/collections/<int:id>", methods=['PUT'])
def update_by_id(id):
return request.json
@app.route("/api/v1/collections/<int:id>", methods=['DELETE'])
def delete_by_id(id):
return request.json
if __name__ == "__main__":
app.run(host='127.0.0.1', port=1983, debug=True)
EOF
python ~/Documents/flask-playground/MockApi
time cat <<< '{
"gender":[
{
"domain":"chorke.org", "group":"gender", "code":"M", "name":"Male",
"properties":{}, "extendedProperties":{
"code":{
"ISO":1,
"SCTID":"446151000124109"
},
"locale":{
"ar_SA":"ذكر",
"en_US":"Male",
"bn_BD":"পুরুষ",
"he_IL":"זָכָר",
"ms_MY":"Jantan"
}
}
},
{
"domain":"chorke.org", "group":"gender", "code":"F", "name":"Female",
"properties":{}, "extendedProperties":{
"code":{
"ISO":2,
"SCTID":"446141000124107"
},
"locale":{
"ar_SA":"أنثى",
"en_US":"Female",
"bn_BD":"মহিলা",
"he_IL":"נְקֵבָה",
"ms_MY":"Perempuan"
}
}
},
{
"domain":"chorke.org", "group":"gender", "code":"U", "name":"Unknown",
"properties":{}, "extendedProperties":{
"code":{
"ISO":0,
"SCTID":"UNK"
},
"locale":{
"ar_SA":"مجهول",
"bn_BD":"অজানা",
"en_US":"Unknown",
"he_IL":"לא ידוע",
"ms_MY":"Tidak Diketahui"
}
}
},
{
"domain":"chorke.org", "group":"gender", "code":"N", "name":"Not Applicable",
"properties":{}, "extendedProperties":{
"code":{
"ISO":9,
"SCTID":"33791000087105"
},
"locale":{
"ar_SA":"غير قابل للتطبيق",
"bn_BD":"প্রযোজ্য নয়",
"en_US":"Not Applicable",
"he_IL":"לא ישים",
"ms_MY":"Tidak Berkaitan"
}
}
}
]
}'| tee ~/Documents/flask-playground/MockApi/collections-v1.json >/dev/null