Commit c811596
Changed files (2)
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},
+ }
}