annotate src/httpsv/httpsv.go @ 8:bf5d764cd80d

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