diff --git a/yesod-core/ChangeLog.md b/yesod-core/ChangeLog.md index 7ec9decf..3c508ef0 100644 --- a/yesod-core/ChangeLog.md +++ b/yesod-core/ChangeLog.md @@ -1,3 +1,7 @@ +## 1.6.6 + +* `defaultErrorHandler` handles text/plain requests [#1522](https://github.com/yesodweb/yesod/pull/1520) + ## 1.6.5 * Add `fileSourceByteString` [#1503](https://github.com/yesodweb/yesod/pull/1503) diff --git a/yesod-core/Yesod/Core/Class/Yesod.hs b/yesod-core/Yesod/Core/Class/Yesod.hs index 345f202a..f2bb3e63 100644 --- a/yesod-core/Yesod/Core/Class/Yesod.hs +++ b/yesod-core/Yesod/Core/Class/Yesod.hs @@ -615,6 +615,7 @@ defaultErrorHandler NotFound = selectRep $ do let path' = TE.decodeUtf8With TEE.lenientDecode $ W.rawPathInfo r defaultMessageWidget "Not Found" [hamlet|

#{path'}|] provideRep $ return $ object ["message" .= ("Not Found" :: Text)] + provideRep $ return $ ("Not Found" :: Text) -- For API requests. -- For a user with a browser, @@ -638,6 +639,7 @@ defaultErrorHandler NotAuthenticated = selectRep $ do let apair u = ["authentication_url" .= rend u] content = maybe [] apair (authRoute site) return $ object $ ("message" .= ("Not logged in"::Text)):content + provideRep $ return $ ("Not logged in" :: Text) defaultErrorHandler (PermissionDenied msg) = selectRep $ do provideRep $ defaultLayout $ defaultMessageWidget @@ -645,6 +647,7 @@ defaultErrorHandler (PermissionDenied msg) = selectRep $ do [hamlet|

#{msg}|] provideRep $ return $ object ["message" .= ("Permission Denied. " <> msg)] + provideRep $ return $ "Permission Denied. " <> msg defaultErrorHandler (InvalidArgs ia) = selectRep $ do provideRep $ defaultLayout $ defaultMessageWidget @@ -655,6 +658,8 @@ defaultErrorHandler (InvalidArgs ia) = selectRep $ do

  • #{msg} |] provideRep $ return $ object ["message" .= ("Invalid Arguments" :: Text), "errors" .= ia] + provideRep $ return $ ("Invalid Arguments: " <> T.intercalate " " ia) + defaultErrorHandler (InternalError e) = do $logErrorS "yesod-core" e selectRep $ do @@ -662,11 +667,14 @@ defaultErrorHandler (InternalError e) = do "Internal Server Error" [hamlet|
    #{e}|]
             provideRep $ return $ object ["message" .= ("Internal Server Error" :: Text), "error" .= e]
    +        provideRep $ return $ "Internal Server Error: " <> e
    +
     defaultErrorHandler (BadMethod m) = selectRep $ do
         provideRep $ defaultLayout $ defaultMessageWidget
             "Method Not Supported"
             [hamlet|

    Method #{S8.unpack m} not supported|] provideRep $ return $ object ["message" .= ("Bad method" :: Text), "method" .= TE.decodeUtf8With TEE.lenientDecode m] + provideRep $ return $ "Bad Method " <> TE.decodeUtf8With TEE.lenientDecode m asyncHelper :: (url -> [x] -> Text) -> [Script url] diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index d12f672e..c0883ed8 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -1,5 +1,5 @@ name: yesod-core -version: 1.6.5 +version: 1.6.6 license: MIT license-file: LICENSE author: Michael Snoyman