Advertisement
joric

md-server.py

Oct 8th, 2015
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | None | 0 0
  1. """
  2. @echo off
  3. taskkill /fi "WINDOWTITLE eq markdown-server" >nul
  4. start "markdown-server" /min cmd /C "D:\lib\Python27\python %FARHOME%\..\FarExt\Markdown\md-server.py"
  5. echo [InternetShortcut]>%~dp0md.url
  6. echo URL=http://localhost:4000/%~1>>%~dp0md.url
  7. start "markdown-browser" /min cmd /C %~dp0md.url
  8. """
  9.  
  10. import sys
  11. import time
  12. import BaseHTTPServer
  13. import markdown
  14.  
  15. HOST_NAME = '127.0.0.1'
  16. PORT_NUMBER = 4000
  17.  
  18. md = markdown.Markdown(safe_mode=True, extensions=['gfm'])
  19.  
  20. class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
  21.     def do_HEAD(s):
  22.         s.send_response(200)
  23.         s.send_header("Content-type", "text/html")
  24.         s.end_headers()
  25.  
  26.     def do_GET(s):
  27.         try:
  28.             f = open(s.path[1:], "rb")
  29.         except Exception,e:
  30.             s.send_response(404)
  31.             s.send_header("Content-type", "text/plain")
  32.             s.end_headers()
  33.             s.wfile.write('%s not found - %s' % (s.path, repr(e)))
  34.             return
  35.  
  36.         if s.path[-2:]=='md':
  37.             s.send_response(200)
  38.             s.send_header("Content-type", "text/html")
  39.             s.end_headers()
  40.  
  41.             try:
  42.                 text = f.read()
  43.                 text = md.convert(text.decode('utf-8',errors='replace'))
  44.             except Exception,e:
  45.                 s.wfile.write(repr(e))
  46.                 return
  47.  
  48.             header = file('D:/Shared/FarExt/Markdown/md-header.html').read()
  49.             text = "%s%s\n" % (header, text)
  50.  
  51.             try:
  52.                 s.wfile.write(text.encode('utf-8',errors='replace'))
  53.             except Exception,e:
  54.                 s.wfile.write(repr(e))
  55.                 return
  56.  
  57.         else:
  58.             s.send_response(200)
  59.             #s.send_header("Content-type", "text/plain; charset=utf-8")
  60.             s.end_headers()
  61.             #s.wfile.write(len(text))
  62.             try:
  63.                 text = f.read()
  64.                 s.wfile.write(text)
  65.             except Exception,e:
  66.                 s.wfile.write(repr(e))
  67.                 return
  68.  
  69. if __name__ == '__main__':
  70.     server_class = BaseHTTPServer.HTTPServer
  71.     httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
  72.     print(time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER))
  73.  
  74.     try:
  75.         httpd.serve_forever()
  76.     except KeyboardInterrupt:
  77.         pass
  78.  
  79.     httpd.server_close()
  80.     print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement