refactor: move Proxy-Status header to error type class
Headers that apply to all errors should all be in one place. Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com>
This commit is contained in:
committed by
Steve Chavez
parent
ca96328142
commit
055efe7abd
@@ -65,8 +65,9 @@ class (ErrorBody a, JSON.ToJSON a) => PgrstError a where
|
|||||||
let
|
let
|
||||||
baseHeader = MediaType.toContentType MTApplicationJSON
|
baseHeader = MediaType.toContentType MTApplicationJSON
|
||||||
cLHeader body = (,) "Content-Length" (show $ LBS.length body) :: Header
|
cLHeader body = (,) "Content-Length" (show $ LBS.length body) :: Header
|
||||||
|
pSHeader code' = ("Proxy-Status", "PostgREST; error=" <> T.encodeUtf8 code')
|
||||||
in
|
in
|
||||||
responseLBS (status err) (baseHeader : cLHeader (errorPayload err) : headers err) $ errorPayload err
|
responseLBS (status err) (baseHeader : cLHeader (errorPayload err) : pSHeader (code err) : headers err) $ errorPayload err
|
||||||
|
|
||||||
class ErrorBody a where
|
class ErrorBody a where
|
||||||
code :: a -> Text
|
code :: a -> Text
|
||||||
@@ -505,9 +506,6 @@ instance PgrstError PgError where
|
|||||||
then [("WWW-Authenticate", "Bearer") :: Header]
|
then [("WWW-Authenticate", "Bearer") :: Header]
|
||||||
else mempty
|
else mempty
|
||||||
|
|
||||||
proxyStatusHeader :: Text -> Header
|
|
||||||
proxyStatusHeader code' = ("Proxy-Status", "PostgREST; error=" <> T.encodeUtf8 code')
|
|
||||||
|
|
||||||
instance JSON.ToJSON PgError where
|
instance JSON.ToJSON PgError where
|
||||||
toJSON (PgError _ usageError) = toJsonPgrstError
|
toJSON (PgError _ usageError) = toJsonPgrstError
|
||||||
(code usageError) (message usageError) (details usageError) (hint usageError)
|
(code usageError) (message usageError) (details usageError) (hint usageError)
|
||||||
@@ -683,11 +681,11 @@ instance PgrstError Error where
|
|||||||
status NoSchemaCacheError = HTTP.status503
|
status NoSchemaCacheError = HTTP.status503
|
||||||
status (PgErr err) = status err
|
status (PgErr err) = status err
|
||||||
|
|
||||||
headers (ApiRequestError err) = proxyStatusHeader (code err) : headers err
|
headers (ApiRequestError err) = headers err
|
||||||
headers (SchemaCacheErr err) = proxyStatusHeader (code err) : headers err
|
headers (SchemaCacheErr err) = headers err
|
||||||
headers (JwtErr err) = proxyStatusHeader (code err) : headers err
|
headers (JwtErr err) = headers err
|
||||||
headers (PgErr err) = proxyStatusHeader (code err) : headers err
|
headers (PgErr err) = headers err
|
||||||
headers err@NoSchemaCacheError = proxyStatusHeader (code err) : mempty
|
headers NoSchemaCacheError = mempty
|
||||||
|
|
||||||
instance JSON.ToJSON Error where
|
instance JSON.ToJSON Error where
|
||||||
toJSON err = toJsonPgrstError
|
toJSON err = toJsonPgrstError
|
||||||
|
|||||||
Reference in New Issue
Block a user