git.iko.soy/typeable/pagerduty
on ec96ddf 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=8.0.1
27+ - env: GHCVER=7.10.2
28− addons: { apt: { packages: [ghc-8.0.1], sources: [hvr-ghc] } }
28+ addons: { apt: { packages: [ghc-7.10.2], sources: [hvr-ghc] } }
29− - env: GHCVER=7.10.3
29+ - env: GHCVER=7.8.4
30− addons: { apt: { packages: [ghc-7.10.3], sources: [hvr-ghc] } }
30+ addons: { apt: { packages: [ghc-7.8.4], sources: [hvr-ghc] } }
Makefilenew file+22
@@ -0,0 +1,22 @@
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.8
2+version: 0.0.3.2
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 >= 2.0
74+ aeson >= 0.8 && < 0.10
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.5.0.0
82+ , generics-sop >= 0.1.0.2
83− , http-client >= 0.5 && < 1
83+ , http-client >= 0.4.3
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+8−3
@@ -2,10 +2,15 @@
2
2
3set -e
3set -e
4
4
5−mkdir -p ~/.local/bin
5+dir=~/.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
6
8
7−curl -L https://www.stackage.org/stack/linux-x86_64 | \
9+mkdir -p $dir
8− tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
10+
11+curl -L $remote | gunzip > $local
12+
13+chmod a+x $local
9
14
10ghc --version
15ghc --version
11stack --version
16stack --version
src/Control/Monad/Trans/PagerDuty.hs+1−2
@@ -42,10 +42,9 @@ module Control.Monad.Trans.PagerDuty
42 ) where
42 ) where
43
43
44import Control.Applicative
44import Control.Applicative
45−import Control.Monad
46import Control.Monad.Base
45import Control.Monad.Base
47import Control.Monad.Catch
46import Control.Monad.Catch
48−import Control.Monad.Except (MonadError (..))
47+import Control.Monad.Error (MonadError (..))
49import Control.Monad.Morph
48import Control.Monad.Morph
50import Control.Monad.Reader
49import Control.Monad.Reader
51import Control.Monad.Trans.Control
50import Control.Monad.Trans.Control
src/Network/PagerDuty/Integration.hs+3−3
@@ -81,7 +81,8 @@ 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
84−import qualified Data.Aeson.KeyMap as Map
85+import qualified Data.HashMap.Strict as Map
85import Data.Text (Text)
86import Data.Text (Text)
86import Network.HTTP.Client (Manager)
87import Network.HTTP.Client (Manager)
87import qualified Network.HTTP.Client as Client
88import qualified Network.HTTP.Client as Client
@@ -291,8 +292,7 @@ submitWith :: MonadIO m
291 -> Event
292 -> Event
292 -> m (Either Error Response)
293 -> m (Either Error Response)
293submitWith m l e = request m l e $
294submitWith m l e = request m l e $
294− Client.defaultRequest
295− { Client.host = "events.pagerduty.com"
295+ def { 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+4−5
@@ -59,15 +59,14 @@ 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, SingI xss)
66 => NP ConstructorInfo xss
66 => NP ConstructorInfo xss
67 -> SOP I xss
67 -> SOP I xss
68 -> Query
68 -> Query
69− go cs (SOP sop) =
70− group . hcollapse $ hcliftA2' p (gctor o) cs sop
69+ go cs (SOP sop) = group . unI . hcollapse $ hcliftA2' p (gctor o) cs sop
71
70
72 group :: [(ByteString, ByteString)] -> Query
71 group :: [(ByteString, ByteString)] -> Query
73 group = concatMap f . groupBy ((==) `on` fst)
72 group = concatMap f . groupBy ((==) `on` fst)
src/Network/PagerDuty/Internal/Types.hs+10−17
@@ -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, 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
@@ -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, Semigroup, Monoid)
56+ deriving (Eq, Show, 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, Semigroup, Monoid)
73+ deriving (Eq, Show, Monoid)
74
74
75deriveJSON ''List
75deriveJSON ''List
76makePrisms ''List
76makePrisms ''List
@@ -279,13 +279,8 @@ data Pager = Pager
279
279
280makeLenses ''Pager
280makeLenses ''Pager
281
281
282−data Page a = Page
282+instance FromJSON a => FromJSON (a, Maybe Pager) where
283− { _pgItem :: a
284− , _pgPager :: Maybe Pager
285− }
286−
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)
291 where
286 where
@@ -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
312
307
313−instance Semigroup Path where
314− x <> Path = x
315− Path <> y = y
316− Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
317−
318instance Monoid Path where
308instance Monoid Path where
319− mempty = Path
309+ mempty = Path
310+ mappend x Path = x
311+ mappend Path y = y
312+ mappend (Seg x) (Seg y) = Seg (builder x <> "/" <> builder y)
320
313
321instance IsString Path where
314instance IsString Path where
322 fromString = Seg
315 fromString = Seg
src/Network/PagerDuty/REST.hs+8−6
@@ -13,6 +13,7 @@
13
13
14module Network.PagerDuty.REST
14module Network.PagerDuty.REST
15 (
15 (
16+
16 -- * Sending requests
17 -- * Sending requests
17 send
18 send
18 , sendWith
19 , sendWith
@@ -29,6 +30,7 @@ import Control.Monad.IO.Class
29import Control.Monad.Trans
30import Control.Monad.Trans
30import Data.Aeson (FromJSON)
31import Data.Aeson (FromJSON)
31import Data.Conduit
32import Data.Conduit
33+import Data.Default.Class
32import Data.Monoid
34import Data.Monoid
33import Network.HTTP.Client (Manager)
35import Network.HTTP.Client (Manager)
34import qualified Network.HTTP.Client as Client
36import qualified Network.HTTP.Client as Client
@@ -54,7 +56,7 @@ sendWith :: (MonadIO m, FromJSON b)
54 => Env s
56 => Env s
55 -> Request a s b
57 -> Request a s b
56 -> m (Either Error b)
58 -> m (Either Error b)
57−sendWith e = liftM (fmap _pgItem) . http e
59+sendWith e = liftM (fmap fst) . http e
58
60
59-- | /See:/ 'paginateWith'
61-- | /See:/ 'paginateWith'
60paginate :: (MonadIO m, Paginate a, FromJSON b)
62paginate :: (MonadIO m, Paginate a, FromJSON b)
@@ -73,15 +75,15 @@ paginateWith e = go
73 where
75 where
74 go rq = do
76 go rq = do
75 rs <- lift (http e rq)
77 rs <- lift (http e rq)
76− yield (_pgItem <$> rs)
78+ yield (fst <$> rs)
77 either (const (return ()))
79 either (const (return ()))
78− (maybe (return ()) go . next rq . _pgPager)
80+ (maybe (return ()) go . next rq . snd)
79 rs
81 rs
80
82
81http :: (MonadIO m, FromJSON b)
83http :: (MonadIO m, FromJSON b)
82 => Env s
84 => Env s
83 -> Request a s b
85 -> Request a s b
84− -> m (Either Error (Page b))
86+ -> m (Either Error (b, Maybe Pager))
85http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
87http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
86 { Client.host = domain (e ^. envDomain)
88 { Client.host = domain (e ^. envDomain)
87 , Client.path = renderPath (rq ^. path)
89 , Client.path = renderPath (rq ^. path)
@@ -89,7 +91,7 @@ http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
89 }
91 }
90 where
92 where
91 raw = case e ^. envAuth of
93 raw = case e ^. envAuth of
92− AuthBasic u p -> Client.applyBasicAuth u p Client.defaultRequest
94+ AuthBasic u p -> Client.applyBasicAuth u p def
93− AuthToken t -> Client.defaultRequest
95+ AuthToken t -> def
94 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
96 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
95 }
97 }
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.Aeson.KeyMap as Map
70+import qualified Data.HashMap.Strict 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+2−1
@@ -111,11 +111,12 @@ module Network.PagerDuty.REST.LogEntries
111 , nAddress
111 , nAddress
112 ) where
112 ) where
113
113
114+import Control.Applicative
114import Control.Lens hiding (Empty)
115import Control.Lens hiding (Empty)
115import Data.Aeson
116import Data.Aeson
116import Data.Aeson.Lens
117import 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
119import Data.Text (Text)
120import Data.Text (Text)
120import qualified Data.Text as Text
121import qualified Data.Text as Text
121import Data.Time
122import Data.Time
src/Network/PagerDuty/REST/Users.hs+1
@@ -5,6 +5,7 @@
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 #-}
8
9
9-- Module : Network.PagerDuty.REST.Users
10-- Module : Network.PagerDuty.REST.Users
10-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
11-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
stack-7.10.2.yamlnew file+5
@@ -0,0 +1,5 @@
1+resolver: nightly-2015-10-24
2+flags: {}
3+extra-deps: []
4+packages:
5+ - '.'
stack-7.8.4.yamlnew file+5
@@ -0,0 +1,5 @@
1+resolver: lts-2.21
2+flags: {}
3+extra-deps: []
4+packages:
5+ - '.'
stack.yamlmode 100644 → 120000+1−7
@@ -1,7 +0,0 @@
1−resolver: lts-19.23
2−
3−packages:
4−- .
5−
6−nix:
7− packages: [zlib]
@@ -0,0 +1 @@
1+stack-7.10.2.yaml