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 |