snaplet-wordpress-0.1.1.0: src/Snap/Snaplet/Wordpress/Posts.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Snap.Snaplet.Wordpress.Posts where
import Data.Aeson
import qualified Data.HashMap.Strict as M
import Data.Maybe (fromMaybe)
import Data.Ratio
import Snap.Snaplet.Wordpress.Utils
extractPostId :: Object -> (Int, Object)
extractPostId p = let i = M.lookup "ID" p
is = case i of
Just (String n) -> readSafe n
Just (Number n) ->
let rat = toRational n in
case denominator rat of
1 -> Just $ fromInteger (numerator rat)
_ -> Nothing
_ -> Nothing
id' = fromMaybe 0 is in
(id', p)
extractPostIds :: [Object] -> [(Int, Object)]
extractPostIds = map extractPostId