@@ -14,29 +14,33 @@ func HTTPErrorHandlerInner(err error) *echo.HTTPError {
1414 if err == nil {
1515 return nil
1616 }
17+ // FIXME(error-handling): type switchで最上位のエラーに対してhandlingする
1718 if he := new (echo.HTTPError ); errors .As (err , & he ) {
1819 return he
1920 }
21+ var herr error
2022 if e := new (service.BadInputError ); errors .As (err , & e ) {
21- return echo .NewHTTPError (http .StatusBadRequest , e .Message ).Wrap (e ).(* echo.HTTPError )
22- }
23- if e := new (service.NotFoundError ); errors .As (err , & e ) {
24- return echo .NewHTTPError (http .StatusNotFound , e .Message ).Wrap (e ).(* echo.HTTPError )
25- }
26- if e := new (service.ForbiddenError ); errors .As (err , & e ) {
27- return echo .NewHTTPError (http .StatusForbidden , e .Message ).Wrap (e ).(* echo.HTTPError )
28- }
29- if e := new (service.UnauthenticatedError ); errors .As (err , & e ) {
30- return echo .NewHTTPError (http .StatusUnauthorized , e .Message ).Wrap (e ).(* echo.HTTPError )
31- }
32- if e := new (service.UnexpectedError ); errors .As (err , & e ) {
33- return echo .ErrInternalServerError .Wrap (e ).(* echo.HTTPError )
34- }
35- if e := new (wrapsession.GetSessionError ); errors .As (err , & e ) {
36- return echo .ErrInternalServerError .Wrap (e ).(* echo.HTTPError )
37- }
38- if e := new (wrapsession.SaveSessionError ); errors .As (err , & e ) {
39- return echo .ErrInternalServerError .Wrap (e ).(* echo.HTTPError )
40- }
41- return echo .ErrInternalServerError .Wrap (err ).(* echo.HTTPError )
23+ herr = echo .NewHTTPError (http .StatusBadRequest , e .Message ).Wrap (e )
24+ } else if e := new (service.NotFoundError ); errors .As (err , & e ) {
25+ herr = echo .NewHTTPError (http .StatusNotFound , e .Message ).Wrap (e )
26+ } else if e := new (service.ForbiddenError ); errors .As (err , & e ) {
27+ herr = echo .NewHTTPError (http .StatusForbidden , e .Message ).Wrap (e )
28+ } else if e := new (service.UnauthenticatedError ); errors .As (err , & e ) {
29+ herr = echo .NewHTTPError (http .StatusUnauthorized , e .Message ).Wrap (e )
30+ } else if e := new (service.UnexpectedError ); errors .As (err , & e ) {
31+ herr = echo .ErrInternalServerError .Wrap (e )
32+ } else if e := new (wrapsession.GetSessionError ); errors .As (err , & e ) {
33+ herr = echo .ErrInternalServerError .Wrap (e )
34+ } else if e := new (wrapsession.SaveSessionError ); errors .As (err , & e ) {
35+ herr = echo .ErrInternalServerError .Wrap (e )
36+ } else {
37+ herr = echo .ErrInternalServerError .Wrap (err )
38+ }
39+ he := new (echo.HTTPError )
40+ if ! errors .As (herr , & he ) {
41+ // ここには来ないはず
42+ code := http .StatusInternalServerError
43+ return echo .NewHTTPError (code , http .StatusText (code ))
44+ }
45+ return he
4246}
0 commit comments