| // compile | 
 |  | 
 | // Copyright 2009 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package main | 
 |  | 
 | import ( | 
 | 	"flag" | 
 | 	"html/template" | 
 | 	"log" | 
 | 	"net/http" | 
 | ) | 
 |  | 
 | var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18 | 
 |  | 
 | var templ = template.Must(template.New("qr").Parse(templateStr)) | 
 |  | 
 | func main() { | 
 | 	flag.Parse() | 
 | 	http.Handle("/", http.HandlerFunc(QR)) | 
 | 	err := http.ListenAndServe(*addr, nil) | 
 | 	if err != nil { | 
 | 		log.Fatal("ListenAndServe:", err) | 
 | 	} | 
 | } | 
 |  | 
 | func QR(w http.ResponseWriter, req *http.Request) { | 
 | 	templ.Execute(w, req.FormValue("s")) | 
 | } | 
 |  | 
 | const templateStr = ` | 
 | <html> | 
 | <head> | 
 | <title>QR Link Generator</title> | 
 | </head> | 
 | <body> | 
 | {{if .}} | 
 | <img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl={{.}}" /> | 
 | <br> | 
 | {{.}} | 
 | <br> | 
 | <br> | 
 | {{end}} | 
 | <form action="/" name=f method="GET"><input maxLength=1024 size=70 | 
 | name=s value="" title="Text to QR Encode"><input type=submit | 
 | value="Show QR" name=qr> | 
 | </form> | 
 | </body> | 
 | </html> | 
 | ` |