src/Pure/General/http_server.scala
changeset 63823 ca8b737b08cf
child 65076 8a96ab58f016
equal deleted inserted replaced
63822:c575a3814a76 63823:ca8b737b08cf
       
     1 /*  Title:      Pure/General/http_server.scala
       
     2     Author:     Makarius
       
     3 
       
     4 Minimal HTTP server.
       
     5 */
       
     6 
       
     7 package isabelle
       
     8 
       
     9 
       
    10 import java.net.{InetAddress, InetSocketAddress}
       
    11 import com.sun.net.httpserver.{HttpExchange, HttpHandler, HttpServer}
       
    12 
       
    13 
       
    14 object HTTP_Server
       
    15 {
       
    16   def apply(handler: HttpExchange => Unit): HTTP_Server =
       
    17   {
       
    18     val localhost = InetAddress.getByName("127.0.0.1")
       
    19 
       
    20     val server = HttpServer.create(new InetSocketAddress(localhost, 0), 0)
       
    21     server.createContext("/", new HttpHandler { def handle(x: HttpExchange) { handler(x) } })
       
    22     server.setExecutor(null)
       
    23     new HTTP_Server(server)
       
    24   }
       
    25 }
       
    26 
       
    27 class HTTP_Server private(val server: HttpServer)
       
    28 {
       
    29   def start: Unit = server.start
       
    30   def stop: Unit = server.stop(0)
       
    31 
       
    32   def address: InetSocketAddress = server.getAddress
       
    33   def url: String = "http://" + address.getHostName + ":" + address.getPort
       
    34   override def toString: String = url
       
    35 }