git.iko.soy/typeable/pagerduty
on develop help sign in
15 files changed+56−84
since splitsnapshots
unifiedsplit
.travis.yml+4−4 Makefile−22 pagerduty.cabal+5−5 script/travis-lifecycle-before_install+3−8 src/Control/Monad/Trans/PagerDuty.hs+2−1 src/Network/PagerDuty/Integration.hs+3−3 src/Network/PagerDuty/Internal/Query.hs+5−4 src/Network/PagerDuty/Internal/Types.hs+19−12 src/Network/PagerDuty/REST.hs+6−8 src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+1−1 src/Network/PagerDuty/REST/LogEntries.hs+1−2 src/Network/PagerDuty/REST/Users.hs−3 stack-7.10.2.yaml−5 stack-7.8.4.yaml−5 stack.yaml+7−1
.travis.yml+4−4
@@ -24,7 +24,7 @@ script:
2424matrix:
2525 fast_finish: true
2626 include:
27− - env: GHCVER=7.10.2
28− addons: { apt: { packages: [ghc-7.10.2], sources: [hvr-ghc] } }
29− - env: GHCVER=7.8.4
30− addons: { apt: { packages: [ghc-7.8.4], sources: [hvr-ghc] } }
27+ - env: GHCVER=8.0.1
28+ addons: { apt: { packages: [ghc-8.0.1], sources: [hvr-ghc] } }
29+ - env: GHCVER=7.10.3
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 @@
11name: pagerduty
2−version: 0.0.3.2
2+version: 0.0.8
33synopsis: Client library for PagerDuty Integration and REST APIs.
44homepage: http://github.com/brendanhay/pagerduty
55license: OtherLicense
@@ -71,16 +71,16 @@ library
7171 , Network.PagerDuty.Types
7272
7373 build-depends:
74− aeson >= 0.8 && < 0.10
75− , base >= 4.7 && < 5
74+ aeson >= 2.0
75+ , base >= 4.7 && < 5
7676 , bifunctors >= 4.1
7777 , bytestring >= 0.9
7878 , bytestring-conversion >= 0.2.1
7979 , conduit > 1.1
8080 , data-default-class >= 0.0.1
8181 , exceptions >= 0.6
82− , generics-sop >= 0.1.0.2
83− , http-client >= 0.4.3
82+ , generics-sop >= 0.5.0.0
83+ , http-client >= 0.5 && < 1
8484 , http-types >= 0.8
8585 , lens >= 4.4
8686 , lens-aeson >= 1
script/travis-lifecycle-before_install+3−8
@@ -2,15 +2,10 @@
22
33set -e
44
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
5+mkdir -p ~/.local/bin
86
9−mkdir -p $dir
10−
11−curl -L $remote | gunzip > $local
12−
13−chmod a+x $local
7+curl -L https://www.stackage.org/stack/linux-x86_64 | \
8+ tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
149
1510ghc --version
1611stack --version
src/Control/Monad/Trans/PagerDuty.hs+2−1
@@ -42,9 +42,10 @@ module Control.Monad.Trans.PagerDuty
4242 ) where
4343
4444import Control.Applicative
45+import Control.Monad
4546import Control.Monad.Base
4647import Control.Monad.Catch
47−import Control.Monad.Error (MonadError (..))
48+import Control.Monad.Except (MonadError (..))
4849import Control.Monad.Morph
4950import Control.Monad.Reader
5051import Control.Monad.Trans.Control
src/Network/PagerDuty/Integration.hs+3−3
@@ -81,8 +81,7 @@ module Network.PagerDuty.Integration
8181import Control.Lens
8282import Control.Monad.IO.Class
8383import Data.Aeson
84−import Data.Default.Class
85−import qualified Data.HashMap.Strict as Map
84+import qualified Data.Aeson.KeyMap as Map
8685import Data.Text (Text)
8786import Network.HTTP.Client (Manager)
8887import qualified Network.HTTP.Client as Client
@@ -292,7 +291,8 @@ submitWith :: MonadIO m
292291 -> Event
293292 -> m (Either Error Response)
294293submitWith m l e = request m l e $
295− def { Client.host = "events.pagerduty.com"
294+ Client.defaultRequest
295+ { Client.host = "events.pagerduty.com"
296296 , Client.path = "/generic/2010-04-15/create_event.json"
297297 , Client.method = "POST"
298298 }
src/Network/PagerDuty/Internal/Query.hs+5−4
@@ -59,14 +59,15 @@ gqueryWith :: forall a. (Generic a, HasDatatypeInfo a, All2 QueryValues (Code a)
5959 -> a
6060 -> Query
6161gqueryWith o a = case datatypeInfo (Proxy :: Proxy a) of
62− ADT _ _ cs -> go cs (from a)
63− Newtype _ _ c -> go (c :* Nil) (from a)
62+ ADT _ _ cs _ -> go cs (from a)
63+ Newtype _ _ c -> go (c :* Nil) (from a)
6464 where
65− go :: (All2 QueryValues xss, SingI xss)
65+ go :: (All2 QueryValues xss, SListI xss)
6666 => NP ConstructorInfo xss
6767 -> SOP I xss
6868 -> Query
69− go cs (SOP sop) = group . unI . hcollapse $ hcliftA2' p (gctor o) cs sop
69+ go cs (SOP sop) =
70+ group . hcollapse $ hcliftA2' p (gctor o) cs sop
7071
7172 group :: [(ByteString, ByteString)] -> Query
7273 group = concatMap f . groupBy ((==) `on` fst)
src/Network/PagerDuty/Internal/Types.hs+19−12
@@ -29,31 +29,31 @@ module Network.PagerDuty.Internal.Types where
2929import Control.Applicative
3030import Control.Lens hiding ((.=), Empty)
3131import 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
3334import Data.Aeson.Types (Parser)
3435import Data.ByteString (ByteString)
3536import qualified Data.ByteString.Char8 as BS
3637import Data.ByteString.Conversion hiding (List)
3738import Data.Default.Class
3839import Data.Function (on)
39−import qualified Data.HashMap.Strict as Map
4040import Data.List (deleteBy, intersperse)
4141import Data.Monoid
4242import Data.String
4343import Data.Text (Text)
4444import qualified Data.Text as Text
4545import qualified Data.Text.Encoding as Text
46−import Data.Time
46+import Data.Time (UTCTime, TimeZone, formatTime, utc, timeZoneName)
4747import GHC.TypeLits
4848import Network.HTTP.Client (Manager)
4949import Network.HTTP.Types
5050import Network.HTTP.Types.QueryLike
5151import Network.PagerDuty.Internal.Query
5252import Network.PagerDuty.Internal.TH
53−import Data.Time.Locale.Compat ()
53+import Data.Time.Locale.Compat
5454
5555newtype CSV a = CSV [a]
56− deriving (Eq, Show, Monoid)
56+ deriving (Eq, Show, Semigroup, Monoid)
5757
5858makePrisms ''CSV
5959
@@ -70,7 +70,7 @@ instance ToByteString a => ToJSON (CSV a) where
7070 toJSON = String . Text.decodeUtf8 . toByteString'
7171
7272newtype List a = L [a]
73− deriving (Eq, Show, Monoid)
73+ deriving (Eq, Show, Semigroup, Monoid)
7474
7575deriveJSON ''List
7676makePrisms ''List
@@ -279,8 +279,13 @@ data Pager = Pager
279279
280280makeLenses ''Pager
281281
282−instance FromJSON a => FromJSON (a, Maybe Pager) where
283− parseJSON = withObject "paginated" $ \o -> (,)
282+data Page a = Page
283+ { _pgItem :: a
284+ , _pgPager :: Maybe Pager
285+ }
286+
287+instance FromJSON a => FromJSON (Page a) where
288+ parseJSON = withObject "paginated" $ \o -> Page
284289 <$> parseJSON (Object o)
285290 <*> optional (parse o)
286291 where
@@ -305,11 +310,13 @@ data Path where
305310 Path :: Path
306311 Seg :: ToByteString a => a -> Path
307312
313+instance Semigroup Path where
314+ x <> Path = x
315+ Path <> y = y
316+ Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
317+
308318instance Monoid Path where
309− mempty = Path
310− mappend x Path = x
311− mappend Path y = y
312− mappend (Seg x) (Seg y) = Seg (builder x <> "/" <> builder y)
319+ mempty = Path
313320
314321instance IsString Path where
315322 fromString = Seg
src/Network/PagerDuty/REST.hs+6−8
@@ -13,7 +13,6 @@
1313
1414module Network.PagerDuty.REST
1515 (
16−
1716 -- * Sending requests
1817 send
1918 , sendWith
@@ -30,7 +29,6 @@ import Control.Monad.IO.Class
3029import Control.Monad.Trans
3130import Data.Aeson (FromJSON)
3231import Data.Conduit
33−import Data.Default.Class
3432import Data.Monoid
3533import Network.HTTP.Client (Manager)
3634import qualified Network.HTTP.Client as Client
@@ -56,7 +54,7 @@ sendWith :: (MonadIO m, FromJSON b)
5654 => Env s
5755 -> Request a s b
5856 -> m (Either Error b)
59−sendWith e = liftM (fmap fst) . http e
57+sendWith e = liftM (fmap _pgItem) . http e
6058
6159-- | /See:/ 'paginateWith'
6260paginate :: (MonadIO m, Paginate a, FromJSON b)
@@ -75,15 +73,15 @@ paginateWith e = go
7573 where
7674 go rq = do
7775 rs <- lift (http e rq)
78− yield (fst <$> rs)
76+ yield (_pgItem <$> rs)
7977 either (const (return ()))
80− (maybe (return ()) go . next rq . snd)
78+ (maybe (return ()) go . next rq . _pgPager)
8179 rs
8280
8381http :: (MonadIO m, FromJSON b)
8482 => Env s
8583 -> Request a s b
86− -> m (Either Error (b, Maybe Pager))
84+ -> m (Either Error (Page b))
8785http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
8886 { Client.host = domain (e ^. envDomain)
8987 , Client.path = renderPath (rq ^. path)
@@ -91,7 +89,7 @@ http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
9189 }
9290 where
9391 raw = case e ^. envAuth of
94− AuthBasic u p -> Client.applyBasicAuth u p def
95− AuthToken t -> def
92+ AuthBasic u p -> Client.applyBasicAuth u p Client.defaultRequest
93+ AuthToken t -> Client.defaultRequest
9694 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
9795 }
src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+1−1
@@ -67,7 +67,7 @@ module Network.PagerDuty.REST.EscalationPolicies.EscalationRules
6767import Control.Applicative ((<$>))
6868import Control.Lens hiding ((.=))
6969import Data.Aeson
70−import qualified Data.HashMap.Strict as Map
70+import qualified Data.Aeson.KeyMap as Map
7171import Data.Text (Text)
7272import Network.HTTP.Types
7373import Network.PagerDuty.Internal.TH
src/Network/PagerDuty/REST/LogEntries.hs+1−2
@@ -111,12 +111,11 @@ module Network.PagerDuty.REST.LogEntries
111111 , nAddress
112112 ) where
113113
114−import Control.Applicative
115114import Control.Lens hiding (Empty)
116115import Data.Aeson
117116import Data.Aeson.Lens
117+import qualified Data.Aeson.KeyMap as Map
118118import Data.Default.Class
119−import qualified Data.HashMap.Strict as Map
120119import Data.Text (Text)
121120import qualified Data.Text as Text
122121import Data.Time
src/Network/PagerDuty/REST/Users.hs−3
@@ -5,7 +5,6 @@
55{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
8−{-# OPTIONS_GHC -ddump-splices #-}
98
109-- Module : Network.PagerDuty.REST.Users
1110-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
@@ -85,8 +84,6 @@ module Network.PagerDuty.REST.Users
8584import Control.Applicative hiding (empty)
8685import Control.Lens hiding (Empty, (.=))
8786import Data.Aeson
88−import Data.ByteString (ByteString)
89−import Data.ByteString.Builder (Builder)
9087import Data.Default.Class
9188import Data.Monoid
9289import Data.Text (Text)
stack-7.10.2.yamldeleted−5
@@ -1,5 +0,0 @@
1−resolver: nightly-2015-10-24
2−flags: {}
3−extra-deps: []
4−packages:
5− - '.'
stack-7.8.4.yamldeleted−5
@@ -1,5 +0,0 @@
1−resolver: lts-2.21
2−flags: {}
3−extra-deps: []
4−packages:
5− - '.'
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]