From 8a06c083fab9c66e754c7ed5a75dd4d89131c43e Mon Sep 17 00:00:00 2001 From: Jacques Comeaux Date: Sun, 29 May 2022 16:07:59 -0500 Subject: Improve error reporting --- src/Data/Tomato.hs | 70 ------------------------------------------------------ 1 file changed, 70 deletions(-) delete mode 100644 src/Data/Tomato.hs (limited to 'src/Data/Tomato.hs') diff --git a/src/Data/Tomato.hs b/src/Data/Tomato.hs deleted file mode 100644 index fc9b8b5..0000000 --- a/src/Data/Tomato.hs +++ /dev/null @@ -1,70 +0,0 @@ -module Data.Tomato - ( Links (..) - , Tomato (..) - , Urls (..) - ) where - -import RIO - -import Data.Aeson ((.:)) -import Network.HTTP.Req (Url, Scheme (Https), useHttpsURI) - -import qualified Data.Aeson as Ae -import qualified Data.Aeson.Types as Ae -import qualified Text.URI as URI - - -data Tomato = Tomato - { id :: !Text - , width :: !Word - , height :: !Word - , color :: !Text - , blur_hash :: !Text - , description :: !Text - , urls :: !Urls - , links :: !Links - } deriving Show - -instance Ae.FromJSON Tomato where - parseJSON = Ae.withObject "Tomato" $ \o -> Tomato - <$> o .: "id" - <*> o .: "width" - <*> o .: "height" - <*> o .: "color" - <*> o .: "blur_hash" - <*> o .: "description" - <*> o .: "urls" - <*> o .: "links" - -data Links = Links - { self :: !(Url Https) - , html :: !(Url Https) - , download :: !(Url Https) - , download_location :: !(Url Https) - } deriving Show - -instance Ae.FromJSON Links where - parseJSON = Ae.withObject "Links" $ \o -> Links - <$> (o .: "self" >>= toUrl) - <*> (o .: "html" >>= toUrl) - <*> (o .: "download" >>= toUrl) - <*> (o .: "download_location" >>= toUrl) - -data Urls = Urls - { raw :: !(Url Https) - , full :: !(Url Https) - , regular :: !(Url Https) - , small :: !(Url Https) - , thumb :: !(Url Https) - } deriving Show - -instance Ae.FromJSON Urls where - parseJSON = Ae.withObject "Urls" $ \o -> Urls - <$> (o .: "raw" >>= toUrl) - <*> (o .: "full" >>= toUrl) - <*> (o .: "regular" >>= toUrl) - <*> (o .: "small" >>= toUrl) - <*> (o .: "thumb" >>= toUrl) - -toUrl :: Text -> Ae.Parser (Url Https) -toUrl t = maybe mzero pure $ fmap fst $ useHttpsURI =<< URI.mkURI t -- cgit v1.2.3