Browse Source

minor refactoring; update README example to actual fizz-buzz

master
parent
commit
b5b284b8c8
  1. 2
      README.md
  2. 7
      fizzbuzz/fizzbuzz.go
  3. 8
      fizzbuzz/server.go

2
README.md

@ -32,7 +32,7 @@ or you can run it in the source folder by running
Then, you can query the server via http, providing the required parameters: Then, you can query the server via http, providing the required parameters:
$ curl 'http://localhost:8080/?string1=a&string2=b&int1=3&int2=2&limit=14' $ curl 'http://localhost:8080/?string1=fizz&string2=buzz&int1=3&int2=5&limit=100'
fizzbuzz-lbc expects 5 parameters: fizzbuzz-lbc expects 5 parameters:

7
fizzbuzz/fizzbuzz.go

@ -16,12 +16,13 @@ func (in *inputs) generateFizzbuzz() []string {
return out return out
} }
for j := 1; j <= in.limit; j++ { for j := 1; j <= in.limit; j++ {
multipleOf1, multipleOf2 := isAMultiple(j, in.int1), isAMultiple(j, in.int2)
switch { switch {
case isAMultiple(j, in.int1) && isAMultiple(j, in.int2): case multipleOf1 && multipleOf2:
out = append(out, in.string1+in.string2) out = append(out, in.string1+in.string2)
case isAMultiple(j, in.int1): case multipleOf1:
out = append(out, in.string1) out = append(out, in.string1)
case isAMultiple(j, in.int2): case multipleOf2:
out = append(out, in.string2) out = append(out, in.string2)
default: default:
out = append(out, fmt.Sprint(j)) out = append(out, fmt.Sprint(j))

8
fizzbuzz/server.go

@ -32,15 +32,15 @@ func (s *Server) handleFizzBuzz(w http.ResponseWriter, r *http.Request) {
in.string2 = r.URL.Query().Get("string2") in.string2 = r.URL.Query().Get("string2")
var err error var err error
if in.int1, err = parseInt(r.URL, "int1"); err != nil { if in.int1, err = parseIntFromURL(r.URL, "int1"); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
if in.int2, err = parseInt(r.URL, "int2"); err != nil { if in.int2, err = parseIntFromURL(r.URL, "int2"); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
if in.limit, err = parseInt(r.URL, "limit"); err != nil { if in.limit, err = parseIntFromURL(r.URL, "limit"); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
@ -51,7 +51,7 @@ func (s *Server) handleFizzBuzz(w http.ResponseWriter, r *http.Request) {
} }
} }
func parseInt(url *url.URL, paramName string) (int, error) { func parseIntFromURL(url *url.URL, paramName string) (int, error) {
if param := url.Query().Get(paramName); param != "" { if param := url.Query().Get(paramName); param != "" {
intParam, err := strconv.Atoi(param) intParam, err := strconv.Atoi(param)
if err != nil { if err != nil {

Loading…
Cancel
Save