Files
kotaku-uk-rss/main.go

76 lines
1.2 KiB
Go

package main
import (
"fmt"
"log"
"net/http"
"os"
"gopkg.in/alecthomas/kingpin.v2"
)
// Version gets populated with version at build-time.
var Version string
var defaultPort = "8080"
var (
port = kingpin.Flag("port", "Port to listen to.").Short('p').
Default(defaultPort).String()
bind = kingpin.Flag("bind", "Bind address.").Short('b').
Default("0.0.0.0").String()
version = kingpin.Flag("version", "Print version info.").
Short('v').Bool()
)
/*
Configuration
*/
var rootURL = "http://www.kotaku.co.uk"
var pageUrls = []string{
rootURL + "/",
rootURL + "/page/2/",
rootURL + "/page/3/",
}
/*
Main...
*/
var rssCache = RssCache{}
func printVersion() {
fmt.Println("kotaku-uk-rss " + Version)
}
func serveRoot(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "OK")
}
func startServer() {
if *port == defaultPort {
if envPort := os.Getenv("PORT"); envPort != "" {
*port = envPort
}
}
http.HandleFunc("/", serveRoot)
http.HandleFunc("/rss", serveRss)
address := *bind + ":" + *port
fmt.Println("Listening on " + address)
log.Fatal(http.ListenAndServe(address, nil))
}
func main() {
kingpin.Parse()
if *version {
printVersion()
} else {
go updateRssLoop()
startServer()
}
}