{-# LANGUAGE DeriveGeneric #-}



module ChatWork.Types.Error

    ( ChatWorkErrors(..)

    ) where



import           ChatWork.Utils    (strLength)

import           Data.Aeson        (FromJSON (..), ToJSON (..),

                                    genericParseJSON, genericToJSON)

import           Data.Aeson.Casing (aesonDrop, snakeCase)

import           Data.Text         (Text)

import           GHC.Generics      (Generic)



-- |

-- when error, chatwork is response:

-- { "errors": ["Invalid API token"] }

--

-- see : http://developer.chatwork.com/ja/endpoints.html



newtype ChatWorkErrors = ChatWorkErrors { getErrors :: [Text] } deriving (Eq, Show, Generic)



instance ToJSON ChatWorkErrors where

  toJSON = genericToJSON $ aesonDrop (strLength "get") snakeCase

instance FromJSON ChatWorkErrors where

  parseJSON = genericParseJSON $ aesonDrop (strLength "get") snakeCase