From 2f7666c1a8d6b06718f58e1327d2e235c0d2d98d Mon Sep 17 00:00:00 2001 From: stuebinm Date: Tue, 14 Apr 2026 22:51:00 +0200 Subject: Owntracks{,.Status}: init --- lib/OwnTracks.hs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/OwnTracks.hs (limited to 'lib/OwnTracks.hs') diff --git a/lib/OwnTracks.hs b/lib/OwnTracks.hs new file mode 100644 index 0000000..ae81d0b --- /dev/null +++ b/lib/OwnTracks.hs @@ -0,0 +1,44 @@ +{-# LANGUAGE BlockArguments #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE DerivingVia #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE ApplicativeDo #-} + + +module OwnTracks + (Message(..), + module OwnTracks.Location, + module OwnTracks.Status + ) where + +import Data.Aeson +import Data.Aeson.Types (Parser) +import Data.ByteString (ByteString) +import Data.ByteString.Base64 +import Data.Functor ((<&>)) +import Data.Text (Text) +import qualified Data.Text as T +import Data.Text.Encoding (encodeUtf8) +import Data.Time ( + UTCTime, + defaultTimeLocale, + parseTimeM) +import Database.Persist +import GHC.Generics (Generic) + +import OwnTracks.Location +import OwnTracks.Status + +data Message = + MsgLocation Location + | MsgStatus Status -- TODO + deriving (Generic, Show, Eq) + +instance FromJSON Message where + parseJSON v@(Object o) = do + ty :: Text <- o .: "_type" + case ty of + "location" -> MsgLocation <$> parseJSON v + "status" -> MsgStatus <$> parseJSON v + _ -> fail "unknown _type of owntracks message." -- cgit v1.2.3