#!/usr/bin/env python3
"""Disposable local browse server. Never bind publicly or deploy this helper."""
import argparse,json,mimetypes,sys,urllib.parse,datetime
from zoneinfo import ZoneInfo
from pathlib import Path
from http.server import ThreadingHTTPServer,SimpleHTTPRequestHandler
ROOT=Path(__file__).resolve().parents[1];sys.path.insert(0,str(ROOT/'lib'))
from search import Search
class Handler(SimpleHTTPRequestHandler):
    def __init__(self,*a,**kw):super().__init__(*a,directory=str(ROOT/'site/out/pub'),**kw)
    def log_date_time_string(self):
        return datetime.datetime.now(ZoneInfo('Europe/Paris')).strftime('%d/%b/%Y %H:%M:%S CET')
    def do_GET(self):
        u=urllib.parse.urlsplit(self.path)
        if u.path=='/api/asset-search':
            q=urllib.parse.parse_qs(u.query)
            try:
                r=Search(ROOT).search(q.get('q',[''])[0],like=q.get('like',[None])[0],asset_class=q.get('path',[None])[0],game_use=q.get('all',['0'])[0]!='1',reuse=None if q.get('all',['0'])[0]=='1' else 'omg',limit=100)
                data=json.dumps(r).encode();self.send_response(200)
            except Exception as e:data=json.dumps({'error':str(e)}).encode();self.send_response(503)
            self.send_header('Content-Type','application/json');self.send_header('Content-Length',str(len(data)));self.end_headers();self.wfile.write(data);return
        super().do_GET()
if __name__=='__main__':
    p=argparse.ArgumentParser();p.add_argument('--port',type=int,default=8893);a=p.parse_args();ThreadingHTTPServer(('127.0.0.1',a.port),Handler).serve_forever()
