summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--svc/handlers.go26
-rw-r--r--svc/query.go32
2 files changed, 18 insertions, 40 deletions
diff --git a/svc/handlers.go b/svc/handlers.go
index 45f3022..7f7c730 100644
--- a/svc/handlers.go
+++ b/svc/handlers.go
@@ -5,7 +5,6 @@ import (
 	"fmt"
 	"net/http"
 	"strconv"
-	"strings"
 
 	"github.com/getwtxt/registry"
 	"github.com/gorilla/mux"
@@ -167,28 +166,7 @@ func apiTagsHandler(w http.ResponseWriter, r *http.Request) {
 	vars := mux.Vars(r)
 	tags := vars["tags"]
 
-	tags = strings.ToLower(tags)
-	out, err := twtxtCache.QueryInStatus("#" + tags)
-	if err != nil {
-		log500(w, r, err)
-		return
-	}
-	tags = strings.Title(tags)
-	out2, err := twtxtCache.QueryInStatus("#" + tags)
-	if err != nil {
-		log500(w, r, err)
-		return
-	}
-	tags = strings.ToUpper(tags)
-	out3, err := twtxtCache.QueryInStatus("#" + tags)
-	if err != nil {
-		log500(w, r, err)
-		return
-	}
-
-	out = append(out, out2...)
-	out = append(out, out3...)
-	out = uniq(out)
+	out := compositeStatusQuery("#"+tags, r)
 
 	out = registry.ReduceToPage(1, out)
 	data := parseQueryOut(out)
@@ -197,7 +175,7 @@ func apiTagsHandler(w http.ResponseWriter, r *http.Request) {
 	w.Header().Set("ETag", etag)
 	w.Header().Set("Content-Type", txtutf8)
 
-	_, err = w.Write(data)
+	_, err := w.Write(data)
 	if err != nil {
 		log500(w, r, err)
 		return
diff --git a/svc/query.go b/svc/query.go
index 037b0e5..a27747d 100644
--- a/svc/query.go
+++ b/svc/query.go
@@ -19,6 +19,20 @@ func apiErrCheck(err error, r *http.Request) {
 	}
 }
 
+func dedupe(list []string) []string {
+	out := []string{}
+	seen := make(map[string]bool)
+
+	for _, e := range list {
+		if !seen[e] {
+			out = append(out, e)
+			seen[e] = true
+		}
+	}
+
+	return out
+}
+
 // Takes the output of queries and formats it for
 // an HTTP response. Iterates over the string slice,
 // appending each entry to a byte slice, and adding
@@ -37,20 +51,7 @@ func parseQueryOut(out []string) []byte {
 	return data
 }
 
-// Removes duplicate statuses from query output
-func uniq(str []string) []string {
-	keys := make(map[string]bool)
-	out := []string{}
-	for _, e := range str {
-		if _, ok := keys[e]; !ok {
-			keys[e] = true
-			out = append(out, e)
-		}
-	}
-	return out
-}
-
-// apiUserQuery is called via apiEndpointHandler when
+// apiEndpointQuery is called via apiEndpointHandler when
 // the endpoint is "users" and r.FormValue("q") is not empty.
 // It queries the registry cache for users or user URLs
 // matching the term supplied via r.FormValue("q")
@@ -123,9 +124,8 @@ func joinQueryOuts(data ...[]string) []string {
 	for _, e := range data {
 		single = append(single, e...)
 	}
-	single = uniq(single)
 
-	return single
+	return dedupe(single)
 }
 
 func compositeStatusQuery(query string, r *http.Request) []string {
j5@gmail.com> 2015-11-22 17:45:38 +0000 Tidied roster commands' href='/danisanti/profani-tty/commit/themes/complex?id=216493ef07662e8f53f7c0de2391a43ef9bd3a8a'>216493ef ^
5bccee93 ^
abc2f0de ^
cf80fdc3 ^
97d96746 ^
e58be44f ^
519b10d1 ^
f91b21a1 ^
2bda22c3 ^
a00095c8 ^
2bda22c3 ^
a00095c8 ^
27adf031 ^

30b5f112 ^


446027b9 ^
93358d5e ^
fb7001cf ^
72c1c496 ^
bab75cae ^
d3cc5bd7 ^




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65