view src/httpsv/httpsv.go @ 31:a55c5a0cbd04

add fx.
author pyon@macmini
date Sun, 12 May 2019 20:51:18 +0900
parents de451fa0c9cd
children
line wrap: on
line source

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 )
    }
}