talksapp: fail fast if GitHub metadata is missing

This will avoid problems where people deploy without the credentials.

Change-Id: I816e084df823e2ae83c823724534e7c0640b6e88
Reviewed-on: https://go-review.googlesource.com/28642
Reviewed-by: Chris Broadfoot <cbro@golang.org>
diff --git a/talksapp/main.go b/talksapp/main.go
index ec8c703..e863e1a 100644
--- a/talksapp/main.go
+++ b/talksapp/main.go
@@ -44,6 +44,11 @@
 )
 
 func init() {
+	github := httputil.NewAuthTransportFromEnvironment(nil)
+	if github.Token == "" || github.ClientID == "" || github.ClientSecret == "" {
+		panic("missing GitHub metadata, follow the instructions on README.md")
+	}
+
 	http.Handle("/", handlerFunc(serveRoot))
 	http.Handle("/compile", handlerFunc(serveCompile))
 	http.Handle("/bot.html", handlerFunc(serveBot))
@@ -135,6 +140,7 @@
 
 func (f handlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	ctx := appengine.NewContext(r)
+
 	err := f(w, r)
 	if err == nil {
 		return
@@ -186,9 +192,8 @@
 	log.Infof(ctx, "Fetching presentation %s.", importPath)
 	pres, err := getPresentation(httpClient(r), importPath)
 	if err != nil {
-		return err
+		return fmt.Errorf("Could not get presentation: %v", err)
 	}
-
 	parser := &present.Context{
 		ReadFile: func(name string) ([]byte, error) {
 			if p, ok := pres.Files[name]; ok {
@@ -197,15 +202,14 @@
 			return nil, presFileNotFoundError(name)
 		},
 	}
-
 	doc, err := parser.Parse(bytes.NewReader(pres.Files[pres.Filename]), pres.Filename, 0)
 	if err != nil {
-		return err
+		return fmt.Errorf("Could not parse presentation: %v", err)
 	}
 
 	var buf bytes.Buffer
 	if err := renderPresentation(&buf, importPath, doc); err != nil {
-		return err
+		return fmt.Errorf("Could not render presentation: %v", err)
 	}
 
 	if err := memcache.Add(ctx, &memcache.Item{