"""로컬 서버: web/ 과 songs/ 제공. http://localhost:8765/web/"""
import json
from functools import partial
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
from pathlib import Path

ROOT = Path(__file__).parent


class Handler(SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/api/songs":
            songs = sorted(p.parent.name for p in (ROOT / "songs").glob("*/song.txt"))
            body = json.dumps(songs).encode()
            self.send_response(200)
            self.send_header("Content-Type", "application/json")
            self.send_header("Content-Length", str(len(body)))
            self.end_headers()
            self.wfile.write(body)
        else:
            super().do_GET()


if __name__ == "__main__":
    import sys
    host = "0.0.0.0" if "--public" in sys.argv else "127.0.0.1"  # --public: 외부 접속 허용
    print(f"http://localhost:8765/web/  (bind {host})")
    ThreadingHTTPServer((host, 8765), partial(Handler, directory=str(ROOT))).serve_forever()
