git.iko.soy/typeable/pagerduty
on b6af651 help sign in
15 files changed+79−50
since splitsnapshots
unifiedsplit
.travis.yml+4−4 Makefile+22 pagerduty.cabal+5−5 script/travis-lifecycle-before_install+8−3 src/Control/Monad/Trans/PagerDuty.hs−1 src/Network/PagerDuty/Integration.hs+3−3 src/Network/PagerDuty/Internal/Query.hs+2−2 src/Network/PagerDuty/Internal/Types.hs+10−17 src/Network/PagerDuty/REST.hs+8−6 src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+1−1 src/Network/PagerDuty/REST/LogEntries.hs+2−1 src/Network/PagerDuty/REST/Users.hs+1 stack-7.10.2.yaml+6 stack-7.8.4.yaml+6 stack.yaml+1−7
.travis.yml+4−4
@@ -24,7 +24,7 @@ script:
2424matrix:
2525 fast_finish: true
2626 include:
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] } }
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] } }
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 @@
11name: pagerduty
2−version: 0.0.8
2+version: 0.0.5
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 >= 2.0
75− , base >= 4.7 && < 5
74+ aeson >= 0.8
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.5.0.0
83− , http-client >= 0.5 && < 1
82+ , generics-sop >= 0.2.0.0
83+ , http-client >= 0.4.3
8484 , http-types >= 0.8
8585 , lens >= 4.4
8686 , lens-aeson >= 1
script/travis-lifecycle-before_install+8−3
@@ -2,10 +2,15 @@
22
33set -e
44
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
68
7−curl -L https://www.stackage.org/stack/linux-x86_64 | \
8− tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
9+mkdir -p $dir
10+
11+curl -L $remote | gunzip > $local
12+
13+chmod a+x $local
914
1015ghc --version
1116stack --version
src/Control/Monad/Trans/PagerDuty.hs−1
@@ -42,7 +42,6 @@ module Control.Monad.Trans.PagerDuty
4242 ) where
4343
4444import Control.Applicative
45−import Control.Monad
4645import Control.Monad.Base
4746import Control.Monad.Catch
4847import Control.Monad.Except (MonadError (..))
src/Network/PagerDuty/Integration.hs+3−3
@@ -81,7 +81,8 @@ module Network.PagerDuty.Integration
8181import Control.Lens
8282import Control.Monad.IO.Class
8383import Data.Aeson
84−import qualified Data.Aeson.KeyMap as Map
84+import Data.Default.Class
85+import qualified Data.HashMap.Strict as Map
8586import Data.Text (Text)
8687import Network.HTTP.Client (Manager)
8788import qualified Network.HTTP.Client as Client
@@ -291,8 +292,7 @@ submitWith :: MonadIO m
291292 -> Event
292293 -> m (Either Error Response)
293294submitWith m l e = request m l e $
294− Client.defaultRequest
295− { Client.host = "events.pagerduty.com"
295+ def { 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+2−2
@@ -59,8 +59,8 @@ 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
6565 go :: (All2 QueryValues xss, SListI xss)
6666 => NP ConstructorInfo xss
src/Network/PagerDuty/Internal/Types.hs+10−17
@@ -29,14 +29,14 @@ 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, Key)
33−import qualified Data.Aeson.KeyMap as Map
32+import Data.Aeson hiding (Error)
3433import Data.Aeson.Types (Parser)
3534import Data.ByteString (ByteString)
3635import qualified Data.ByteString.Char8 as BS
3736import Data.ByteString.Conversion hiding (List)
3837import Data.Default.Class
3938import Data.Function (on)
39+import qualified Data.HashMap.Strict as Map
4040import Data.List (deleteBy, intersperse)
4141import Data.Monoid
4242import Data.String
@@ -53,7 +53,7 @@ import Network.PagerDuty.Internal.TH
5353import Data.Time.Locale.Compat
5454
5555newtype CSV a = CSV [a]
56− deriving (Eq, Show, Semigroup, Monoid)
56+ deriving (Eq, Show, 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, Semigroup, Monoid)
73+ deriving (Eq, Show, Monoid)
7474
7575deriveJSON ''List
7676makePrisms ''List
@@ -279,13 +279,8 @@ data Pager = Pager
279279
280280makeLenses ''Pager
281281
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
282+instance FromJSON a => FromJSON (a, Maybe Pager) where
283+ parseJSON = withObject "paginated" $ \o -> (,)
289284 <$> parseJSON (Object o)
290285 <*> optional (parse o)
291286 where
@@ -310,13 +305,11 @@ data Path where
310305 Path :: Path
311306 Seg :: ToByteString a => a -> Path
312307
313−instance Semigroup Path where
314− x <> Path = x
315− Path <> y = y
316− Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
317−
318308instance 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)
320313
321314instance IsString Path where
322315 fromString = Seg
src/Network/PagerDuty/REST.hs+8−6
@@ -13,6 +13,7 @@
1313
1414module Network.PagerDuty.REST
1515 (
16+
1617 -- * Sending requests
1718 send
1819 , sendWith
@@ -29,6 +30,7 @@ import Control.Monad.IO.Class
2930import Control.Monad.Trans
3031import Data.Aeson (FromJSON)
3132import Data.Conduit
33+import Data.Default.Class
3234import Data.Monoid
3335import Network.HTTP.Client (Manager)
3436import qualified Network.HTTP.Client as Client
@@ -54,7 +56,7 @@ sendWith :: (MonadIO m, FromJSON b)
5456 => Env s
5557 -> Request a s b
5658 -> m (Either Error b)
57−sendWith e = liftM (fmap _pgItem) . http e
59+sendWith e = liftM (fmap fst) . http e
5860
5961-- | /See:/ 'paginateWith'
6062paginate :: (MonadIO m, Paginate a, FromJSON b)
@@ -73,15 +75,15 @@ paginateWith e = go
7375 where
7476 go rq = do
7577 rs <- lift (http e rq)
76− yield (_pgItem <$> rs)
78+ yield (fst <$> rs)
7779 either (const (return ()))
78− (maybe (return ()) go . next rq . _pgPager)
80+ (maybe (return ()) go . next rq . snd)
7981 rs
8082
8183http :: (MonadIO m, FromJSON b)
8284 => Env s
8385 -> Request a s b
84− -> m (Either Error (Page b))
86+ -> m (Either Error (b, Maybe Pager))
8587http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
8688 { Client.host = domain (e ^. envDomain)
8789 , Client.path = renderPath (rq ^. path)
@@ -89,7 +91,7 @@ http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
8991 }
9092 where
9193 raw = case e ^. envAuth of
92− AuthBasic u p -> Client.applyBasicAuth u p Client.defaultRequest
93− AuthToken t -> Client.defaultRequest
94+ AuthBasic u p -> Client.applyBasicAuth u p def
95+ AuthToken t -> def
9496 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
9597 }
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.Aeson.KeyMap as Map
70+import qualified Data.HashMap.Strict as Map
7171import Data.Text (Text)
7272import Network.HTTP.Types
7373import Network.PagerDuty.Internal.TH
src/Network/PagerDuty/REST/LogEntries.hs+2−1
@@ -111,11 +111,12 @@ module Network.PagerDuty.REST.LogEntries
111111 , nAddress
112112 ) where
113113
114+import Control.Applicative
114115import Control.Lens hiding (Empty)
115116import Data.Aeson
116117import Data.Aeson.Lens
117−import qualified Data.Aeson.KeyMap as Map
118118import Data.Default.Class
119+import qualified Data.HashMap.Strict as Map
119120import Data.Text (Text)
120121import qualified Data.Text as Text
121122import Data.Time
src/Network/PagerDuty/REST/Users.hs+1
@@ -5,6 +5,7 @@
55{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
8+{-# OPTIONS_GHC -ddump-splices #-}
89
910-- Module : Network.PagerDuty.REST.Users
1011-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
stack-7.10.2.yamlnew file+6
@@ -0,0 +1,6 @@
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.yamlnew file+6
@@ -0,0 +1,6 @@
1+resolver: lts-2.21
2+flags: {}
3+extra-deps:
4+ - generics-sop-0.2.0.0
5+packages:
6+ - '.'
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