Browse Source

Postfactor code

Zane Kansil 10 years ago
parent
commit
2a72cb756d
1 changed files with 16 additions and 24 deletions
  1. 16 24
      frameworks/Go/goji/src/goji/server.go

+ 16 - 24
frameworks/Go/goji/src/goji/server.go

@@ -42,8 +42,6 @@ var (
 	worldStatement   *sql.Stmt
 	fortuneStatement *sql.Stmt
 	updateStatement  *sql.Stmt
-
-	// helloWorldBytes = []byte(helloWorldString)
 )
 
 type Message struct {
@@ -98,10 +96,11 @@ func singleQuery(c web.C, w http.ResponseWriter, r *http.Request) {
 	json.NewEncoder(w).Encode(&world)
 }
 
-// Test 3: Multiple Database Queries
-func multipleQueries(c web.C, w http.ResponseWriter, r *http.Request) {
+// Caps queries parameter between 1 and 500.
+// Non-int values like "foo" and "" become 1.
+func sanitizeQueryParam(queries string) int {
 	n := 1
-	if queries := r.URL.Query().Get("queries"); len(queries) > 0 {
+	if len(queries) > 0 {
 		if conv, err := strconv.Atoi(queries); err != nil {
 			n = 1
 		} else {
@@ -114,9 +113,15 @@ func multipleQueries(c web.C, w http.ResponseWriter, r *http.Request) {
 	} else if n > 500 {
 		n = 500
 	}
+	return n
+}
+
+// Test 3: Multiple Database Queries
+func multipleQueries(c web.C, w http.ResponseWriter, r *http.Request) {
+	queries := sanitizeQueryParam(r.URL.Query().Get("queries"))
+	worlds := make([]World, queries)
 
-	worlds := make([]World, n)
-	for i := 0; i < n; i++ {
+	for i := 0; i < queries; i++ {
 		if err := randomRow().Scan(&worlds[i].Id, &worlds[i].RandomNumber); err != nil {
 			log.Fatalf("Error scanning world row: %s", err.Error())
 		}
@@ -153,23 +158,10 @@ func fortunes(c web.C, w http.ResponseWriter, r *http.Request) {
 
 // Test 5: Database Updates
 func dbupdate(c web.C, w http.ResponseWriter, r *http.Request) {
-	n := 1
-	if queries := r.URL.Query().Get("queries"); len(queries) > 0 {
-		if conv, err := strconv.Atoi(queries); err != nil {
-			n = 1
-		} else {
-			n = conv
-		}
-	}
-
-	if n < 1 {
-		n = 1
-	} else if n > 500 {
-		n = 500
-	}
+	queries := sanitizeQueryParam(r.URL.Query().Get("queries"))
+	worlds := make([]World, queries)
 
-	worlds := make([]World, n)
-	for i := 0; i < n; i++ {
+	for i := 0; i < queries; i++ {
 		if err := randomRow().Scan(&worlds[i].Id, &worlds[i].RandomNumber); err != nil {
 			log.Fatalf("Error scanning world row: %s", err.Error())
 		}
@@ -185,7 +177,7 @@ func dbupdate(c web.C, w http.ResponseWriter, r *http.Request) {
 
 // Test 6: Plaintext
 func plaintext(c web.C, w http.ResponseWriter, r *http.Request) {
-	fmt.Fprintf(w, "Hello, World!")
+	fmt.Fprintf(w, helloWorldString)
 }
 
 func main() {