[tor-commits] [check/master] Dry out querystring parsing.

arlo at torproject.org arlo at torproject.org
Thu Oct 3 02:19:20 UTC 2013


commit c656794133794c1acc9a0e7a74f0cd380c42a110
Author: Arlo Breault <arlolra at gmail.com>
Date:   Wed Oct 2 19:18:47 2013 -0700

    Dry out querystring parsing.
---
 handlers.go |   20 ++------------------
 utils.go    |   15 +++++++++++++++
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/handlers.go b/handlers.go
index 574f28f..39bb584 100644
--- a/handlers.go
+++ b/handlers.go
@@ -5,7 +5,6 @@ import (
 	"html/template"
 	"net"
 	"net/http"
-	"strconv"
 	"time"
 )
 
@@ -116,23 +115,8 @@ func BulkHandler(Layout *template.Template, Exits *Exits) func(http.ResponseWrit
 			return
 		}
 
-		port_str := q.Get("port")
-		port, err := strconv.Atoi(port_str)
-		if err != nil {
-			port = 80
-			port_str = ""
-		} else {
-			port_str = "&port=" + port_str
-		}
-
-		n_str := q.Get("n")
-		n, err := strconv.Atoi(n_str)
-		if err != nil {
-			n = 16
-			n_str = ""
-		} else {
-			n_str = "&n=" + n_str
-		}
+		port, port_str := GetQS(q, "port", 80)
+		n, n_str := GetQS(q, "n", 16)
 
 		str := fmt.Sprintf("# This is a list of all Tor exit nodes from the past %d hours that can contact %s on port %d #\n", n, ip, port)
 		str += fmt.Sprintf("# You can update this list by visiting https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=%s%s%s #\n", ip, port_str, n_str)
diff --git a/utils.go b/utils.go
index 46e00b2..eb8a66d 100644
--- a/utils.go
+++ b/utils.go
@@ -2,6 +2,7 @@ package main
 
 import (
 	"encoding/json"
+	"fmt"
 	"github.com/samuel/go-gettext/gettext"
 	"html/template"
 	"io"
@@ -9,6 +10,8 @@ import (
 	"log"
 	"net/http"
 	"os"
+	"strconv"
+	"net/url"
 )
 
 func UpToDate(r *http.Request) bool {
@@ -33,6 +36,18 @@ func Lang(r *http.Request) string {
 	return lang
 }
 
+func GetQS(q url.Values, param string, deflt int) (num int, str string) {
+	str = q.Get(param)
+	num, err := strconv.Atoi(str)
+	if err != nil {
+		num = deflt
+		str = ""
+	} else {
+		str = fmt.Sprintf("&%s=%s", param, str)
+	}
+	return
+}
+
 func FuncMap(domain *gettext.Domain) template.FuncMap {
 	return template.FuncMap{
 		"UnEscaped": func(x string) interface{} {



More information about the tor-commits mailing list