Skip to content

Instantly share code, notes, and snippets.

@alukach
Last active March 29, 2018 05:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alukach/8d7d50e05306aa2b81eac64a04a6d8ba to your computer and use it in GitHub Desktop.
Save alukach/8d7d50e05306aa2b81eac64a04a6d8ba to your computer and use it in GitHub Desktop.
Serve ESRI Web App Builder app from HTTP
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import json
import os
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Simple webserver')
parser.add_argument('address', type=str, help='Server address', nargs='?',
default='127.0.0.1:8080')
parser.add_argument('--dir', '-d', type=str, help='Directory to be served',
default='./')
args = parser.parse_args()
server, port = (args.address.split(':')[:2]
if ':' in args.address else
(args.address, None))
server = server or '127.0.0.1'
port = int(port or 8080)
dir_to_serve = os.path.abspath(args.dir)
class RequestHandler(SimpleHTTPRequestHandler):
def do_GET(self):
# Serve altered config.json to prevent redirect to HTTPS during dev
if self.path.startswith('/config.json'):
with open(os.path.join(dir_to_serve, 'config.json')) as f:
config = json.load(f)
url = config['portalUrl'].replace('https://', 'http://')
config['portalUrl'] = url
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
return self.wfile.write(json.dumps(config))
return SimpleHTTPRequestHandler.do_GET(self)
server = HTTPServer((server, port), RequestHandler)
sa = server.socket.getsockname()
print("🌎 Serving %s at http://%s:%s/" % ((dir_to_serve,) + sa))
try:
server.serve_forever()
except KeyboardInterrupt:
print("\nGoodbye.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment