Commit c811596

Richard Luby <richluby@gmail.com>
2016-11-02 12:45:07
server serves categories
server now serves categories off the path API_ROOT + '/questions/categories'
1 parent e176c53
question.go
@@ -39,7 +39,7 @@ func parseLine(line string) error {
 	}
 	record.Question = strings.TrimSpace(tokens[0])
 	record.Answer = strings.TrimSpace(tokens[1])
-	category := strings.TrimSpace(strings.ToLower(tokens[1]))
+	category := strings.TrimSpace(strings.ToLower(tokens[2]))
 	assignCategory(category, &record)
 	recordMap[category] = append(recordMap[category], record)
 	return nil
serverHandlers.go
@@ -127,6 +127,31 @@ func handleTestQueries(writer http.ResponseWriter, request *http.Request) {
 	}
 }
 
+// handleRequestForCategories returns the JSON-encoded array
+// of categories available on the server
+func handleRequestForCategories(writer http.ResponseWriter, request *http.Request) error {
+	data, err := json.Marshal(categoryKeys)
+	if err != nil {
+		return err
+	}
+	_, err = writer.Write(data)
+	return err
+}
+
+// handleCategoryQueries returns the JSON-encoded array of categories available
+// to the requesting body
+func handleCategoryQueries(writer http.ResponseWriter, request *http.Request) {
+	switch request.Method {
+	case "POST":
+		log.Printf("Client posting category: %+v\tvia %+v", request.RemoteAddr, request.UserAgent())
+	case "GET":
+		log.Printf("Client requested category: %+v\tvia %+v", request.RemoteAddr, request.UserAgent())
+		if err := handleRequestForCategories(writer, request); err != nil {
+			log.Printf("Error for client %+v: %+v", request.RemoteAddr, err)
+		}
+	}
+}
+
 type ServerHandler struct {
 	Request        string
 	HandleFunction func(writer http.ResponseWriter, request *http.Request)
@@ -138,5 +163,9 @@ func init() {
 	handlers = map[string]ServerHandler{
 		API_ROOT + "/test": ServerHandler{
 			Request:        API_ROOT + "/test",
-			HandleFunction: handleTestQueries}}
+			HandleFunction: handleTestQueries},
+		API_ROOT + "/questions/categories": ServerHandler{
+			Request:        API_ROOT + "/questions/categories",
+			HandleFunction: handleCategoryQueries},
+	}
 }