diff --git a/app/converter/converter.go b/app/converter/converter.go index f67f0b01..1756dee7 100644 --- a/app/converter/converter.go +++ b/app/converter/converter.go @@ -19,11 +19,11 @@ type Converter struct { workingDir string } -type noFileToConvertError struct{} +type NoFileToConvertError struct{} const noFileToConvertErrorMessage = "No file to convert" -func (e *noFileToConvertError) Error() string { +func (e *NoFileToConvertError) Error() string { return noFileToConvertErrorMessage } @@ -62,7 +62,7 @@ func NewConverter(r *http.Request) (*Converter, error) { } if len(c.files) == 0 { - return c, &noFileToConvertError{} + return c, &NoFileToConvertError{} } return c, nil diff --git a/app/converter/converter_test.go b/app/converter/converter_test.go index 18697c86..719a6d13 100644 --- a/app/converter/converter_test.go +++ b/app/converter/converter_test.go @@ -140,7 +140,7 @@ func TestClear(t *testing.T) { } func TestNoFileToConvertError(t *testing.T) { - err := &noFileToConvertError{} + err := &NoFileToConvertError{} if err.Error() != noFileToConvertErrorMessage { t.Errorf("Error returned a wrong message: got '%s' want '%s'", err.Error(), noFileToConvertErrorMessage) } diff --git a/app/handlers.go b/app/handlers.go index 61534c60..2b7515f6 100644 --- a/app/handlers.go +++ b/app/handlers.go @@ -60,8 +60,12 @@ func convertHandler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { c, err := converter.NewConverter(r) if err != nil { - // TODO bad request if no file to convert - http.Error(w, err.Error(), http.StatusInternalServerError) + if _, ok := err.(*converter.NoFileToConvertError); ok { + http.Error(w, err.Error(), http.StatusBadRequest) + } else { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + logger.Error(err) if c != nil {