git.iko.soy/typeable/pagerduty
on develop help sign in
.travis.yml+4−4
since splitsnapshots
unifiedsplit
@@ -24,7 +24,7 @@ script:
24matrix:
24matrix:
25 fast_finish: true
25 fast_finish: true
26 include:
26 include:
27− - env: GHCVER=7.10.2
27+ - env: GHCVER=8.0.1
28− addons: { apt: { packages: [ghc-7.10.2], sources: [hvr-ghc] } }
28+ addons: { apt: { packages: [ghc-8.0.1], sources: [hvr-ghc] } }
29− - env: GHCVER=7.8.4
29+ - env: GHCVER=7.10.3
30− addons: { apt: { packages: [ghc-7.8.4], sources: [hvr-ghc] } }
30+ addons: { apt: { packages: [ghc-7.10.3], sources: [hvr-ghc] } }
Makefiledeleted−22
@@ -1,22 +0,0 @@
1−FLAGS := -j --disable-documentation
2−
3−build:
4− cabal build $(addprefix -,$(findstring j,$(MAKEFLAGS)))
5−
6−all:
7− make clean; make install && make build
8−
9−install: cabal.sandbox.config
10− cabal install $(FLAGS) \
11− --only-dependencies \
12− --force-reinstalls
13−
14−clean:
15− cabal clean
16− rm -rf cabal.sandbox.config .cabal-sandbox
17−
18−doc:
19− cabal haddock
20−
21−cabal.sandbox.config:
22− cabal sandbox init
pagerduty.cabal+5−5
@@ -1,5 +1,5 @@
1name: pagerduty
1name: pagerduty
2−version: 0.0.5
2+version: 0.0.8
3synopsis: Client library for PagerDuty Integration and REST APIs.
3synopsis: Client library for PagerDuty Integration and REST APIs.
4homepage: http://github.com/brendanhay/pagerduty
4homepage: http://github.com/brendanhay/pagerduty
5license: OtherLicense
5license: OtherLicense
@@ -71,16 +71,16 @@ library
71 , Network.PagerDuty.Types
71 , Network.PagerDuty.Types
72
72
73 build-depends:
73 build-depends:
74− aeson >= 0.8
74+ aeson >= 2.0
75− , base >= 4.7 && < 5
75+ , base >= 4.7 && < 5
76 , bifunctors >= 4.1
76 , bifunctors >= 4.1
77 , bytestring >= 0.9
77 , bytestring >= 0.9
78 , bytestring-conversion >= 0.2.1
78 , bytestring-conversion >= 0.2.1
79 , conduit > 1.1
79 , conduit > 1.1
80 , data-default-class >= 0.0.1
80 , data-default-class >= 0.0.1
81 , exceptions >= 0.6
81 , exceptions >= 0.6
82− , generics-sop >= 0.2.0.0
82+ , generics-sop >= 0.5.0.0
83− , http-client >= 0.4.3
83+ , http-client >= 0.5 && < 1
84 , http-types >= 0.8
84 , http-types >= 0.8
85 , lens >= 4.4
85 , lens >= 4.4
86 , lens-aeson >= 1
86 , lens-aeson >= 1
script/travis-lifecycle-before_install+3−8
@@ -2,15 +2,10 @@
2
2
3set -e
3set -e
4
4
5−dir=~/.local/bin
5+mkdir -p ~/.local/bin
6−remote=https://github.com/commercialhaskell/stack/releases/download/v0.1.3.1/stack-0.1.3.1-x86_64-linux.gz
7−local=$dir/stack
8
6
9−mkdir -p $dir
7+curl -L https://www.stackage.org/stack/linux-x86_64 | \
10−
8+ tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
11−curl -L $remote | gunzip > $local
12−
13−chmod a+x $local
14
9
15ghc --version
10ghc --version
16stack --version
11stack --version
src/Control/Monad/Trans/PagerDuty.hs+1
@@ -42,6 +42,7 @@ module Control.Monad.Trans.PagerDuty
42 ) where
42 ) where
43
43
44import Control.Applicative
44import Control.Applicative
45+import Control.Monad
45import Control.Monad.Base
46import Control.Monad.Base
46import Control.Monad.Catch
47import Control.Monad.Catch
47import Control.Monad.Except (MonadError (..))
48import Control.Monad.Except (MonadError (..))
src/Network/PagerDuty/Integration.hs+3−3
@@ -81,8 +81,7 @@ module Network.PagerDuty.Integration
81import Control.Lens
81import Control.Lens
82import Control.Monad.IO.Class
82import Control.Monad.IO.Class
83import Data.Aeson
83import Data.Aeson
84−import Data.Default.Class
85−import qualified Data.HashMap.Strict as Map
84+import qualified Data.Aeson.KeyMap as Map
86import Data.Text (Text)
85import Data.Text (Text)
87import Network.HTTP.Client (Manager)
86import Network.HTTP.Client (Manager)
88import qualified Network.HTTP.Client as Client
87import qualified Network.HTTP.Client as Client
@@ -292,7 +291,8 @@ submitWith :: MonadIO m
292 -> Event
291 -> Event
293 -> m (Either Error Response)
292 -> m (Either Error Response)
294submitWith m l e = request m l e $
293submitWith m l e = request m l e $
294+ Client.defaultRequest
295− def { Client.host = "events.pagerduty.com"
295+ { Client.host = "events.pagerduty.com"
296 , Client.path = "/generic/2010-04-15/create_event.json"
296 , Client.path = "/generic/2010-04-15/create_event.json"
297 , Client.method = "POST"
297 , Client.method = "POST"
298 }
298 }
src/Network/PagerDuty/Internal/Query.hs+2−2
@@ -59,8 +59,8 @@ gqueryWith :: forall a. (Generic a, HasDatatypeInfo a, All2 QueryValues (Code a)
59 -> a
59 -> a
60 -> Query
60 -> Query
61gqueryWith o a = case datatypeInfo (Proxy :: Proxy a) of
61gqueryWith o a = case datatypeInfo (Proxy :: Proxy a) of
62− ADT _ _ cs -> go cs (from a)
62+ ADT _ _ cs _ -> go cs (from a)
63− Newtype _ _ c -> go (c :* Nil) (from a)
63+ Newtype _ _ c -> go (c :* Nil) (from a)
64 where
64 where
65 go :: (All2 QueryValues xss, SListI xss)
65 go :: (All2 QueryValues xss, SListI xss)
66 => NP ConstructorInfo xss
66 => NP ConstructorInfo xss
src/Network/PagerDuty/Internal/Types.hs+17−10
@@ -29,14 +29,14 @@ module Network.PagerDuty.Internal.Types where
29import Control.Applicative
29import Control.Applicative
30import Control.Lens hiding ((.=), Empty)
30import Control.Lens hiding ((.=), Empty)
31import Control.Monad.IO.Class
31import Control.Monad.IO.Class
32−import Data.Aeson hiding (Error)
32+import Data.Aeson hiding (Error, Key)
33+import qualified Data.Aeson.KeyMap as Map
33import Data.Aeson.Types (Parser)
34import Data.Aeson.Types (Parser)
34import Data.ByteString (ByteString)
35import Data.ByteString (ByteString)
35import qualified Data.ByteString.Char8 as BS
36import qualified Data.ByteString.Char8 as BS
36import Data.ByteString.Conversion hiding (List)
37import Data.ByteString.Conversion hiding (List)
37import Data.Default.Class
38import Data.Default.Class
38import Data.Function (on)
39import 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
@@ -53,7 +53,7 @@ import Network.PagerDuty.Internal.TH
53import Data.Time.Locale.Compat
53import Data.Time.Locale.Compat
54
54
55newtype CSV a = CSV [a]
55newtype CSV a = CSV [a]
56− deriving (Eq, Show, Monoid)
56+ deriving (Eq, Show, Semigroup, Monoid)
57
57
58makePrisms ''CSV
58makePrisms ''CSV
59
59
@@ -70,7 +70,7 @@ instance ToByteString a => ToJSON (CSV a) where
70 toJSON = String . Text.decodeUtf8 . toByteString'
70 toJSON = String . Text.decodeUtf8 . toByteString'
71
71
72newtype List a = L [a]
72newtype List a = L [a]
73− deriving (Eq, Show, Monoid)
73+ deriving (Eq, Show, Semigroup, Monoid)
74
74
75deriveJSON ''List
75deriveJSON ''List
76makePrisms ''List
76makePrisms ''List
@@ -279,8 +279,13 @@ data Pager = Pager
279
279
280makeLenses ''Pager
280makeLenses ''Pager
281
281
282+data Page a = Page
283+ { _pgItem :: a
284+ , _pgPager :: Maybe Pager
285+ }
286+
282−instance FromJSON a => FromJSON (a, Maybe Pager) where
287+instance FromJSON a => FromJSON (Page a) where
283− parseJSON = withObject "paginated" $ \o -> (,)
288+ parseJSON = withObject "paginated" $ \o -> Page
284 <$> parseJSON (Object o)
289 <$> parseJSON (Object o)
285 <*> optional (parse o)
290 <*> optional (parse o)
286 where
291 where
@@ -305,11 +310,13 @@ data Path where
305 Path :: Path
310 Path :: Path
306 Seg :: ToByteString a => a -> Path
311 Seg :: ToByteString a => a -> Path
307
312
313+instance Semigroup Path where
314+ x <> Path = x
315+ Path <> y = y
316+ Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
317+
308instance Monoid Path where
318instance Monoid Path where
309− mempty = Path
319+ mempty = Path
310− mappend x Path = x
311− mappend Path y = y
312− mappend (Seg x) (Seg y) = Seg (builder x <> "/" <> builder y)
313
320
314instance IsString Path where
321instance IsString Path where
315 fromString = Seg
322 fromString = Seg
src/Network/PagerDuty/REST.hs+6−8
@@ -13,7 +13,6 @@
13
13
14module Network.PagerDuty.REST
14module Network.PagerDuty.REST
15 (
15 (
16−
17 -- * Sending requests
16 -- * Sending requests
18 send
17 send
19 , sendWith
18 , sendWith
@@ -30,7 +29,6 @@ import Control.Monad.IO.Class
30import Control.Monad.Trans
29import Control.Monad.Trans
31import Data.Aeson (FromJSON)
30import Data.Aeson (FromJSON)
32import Data.Conduit
31import Data.Conduit
33−import Data.Default.Class
34import Data.Monoid
32import Data.Monoid
35import Network.HTTP.Client (Manager)
33import Network.HTTP.Client (Manager)
36import qualified Network.HTTP.Client as Client
34import qualified Network.HTTP.Client as Client
@@ -56,7 +54,7 @@ sendWith :: (MonadIO m, FromJSON b)
56 => Env s
54 => Env s
57 -> Request a s b
55 -> Request a s b
58 -> m (Either Error b)
56 -> m (Either Error b)
59−sendWith e = liftM (fmap fst) . http e
57+sendWith e = liftM (fmap _pgItem) . http e
60
58
61-- | /See:/ 'paginateWith'
59-- | /See:/ 'paginateWith'
62paginate :: (MonadIO m, Paginate a, FromJSON b)
60paginate :: (MonadIO m, Paginate a, FromJSON b)
@@ -75,15 +73,15 @@ paginateWith e = go
75 where
73 where
76 go rq = do
74 go rq = do
77 rs <- lift (http e rq)
75 rs <- lift (http e rq)
78− yield (fst <$> rs)
76+ yield (_pgItem <$> rs)
79 either (const (return ()))
77 either (const (return ()))
80− (maybe (return ()) go . next rq . snd)
78+ (maybe (return ()) go . next rq . _pgPager)
81 rs
79 rs
82
80
83http :: (MonadIO m, FromJSON b)
81http :: (MonadIO m, FromJSON b)
84 => Env s
82 => Env s
85 -> Request a s b
83 -> Request a s b
86− -> m (Either Error (b, Maybe Pager))
84+ -> m (Either Error (Page b))
87http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
85http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
88 { Client.host = domain (e ^. envDomain)
86 { Client.host = domain (e ^. envDomain)
89 , Client.path = renderPath (rq ^. path)
87 , Client.path = renderPath (rq ^. path)
@@ -91,7 +89,7 @@ http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
91 }
89 }
92 where
90 where
93 raw = case e ^. envAuth of
91 raw = case e ^. envAuth of
94− AuthBasic u p -> Client.applyBasicAuth u p def
92+ AuthBasic u p -> Client.applyBasicAuth u p Client.defaultRequest
95− AuthToken t -> def
93+ AuthToken t -> Client.defaultRequest
96 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
94 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
97 }
95 }
src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+1−1
@@ -67,7 +67,7 @@ module Network.PagerDuty.REST.EscalationPolicies.EscalationRules
67import Control.Applicative ((<$>))
67import Control.Applicative ((<$>))
68import Control.Lens hiding ((.=))
68import Control.Lens hiding ((.=))
69import Data.Aeson
69import Data.Aeson
70−import qualified Data.HashMap.Strict as Map
70+import qualified Data.Aeson.KeyMap as Map
71import Data.Text (Text)
71import Data.Text (Text)
72import Network.HTTP.Types
72import Network.HTTP.Types
73import Network.PagerDuty.Internal.TH
73import Network.PagerDuty.Internal.TH
src/Network/PagerDuty/REST/LogEntries.hs+1−2
@@ -111,12 +111,11 @@ module Network.PagerDuty.REST.LogEntries
111 , nAddress
111 , nAddress
112 ) where
112 ) where
113
113
114−import Control.Applicative
115import Control.Lens hiding (Empty)
114import Control.Lens hiding (Empty)
116import Data.Aeson
115import Data.Aeson
117import Data.Aeson.Lens
116import Data.Aeson.Lens
117+import qualified Data.Aeson.KeyMap as Map
118import Data.Default.Class
118import Data.Default.Class
119−import qualified Data.HashMap.Strict as Map
120import Data.Text (Text)
119import Data.Text (Text)
121import qualified Data.Text as Text
120import qualified Data.Text as Text
122import Data.Time
121import Data.Time
src/Network/PagerDuty/REST/Users.hs−1
@@ -5,7 +5,6 @@
5{-# LANGUAGE TypeFamilies #-}
5{-# LANGUAGE TypeFamilies #-}
6
6
7{-# OPTIONS_GHC -fno-warn-type-defaults #-}
7{-# OPTIONS_GHC -fno-warn-type-defaults #-}
8−{-# OPTIONS_GHC -ddump-splices #-}
9
8
10-- Module : Network.PagerDuty.REST.Users
9-- Module : Network.PagerDuty.REST.Users
11-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
10-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
stack-7.10.2.yamldeleted−6
@@ -1,6 +0,0 @@
1−resolver: nightly-2015-10-24
2−flags: {}
3−extra-deps:
4− - generics-sop-0.2.0.0
5−packages:
6− - '.'
stack-7.8.4.yamldeleted−6
@@ -1,6 +0,0 @@
1−resolver: lts-2.21
2−flags: {}
3−extra-deps:
4− - generics-sop-0.2.0.0
5−packages:
6− - '.'
stack.yamlmode 120000 → 100644+7−1
@@ -1 +0,0 @@
1−stack-7.10.2.yaml
@@ -0,0 +1,7 @@
1+resolver: lts-19.23
2+
3+packages:
4+- .
5+
6+nix:
7+ packages: [zlib]