module Snap.AtlassianConnect.LifecycleResponse
( LifecycleResponse(..)
, ClientKey
, getLifecycleResponse
) where
import Control.Applicative ((<$>))
import qualified Data.Aeson as A
import Data.Aeson.Types
import Data.AesonHelpers
import qualified Data.Text as T
import GHC.Generics
import Snap.AtlassianConnect.Instances
import qualified Snap.Core as SC
import qualified Snap.Snaplet as SS
type ClientKey = T.Text
data LifecycleResponse = LifecycleResponseInstalled
{ lrKey :: T.Text
, lrClientKey :: ClientKey
, lrPublicKey :: T.Text
, lrSharedSecret :: Maybe T.Text
, lrServerVersion :: Maybe T.Text
, lrPluginsVersion :: Maybe T.Text
, lrBaseUrl :: ConnectURI
, lrProductType :: Maybe T.Text
, lrDescription :: Maybe T.Text
, lrEventType :: Maybe T.Text
} deriving (Eq, Show, Generic)
instance FromJSON LifecycleResponse where
parseJSON = genericParseJSON baseOptions
{ fieldLabelModifier = stripFieldNamePrefix "lr"
}
getLifecycleResponse :: SS.Handler b a (Maybe LifecycleResponse)
getLifecycleResponse = A.decode <$> SC.readRequestBody (1024 * 10)