This commit is contained in:
elburg 2023-02-09 22:04:22 +00:00
parent af8e618f01
commit 7589408812
2 changed files with 63 additions and 48 deletions

96
main.py
View file

@ -1,6 +1,6 @@
exit() exit()
__version__="0.0" __version__ = "0.0"
from flask import Flask as wserv from flask import Flask as wserv
@ -9,66 +9,68 @@ app = wserv('superTinySearch API Runtime')
from flask import render_template from flask import render_template
import sys import sys
debugmode=False
debugmode = False
if "debug" in sys.argv: if "debug" in sys.argv:
debugmode=True debugmode = True
del sys del sys
def makeServerHeader(): def makeServerHeader():
import sys import sys
return f"superTinySearch API/{__version__} (Unix) (Python v{sys.version})" return f"superTinySearch API/{__version__} (Unix) (Python v{sys.version})"
# @app.errorhandler(404) # @app.errorhandler(404)
# def not_found(error): # def not_found(error):
# from flask import request as rq # from flask import request as rq
# if rq.args.get('returnFormat','') == "xml" # if rq.args.get('returnFormat','') == "xml"
@app.route("/") @app.route("/")
def noHumans(): def noHumans():
from flask import Response from flask import Response
resp=Response( resp = Response(response="running", status=200, mimetype="text/plain")
response="running", resp.headers["Server"] = makeServerHeader
status=200, resp.headers["Accept"] = "text/plain"
mimetype="text/plain" return resp
)
resp.headers["Server"] = makeServerHeader
resp.headers["Accept"] = "text/plain"
return resp
@app.route("/about") @app.route("/about")
def aboutThis(): def aboutThis():
from flask import Response
resp=Response(
response=f"superTinySearch API v{__version__}",
status=200,
mimetype="text/plain"
)
resp.headers["Server"] = makeServerHeader
resp.headers["Accept"] = "text/plain"
return resp
@app.route("/apifront?returnFormat=<rf>&srcHostname=<src>", methods=['GET','POST'])
def apiRun(rf = 'xml', src = None):
from flask import request as rq
if rq.method == 'GET':
return 'GET REQUESTS NOT ALLOWED'
else:
from src import frontend
out=frontend.parsePOST(rq.form.to_dict(flat=False),rf,src)
del frontend
from flask import Response from flask import Response
resp = Response(response=out.content, status=500, mime="text/plain") resp = Response(response=f"superTinySearch API v{__version__}",
if rf == "xml": status=200,
resp.headers["Content-Type"] = "text/xml; charset=utf-8" mimetype="text/plain")
elif rf == "json": resp.headers["Server"] = makeServerHeader
resp.headers["Content-Type"] = "application/json; charset=utf-8" resp.headers["Accept"] = "text/plain"
else:
resp.headers["Content-Type"] = "text/plain; charset=utf-8"
resp.headers["Server"] = makeServerHeader()
resp.status=200
return resp return resp
@app.route("/apifront?returnFormat=<rf>&srcHostname=<src>",
methods=['GET', 'POST'])
def apiRun(rf='xml', src=None):
from flask import request as rq
if rq.method == 'GET':
return 'GET REQUESTS NOT ALLOWED'
else:
from src import frontend
out = frontend.parsePOST(rq.form.to_dict(flat=False), rf, src)
del frontend
from flask import Response
resp = Response(response=out.content, status=500, mime="text/plain")
if rf == "xml":
resp.headers["Content-Type"] = "text/xml; charset=utf-8"
elif rf == "json":
resp.headers["Content-Type"] = "application/json; charset=utf-8"
else:
resp.headers["Content-Type"] = "text/plain; charset=utf-8"
resp.headers["Server"] = makeServerHeader()
resp.status = 200
return resp
if __name__ == '__main__': if __name__ == '__main__':
app.run(host="0.0.0.0",port=443) app.run(host="0.0.0.0", port=443)
else: else:
raise "INVALID USAGE OF API APP" raise "INVALID USAGE OF API APP"

View file

@ -40,7 +40,20 @@ class Accessor:
""") """)
self.buffers.db.commit() self.buffers.db.commit()
return True return True
def removeEntry(self, filters):
if self.mode == "ro":
raise ImportError
self._refresh()
query="DELETE FROM index WHERE "
if filters.full:
query+=f"fullURL = {filters.fullURL}"
elif filters.hostname:
query+=f"fullURL LIKE %{filters.hostname}%"
query+=";"
self.buffers.dbcursor.execute(query)
self.buffers.db.commit()
return True
def __init__(self, mode="ro"): def __init__(self, mode="ro"):
self.mode = mode self.mode = mode
self.search = {'query': None, 'limit': 20, 'offset': 0} self.search = {'query': None, 'limit': 20, 'offset': 0}