@@ -254,9 +254,9 @@ func (h *HTTPBin) Status(w http.ResponseWriter, r *http.Request) {
254
254
writeError (w , http .StatusNotFound , nil )
255
255
return
256
256
}
257
- code , err := strconv . Atoi (parts [2 ])
257
+ code , err := parseStatusCode (parts [2 ])
258
258
if err != nil {
259
- writeError (w , http .StatusBadRequest , fmt . Errorf ( "invalid status %q: %w" , parts [ 2 ], err ) )
259
+ writeError (w , http .StatusBadRequest , err )
260
260
return
261
261
}
262
262
@@ -297,7 +297,7 @@ func (h *HTTPBin) Unstable(w http.ResponseWriter, r *http.Request) {
297
297
writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid failure rate: %w" , err ))
298
298
return
299
299
} else if failureRate < 0 || failureRate > 1 {
300
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid failure rate: %d not in interval [0, 1]" , err ))
300
+ writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid failure rate: %d not in range [0, 1]" , err ))
301
301
return
302
302
}
303
303
}
@@ -414,14 +414,10 @@ func (h *HTTPBin) RedirectTo(w http.ResponseWriter, r *http.Request) {
414
414
}
415
415
416
416
statusCode := http .StatusFound
417
- rawStatusCode := q .Get ("status_code" )
418
- if rawStatusCode != "" {
419
- statusCode , err = strconv .Atoi (q .Get ("status_code" ))
417
+ if userStatusCode := q .Get ("status_code" ); userStatusCode != "" {
418
+ statusCode , err = parseBoundedStatusCode (userStatusCode , 300 , 399 )
420
419
if err != nil {
421
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid status code: %w" , err ))
422
- return
423
- } else if statusCode < 300 || statusCode > 399 {
424
- writeError (w , http .StatusBadRequest , errors .New ("invalid status code: must be in range [300, 399]" ))
420
+ writeError (w , http .StatusBadRequest , err )
425
421
return
426
422
}
427
423
}
@@ -617,18 +613,15 @@ func (h *HTTPBin) Drip(w http.ResponseWriter, r *http.Request) {
617
613
writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid numbytes: %w" , err ))
618
614
return
619
615
} else if numBytes < 1 || numBytes > h .MaxBodySize {
620
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid numbytes: %d not in interval [1, %d]" , numBytes , h .MaxBodySize ))
616
+ writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid numbytes: %d not in range [1, %d]" , numBytes , h .MaxBodySize ))
621
617
return
622
618
}
623
619
}
624
620
625
621
if userCode := q .Get ("code" ); userCode != "" {
626
- code , err = strconv . Atoi (userCode )
622
+ code , err = parseStatusCode (userCode )
627
623
if err != nil {
628
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid code: %w" , err ))
629
- return
630
- } else if code < 100 || code >= 600 {
631
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid code: %d not in interval [100, 599]" , code ))
624
+ writeError (w , http .StatusBadRequest , err )
632
625
return
633
626
}
634
627
}
@@ -713,7 +706,7 @@ func (h *HTTPBin) Range(w http.ResponseWriter, r *http.Request) {
713
706
w .Header ().Add ("Accept-Ranges" , "bytes" )
714
707
715
708
if numBytes <= 0 || numBytes > h .MaxBodySize {
716
- writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid count: %d not in interval [1, %d]" , numBytes , h .MaxBodySize ))
709
+ writeError (w , http .StatusBadRequest , fmt .Errorf ("invalid count: %d not in range [1, %d]" , numBytes , h .MaxBodySize ))
717
710
return
718
711
}
719
712
0 commit comments