summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Servall/Types.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/Servall/Types.hs b/src/Servall/Types.hs
index e179e2c..69c2045 100644
--- a/src/Servall/Types.hs
+++ b/src/Servall/Types.hs
@@ -1,7 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
module Servall.Types
( WikiTemplate(..)
+ , Video(..)
) where
+import Data.Aeson ( (.:)
+ , (.=)
+ , FromJSON(..)
+ , ToJSON(..)
+ , Value(..)
+ , object
+ )
import qualified Data.HashMap.Lazy as HM
import Data.Text ( Text )
@@ -11,3 +20,31 @@ data WikiTemplate = WikiTemplate
, wtFields :: HM.HashMap Text Text
}
deriving Show
+
+data Video = Video
+ { vid :: Text
+ , vtitle :: Text
+ , vdesc :: Text
+ , vduration :: Int
+ }
+ deriving (Eq, Show)
+
+instance FromJSON Video where
+ parseJSON (Object o) =
+ Video
+ <$> o
+ .: "id"
+ <*> o
+ .: "title"
+ <*> o
+ .: "description"
+ <*> o
+ .: "duration"
+
+instance ToJSON Video where
+ toJSON (Video vid title desc duration) = object
+ [ "id" .= vid
+ , "title" .= title
+ , "description" .= desc
+ , "duration" .= duration
+ ]