43 lines
1.5 KiB
Haskell
43 lines
1.5 KiB
Haskell
--
|
|
-- Minio Haskell SDK, (C) 2018 Minio, Inc.
|
|
--
|
|
-- Licensed under the Apache License, Version 2.0 (the "License");
|
|
-- you may not use this file except in compliance with the License.
|
|
-- You may obtain a copy of the License at
|
|
--
|
|
-- http://www.apache.org/licenses/LICENSE-2.0
|
|
--
|
|
-- Unless required by applicable law or agreed to in writing, software
|
|
-- distributed under the License is distributed on an "AS IS" BASIS,
|
|
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
-- See the License for the specific language governing permissions and
|
|
-- limitations under the License.
|
|
--
|
|
|
|
module Network.Minio.JsonParser
|
|
(
|
|
parseErrResponseJSON
|
|
) where
|
|
|
|
import Data.Aeson (FromJSON, eitherDecode, parseJSON,
|
|
withObject, (.:))
|
|
import qualified Data.Text as T
|
|
|
|
import Lib.Prelude
|
|
|
|
import Network.Minio.Errors
|
|
|
|
data AdminErrJSON = AdminErrJSON { aeCode :: Text
|
|
, aeMessage :: Text
|
|
} deriving (Eq, Show)
|
|
instance FromJSON AdminErrJSON where
|
|
parseJSON = withObject "AdminErrJSON" $ \v -> AdminErrJSON
|
|
<$> v .: "Code"
|
|
<*> v .: "Message"
|
|
|
|
parseErrResponseJSON :: (MonadIO m) => LByteString -> m ServiceErr
|
|
parseErrResponseJSON jsondata =
|
|
case eitherDecode jsondata of
|
|
Right (AdminErrJSON code message) -> return $ toServiceErr code message
|
|
Left err -> throwIO $ MErrVJsonParse $ T.pack err
|