Mercurial > mercurial > hgweb_golang.cgi
diff src/httpsv/httpsv.go @ 0:de451fa0c9cd
golang repository.
author | pyon@macmini |
---|---|
date | Sat, 01 Oct 2016 11:16:31 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/httpsv/httpsv.go Sat Oct 01 11:16:31 2016 +0900 @@ -0,0 +1,68 @@ +package main + +import ( + "flag" + "fmt" + "html/template" + "log" + "net/http" + "os" +) + +type rate struct { + year int + rate0 float64 + rate1 float64 +} + +type rates []rate + +func main() { + + var s = flag.Bool( "s", false, "server mode" ) + var p = flag.Int( "p", 8080, "port") + flag.Parse() + + if *s { + host := "localhost:" + fmt.Sprintf( "%d", *p ) + fmt.Fprintf( os.Stderr, "starting server (%d)...\n", *p ) + + r0 := rate{ 2001, 0.1, 0.2 } + r1 := rate{ 2002, 0.2, 0.3 } + rt := rates{ r0, r1 } + + http.HandleFunc( "/", handler ) + http.HandleFunc( "/list", rt.list ) + log.Fatal( http.ListenAndServe( host, nil ) ) + + } else { + files := flag.Args() + + if len( files ) == 3 { + fmt.Println( "ok" ) + } else { + fmt.Fprintln( os.Stderr, "not ok" ) + } + } +} + +func handler( w http.ResponseWriter, r *http.Request ) { + + const tmpl = `<p> Hello, Template ! </p>` + t := template.Must( template.New( "hoge" ).Parse( tmpl ) ) + err := t.Execute( w, nil ); if err != nil { + log.Fatal( err ) + } + fmt.Fprintf( w, "url.path = %q\n", r.URL.Path ) +} + +func ( r rate ) String() string { + return fmt.Sprintf( "%d年,%.2f %,%.2f %", r.year, r.rate0, r.rate1 ) +} + +func ( rt rates ) list( w http.ResponseWriter, r *http.Request ) { + for i, v := range rt { + fmt.Fprintf( w, "%d,%v\n", i, v ) + } +} +