Mercurial > mercurial > hgweb_golang.cgi
comparison src/httpsv/httpsv.go @ 0:de451fa0c9cd
golang repository.
| author | pyon@macmini |
|---|---|
| date | Sat, 01 Oct 2016 11:16:31 +0900 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:de451fa0c9cd |
|---|---|
| 1 package main | |
| 2 | |
| 3 import ( | |
| 4 "flag" | |
| 5 "fmt" | |
| 6 "html/template" | |
| 7 "log" | |
| 8 "net/http" | |
| 9 "os" | |
| 10 ) | |
| 11 | |
| 12 type rate struct { | |
| 13 year int | |
| 14 rate0 float64 | |
| 15 rate1 float64 | |
| 16 } | |
| 17 | |
| 18 type rates []rate | |
| 19 | |
| 20 func main() { | |
| 21 | |
| 22 var s = flag.Bool( "s", false, "server mode" ) | |
| 23 var p = flag.Int( "p", 8080, "port") | |
| 24 flag.Parse() | |
| 25 | |
| 26 if *s { | |
| 27 host := "localhost:" + fmt.Sprintf( "%d", *p ) | |
| 28 fmt.Fprintf( os.Stderr, "starting server (%d)...\n", *p ) | |
| 29 | |
| 30 r0 := rate{ 2001, 0.1, 0.2 } | |
| 31 r1 := rate{ 2002, 0.2, 0.3 } | |
| 32 rt := rates{ r0, r1 } | |
| 33 | |
| 34 http.HandleFunc( "/", handler ) | |
| 35 http.HandleFunc( "/list", rt.list ) | |
| 36 log.Fatal( http.ListenAndServe( host, nil ) ) | |
| 37 | |
| 38 } else { | |
| 39 files := flag.Args() | |
| 40 | |
| 41 if len( files ) == 3 { | |
| 42 fmt.Println( "ok" ) | |
| 43 } else { | |
| 44 fmt.Fprintln( os.Stderr, "not ok" ) | |
| 45 } | |
| 46 } | |
| 47 } | |
| 48 | |
| 49 func handler( w http.ResponseWriter, r *http.Request ) { | |
| 50 | |
| 51 const tmpl = `<p> Hello, Template ! </p>` | |
| 52 t := template.Must( template.New( "hoge" ).Parse( tmpl ) ) | |
| 53 err := t.Execute( w, nil ); if err != nil { | |
| 54 log.Fatal( err ) | |
| 55 } | |
| 56 fmt.Fprintf( w, "url.path = %q\n", r.URL.Path ) | |
| 57 } | |
| 58 | |
| 59 func ( r rate ) String() string { | |
| 60 return fmt.Sprintf( "%d年,%.2f %,%.2f %", r.year, r.rate0, r.rate1 ) | |
| 61 } | |
| 62 | |
| 63 func ( rt rates ) list( w http.ResponseWriter, r *http.Request ) { | |
| 64 for i, v := range rt { | |
| 65 fmt.Fprintf( w, "%d,%v\n", i, v ) | |
| 66 } | |
| 67 } | |
| 68 |
