github.com/Cloud-Foundations/Dominator@v0.3.4/imageunpacker/httpd/api.go (about) 1 package httpd 2 3 import ( 4 "fmt" 5 "io" 6 "net" 7 "net/http" 8 9 "github.com/Cloud-Foundations/Dominator/imageunpacker/unpacker" 10 "github.com/Cloud-Foundations/Dominator/lib/html" 11 ) 12 13 type HtmlWriter interface { 14 WriteHtml(writer io.Writer) 15 } 16 17 var htmlWriters []HtmlWriter 18 19 type state struct { 20 unpacker *unpacker.Unpacker 21 } 22 23 func StartServer(portNum uint, unpackerObj *unpacker.Unpacker, 24 daemon bool) error { 25 listener, err := net.Listen("tcp", fmt.Sprintf(":%d", portNum)) 26 if err != nil { 27 return err 28 } 29 myState := state{unpackerObj} 30 html.HandleFunc("/", myState.statusHandler) 31 html.HandleFunc("/showFileSystem", myState.showFileSystemHandler) 32 html.HandleFunc("/showStreamDashboard", myState.showStreamDashboardHandler) 33 if daemon { 34 go http.Serve(listener, nil) 35 } else { 36 http.Serve(listener, nil) 37 } 38 return nil 39 } 40 41 func AddHtmlWriter(htmlWriter HtmlWriter) { 42 htmlWriters = append(htmlWriters, htmlWriter) 43 }