http/get_indirect/python/server/server.py (31 lines of code) (raw):

# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. from http.server import SimpleHTTPRequestHandler, HTTPServer import json import os import mimetypes mimetypes.add_type("application/vnd.apache.arrow.stream", ".arrows") class MyServer(SimpleHTTPRequestHandler): def list_directory(self, path): host, port = self.server.server_address try: file_paths = [ f for f in os.listdir(path) if f.endswith(".arrows") and os.path.isfile(os.path.join(path, f)) ] except OSError: self.send_error(404, "No permission to list directory") return None file_uris = [f"http://{host}:{port}{self.path}{f}" for f in file_paths] uris_doc = {"arrow_stream_files": [{"uri": f} for f in file_uris]} self.send_response(200) self.send_header("Content-Type", "application/json") self.end_headers() self.wfile.write(json.dumps(uris_doc, indent=4).encode("utf-8")) return None server_address = ("localhost", 8008) try: httpd = HTTPServer(server_address, MyServer) print(f"Serving on {server_address[0]}:{server_address[1]}...") httpd.serve_forever() except KeyboardInterrupt: print("Shutting down server") httpd.socket.close()