aboutsummaryrefslogtreecommitdiff
path: root/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'util.go')
-rw-r--r--util.go92
1 files changed, 0 insertions, 92 deletions
diff --git a/util.go b/util.go
deleted file mode 100644
index 1548fab..0000000
--- a/util.go
+++ /dev/null
@@ -1,92 +0,0 @@
-package dhtsearch
-
-import (
- "errors"
- "fmt"
- "net"
-)
-
-// makeQuery returns a query-formed data.
-func makeQuery(t, q string, a map[string]interface{}) map[string]interface{} {
- return map[string]interface{}{
- "t": t,
- "y": "q",
- "q": q,
- "a": a,
- }
-}
-
-// makeResponse returns a response-formed data.
-func makeResponse(t string, r map[string]interface{}) map[string]interface{} {
- return map[string]interface{}{
- "t": t,
- "y": "r",
- "r": r,
- }
-}
-
-// parseKeys parses keys. It just wraps parseKey.
-func parseKeys(data map[string]interface{}, pairs [][]string) error {
- for _, args := range pairs {
- key, t := args[0], args[1]
- if err := parseKey(data, key, t); err != nil {
- return err
- }
- }
- return nil
-}
-
-// parseKey parses the key in dict data. `t` is type of the keyed value.
-// It's one of "int", "string", "map", "list".
-func parseKey(data map[string]interface{}, key string, t string) error {
- val, ok := data[key]
- if !ok {
- return errors.New("lack of key")
- }
-
- switch t {
- case "string":
- _, ok = val.(string)
- case "int":
- _, ok = val.(int)
- case "map":
- _, ok = val.(map[string]interface{})
- case "list":
- _, ok = val.([]interface{})
- default:
- panic("invalid type")
- }
-
- if !ok {
- return errors.New("invalid key type")
- }
-
- return nil
-}
-
-// parseMessage parses the basic data received from udp.
-// It returns a map value.
-func parseMessage(data interface{}) (map[string]interface{}, error) {
- response, ok := data.(map[string]interface{})
- if !ok {
- return nil, errors.New("response is not dict")
- }
-
- if err := parseKeys(response, [][]string{{"t", "string"}, {"y", "string"}}); err != nil {
- return nil, err
- }
-
- return response, nil
-}
-
-// Swiped from nictuku
-func compactNodeInfoToString(cni string) string {
- if len(cni) == 6 {
- return fmt.Sprintf("%d.%d.%d.%d:%d", cni[0], cni[1], cni[2], cni[3], (uint16(cni[4])<<8)|uint16(cni[5]))
- } else if len(cni) == 18 {
- b := []byte(cni[:16])
- return fmt.Sprintf("[%s]:%d", net.IP.String(b), (uint16(cni[16])<<8)|uint16(cni[17]))
- } else {
- return ""
- }
-}