@@ -27,23 +27,23 @@
27module Network.PagerDuty.Internal.Types where
27module Network.PagerDuty.Internal.Types where
29import Control.Applicative
29import Control.Applicative
30−import Control.Lens hiding ((.=), Empty)
30+import Control.Lens hiding ((.=))
31import Control.Monad.IO.Class
31import Control.Monad.IO.Class
32−import Data.Aeson hiding (Error, Key)
32+import Data.Aeson hiding (Error)
33−import qualified Data.Aeson.KeyMap as Map
34import Data.Aeson.Types (Parser)
33import Data.Aeson.Types (Parser)
35import Data.ByteString (ByteString)
34import Data.ByteString (ByteString)
36import qualified Data.ByteString.Char8 as BS
35import qualified Data.ByteString.Char8 as BS
37import Data.ByteString.Conversion hiding (List)
36import Data.ByteString.Conversion hiding (List)
38import Data.Default.Class
37import Data.Default.Class
39import Data.Function (on)
38import Data.Function (on)
39+import qualified Data.HashMap.Strict as Map
40import Data.List (deleteBy, intersperse)
40import Data.List (deleteBy, intersperse)
41import Data.Monoid
41import Data.Monoid
42import Data.String
42import Data.String
43import Data.Text (Text)
43import Data.Text (Text)
44import qualified Data.Text as Text
44import qualified Data.Text as Text
45import qualified Data.Text.Encoding as Text
45import qualified Data.Text.Encoding as Text
46−import Data.Time (UTCTime, TimeZone, formatTime, utc, timeZoneName)
46+import Data.Time
47import GHC.TypeLits
47import GHC.TypeLits
48import Network.HTTP.Client (Manager)
48import Network.HTTP.Client (Manager)
49import Network.HTTP.Types
49import Network.HTTP.Types
@@ -53,7 +53,7 @@ import Network.PagerDuty.Internal.TH
53import Data.Time.Locale.Compat
53import Data.Time.Locale.Compat
55newtype CSV a = CSV [a]
55newtype CSV a = CSV [a]
56− deriving (Eq, Show, Semigroup, Monoid)
56+ deriving (Eq, Show, Monoid)
58makePrisms ''CSV
58makePrisms ''CSV
@@ -70,7 +70,7 @@ instance ToByteString a => ToJSON (CSV a) where
70 toJSON = String . Text.decodeUtf8 . toByteString'
70 toJSON = String . Text.decodeUtf8 . toByteString'
72newtype List a = L [a]
72newtype List a = L [a]
73− deriving (Eq, Show, Semigroup, Monoid)
73+ deriving (Eq, Show, Monoid)
75deriveJSON ''List
75deriveJSON ''List
76makePrisms ''List
76makePrisms ''List
@@ -133,8 +133,8 @@ data Security = Basic | Token
133 deriving (Eq, Show)
133 deriving (Eq, Show)
135data Auth (a :: Security) where
135data Auth (a :: Security) where
136− AuthBasic :: ByteString -> ByteString -> Auth 'Basic
136+ AuthBasic :: ByteString -> ByteString -> Auth Basic
137− AuthToken :: ByteString -> Auth 'Token
137+ AuthToken :: ByteString -> Auth Token
139deriving instance Eq (Auth a)
139deriving instance Eq (Auth a)
140deriving instance Show (Auth a)
140deriving instance Show (Auth a)
@@ -279,13 +279,8 @@ data Pager = Pager
280makeLenses ''Pager
280makeLenses ''Pager
282−data Page a = Page
282+instance FromJSON a => FromJSON (a, Maybe Pager) where
284− , _pgPager :: Maybe Pager
287−instance FromJSON a => FromJSON (Page a) where
288− parseJSON = withObject "paginated" $ \o -> Page
283+ parseJSON = withObject "paginated" $ \o -> (,)
289 <$> parseJSON (Object o)
284 <$> parseJSON (Object o)
290 <*> optional (parse o)
285 <*> optional (parse o)
@@ -310,13 +305,11 @@ data Path where
310 Path :: Path
305 Path :: Path
311 Seg :: ToByteString a => a -> Path
306 Seg :: ToByteString a => a -> Path
313−instance Semigroup Path where
316− Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
318instance Monoid Path where
308instance Monoid Path where
319− mempty = Path
309+ mempty = Path
312+ mappend (Seg x) (Seg y) = Seg (builder x <> "/" <> builder y)
321instance IsString Path where
314instance IsString Path where
322 fromString = Seg
315 fromString = Seg