aboutsummaryrefslogtreecommitdiff
path: root/src/dict2rest/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/dict2rest/handlers.go')
-rw-r--r--src/dict2rest/handlers.go103
1 files changed, 0 insertions, 103 deletions
diff --git a/src/dict2rest/handlers.go b/src/dict2rest/handlers.go
deleted file mode 100644
index 024a8d6..0000000
--- a/src/dict2rest/handlers.go
+++ /dev/null
@@ -1,103 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "github.com/julienschmidt/httprouter"
- "golang.org/x/net/dict"
- "log"
- "net/http"
- "strconv"
- "strings"
-)
-
-type jsonError struct {
- Code int `json:"code"`
- Message string `json:"message"`
-}
-
-func render(w http.ResponseWriter, status int, body interface{}) {
- w.WriteHeader(status)
- w.Header().Set("Content-Type", "application/json; charset=UTF-8")
- json.NewEncoder(w).Encode(body)
-}
-
-func formatError(e error) jsonError {
- parts := strings.SplitN(e.Error(), "[", 2)
- log.Printf("Error %s", parts[0])
- parts = strings.SplitN(parts[0], " ", 2)
- code, err := strconv.Atoi(parts[0])
- if err != nil {
- return jsonError{
- Code: 500,
- Message: "Error parsing error o_0",
- }
- }
- return jsonError{
- Code: code,
- Message: strings.TrimSpace(parts[1]),
- }
-}
-
-func formatDefinitions(defs []*dict.Defn) ([]definition, error) {
- definitions := make([]definition, len(defs))
- for i, def := range defs {
- definitions[i] = definition{
- Dictionary: def.Dict.Desc,
- Word: def.Word,
- Definition: string(def.Text[:]),
- }
- }
- return definitions, nil
-}
-
-func dictDatabases(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- client, err := getDictClient()
- if err != nil {
- log.Printf("Unable to connect to dict server at %s", dictServer)
- render(w, 500, jsonError{420, "Server temporarily unavailable"})
- return
- }
-
- defer client.Close()
-
- dicts, err := getDictionaries(client)
- if err != nil {
- render(w, 400, formatError(err))
- return
- }
- render(w, 200, dicts)
-}
-
-func dictDefine(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
- client, err := getDictClient()
- if err != nil {
- render(w, 500, jsonError{420, "Server temporarily unavailable"})
- return
- }
- defer client.Close()
-
- word := ps.ByName("word")
- queryValues := r.URL.Query()
- d := queryValues.Get("dict")
-
- var dict string
-
- if d != "" {
- dict = d
- } else {
- dict = "*"
- }
-
- defs, err := client.Define(dict, word)
- if err != nil {
- render(w, 400, formatError(err))
- return
- }
-
- definitions, err := formatDefinitions(defs)
- if err != nil {
- render(w, 500, err)
- return
- }
- render(w, 200, definitions)
-}