git.iko.soy/typeable/pagerduty
on develop help sign in
37 files changed+498−400
since splitsnapshots
unifiedsplit
.gitignore+1 .travis.yml+30 Makefile−20 README.md+14 pagerduty.cabal+22−17 script/generate-pages−25 script/travis-lifecycle-before_install+11 script/travis-lifecycle-install+13 script/travis-lifecycle-script+9 script/travis-timeout+15 script/upload-documentation−37 src/Control/Monad/Trans/PagerDuty.hs+15−50 src/Network/PagerDuty/Integration.hs+12−6 src/Network/PagerDuty/Internal/IO.hs+1−1 src/Network/PagerDuty/Internal/Options.hs+4−4 src/Network/PagerDuty/Internal/Query.hs+14−12 src/Network/PagerDuty/Internal/TH.hs+6−6 src/Network/PagerDuty/Internal/Types.hs+43−26 src/Network/PagerDuty/REST.hs+16−25 src/Network/PagerDuty/REST/Alerts.hs+7−7 src/Network/PagerDuty/REST/EscalationPolicies.hs+14−14 src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+10−10 src/Network/PagerDuty/REST/Incidents.hs+5−4 src/Network/PagerDuty/REST/Incidents/Notes.hs+12−12 src/Network/PagerDuty/REST/LogEntries.hs+6−7 src/Network/PagerDuty/REST/MaintenanceWindows.hs+10−10 src/Network/PagerDuty/REST/Reports.hs+11−11 src/Network/PagerDuty/REST/Schedules.hs+14−14 src/Network/PagerDuty/REST/Schedules/Overrides.hs+12−12 src/Network/PagerDuty/REST/Services.hs+16−16 src/Network/PagerDuty/REST/Services/EmailFilters.hs+14−14 src/Network/PagerDuty/REST/Users.hs+17−17 src/Network/PagerDuty/REST/Users/ContactMethods.hs+10−10 src/Network/PagerDuty/REST/Users/NotificationRules.hs+10−10 src/Network/PagerDuty/REST/Webhooks.hs+4−3 src/Network/PagerDuty/Types.hs+93 stack.yaml+7
.gitignore+1
@@ -9,6 +9,7 @@
99cabal.sandbox.config
1010
1111# Dirs
12+.stack-work
1213cabal-dev
1314bin
1415dist
.travis.ymlnew file+30
@@ -0,0 +1,30 @@
1+sudo: false
2+
3+cache:
4+ apt: true
5+ directories:
6+ - ~/.stack
7+
8+branches:
9+ only:
10+ - master
11+ - develop
12+
13+before_install:
14+ - export PATH=/opt/ghc/$GHCVER/bin:$PATH
15+ - export PATH=~/.local/bin:$PATH
16+ - ./script/travis-lifecycle-before_install
17+
18+install:
19+ - ./script/travis-lifecycle-install
20+
21+script:
22+ - ./script/travis-lifecycle-script
23+
24+matrix:
25+ fast_finish: true
26+ 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] } }
Makefiledeleted−20
@@ -1,20 +0,0 @@
1−FLAGS := -j --disable-documentation --disable-library-coverage
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) --only-dependencies
11−
12−clean:
13− cabal clean
14− rm -rf cabal.sandbox.config .cabal-sandbox
15−
16−doc:
17− cabal haddock
18−
19−cabal.sandbox.config:
20− cabal sandbox init
README.md+14
@@ -0,0 +1,14 @@
1+# PagerDuty
2+
3+[![Build Status](https://travis-ci.org/brendanhay/amazonka.svg?branch=develop)](https://travis-ci.org/brendanhay/pagerduty)
4+
5+* [Contribute](#contribute)
6+* [Licence](#licence)
7+
8+## Contribute
9+
10+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/pagerduty/issues).
11+
12+## Licence
13+
14+PagerDuty is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
pagerduty.cabal+22−17
@@ -1,12 +1,12 @@
11name: pagerduty
2−version: 0.0.0
2+version: 0.0.8
33synopsis: Client library for PagerDuty Integration and REST APIs.
44homepage: http://github.com/brendanhay/pagerduty
55license: OtherLicense
66license-file: LICENSE
77author: Brendan Hay
88maintainer: Brendan Hay <brendan.g.hay@gmail.com>
9−copyright: Copyright (c) 2013-2014 Brendan Hay, 2014 Kim Altintop
9+copyright: Copyright (c) 2013-2015 Brendan Hay, 2014 Kim Altintop
1010category: Network, PagerDuty, Monitoring
1111build-type: Simple
1212cabal-version: >= 1.10
@@ -20,10 +20,13 @@ description:
2020 are documented here:
2121 .
2222 * Integration API - <http://developer.pagerduty.com/documentation/integration>
23+ .
2324 * REST API - <http://developer.pagerduty.com/documentation/rest>
2425 .
2526 /Warning:/ This is an experimental preview release which is still under
2627 heavy development and not intended for public consumption, caveat emptor!
28+ .
29+ /Note:/ An alternative source for Haddock documentation can be found <http://brendanhay.nz/pagerduty here>.
2730
2831extra-source-files:
2932 README.md
@@ -65,28 +68,30 @@ library
6568 , Network.PagerDuty.Internal.Query
6669 , Network.PagerDuty.Internal.TH
6770 , Network.PagerDuty.Internal.Types
71+ , Network.PagerDuty.Types
6872
6973 build-depends:
70− aeson > 0.7 && <= 0.8
71− , base >= 4.5 && < 5.0
72− , bifunctors >= 4
74+ aeson >= 2.0
75+ , base >= 4.7 && < 5
76+ , bifunctors >= 4.1
7377 , bytestring >= 0.9
7478 , bytestring-conversion >= 0.2.1
75− , conduit >= 0.5.5
79+ , conduit > 1.1
7680 , data-default-class >= 0.0.1
7781 , exceptions >= 0.6
78− , generics-sop >= 0.1.0.2
79− , http-client >= 0.3.6
82+ , generics-sop >= 0.5.0.0
83+ , http-client >= 0.5 && < 1
8084 , http-types >= 0.8
81− , lens >= 4.0
82− , lens-aeson >= 1.0
83− , mmorph >= 1.0
84− , monad-control >= 0.3.2
85− , mtl >= 2.2.1
86− , old-locale >= 1.0.0.5
85+ , lens >= 4.4
86+ , lens-aeson >= 1
87+ , mmorph >= 1
88+ , monad-control >= 1
89+ , mtl >= 2.1.3.1
8790 , template-haskell >= 2.2
8891 , text >= 1.1
89− , time == 1.4.*
90− , transformers >= 0.4.1
91− , transformers-base >= 0.4.1
92+ , time >= 1.2
93+ , time-locale-compat >= 0.1.0.1
94+ , transformers >= 0.2
95+ , transformers-compat >= 0.3
96+ , transformers-base >= 0.4.2
9297 , unordered-containers >= 0.2.3
script/generate-pagesdeleted−25
@@ -1,25 +0,0 @@
1−#!/usr/bin/env bash
2−
3−set -e
4−set -x
5−set -o errexit
6−
7−branch=$(git symbolic-ref -q HEAD)
8−branch=${branch##refs/heads/}
9−branch=${branch:-HEAD}
10−
11−cabal configure --disable-tests
12−
13−DOCDIR=`mktemp -d -t pages.XXXXXX`
14−cabal haddock --haddock-option=-o$DOCDIR
15−
16−HEAD=`git rev-parse HEAD`
17−
18−git checkout gh-pages
19−
20−mv $DOCDIR/* .
21−
22−git add *.html *.js *.css *.gif *.png
23−git commit -m "Generated documentation from $HEAD on $branch"
24−git push origin gh-pages
25−git checkout $branch
script/travis-lifecycle-before_installnew file+11
@@ -0,0 +1,11 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+mkdir -p ~/.local/bin
6+
7+curl -L https://www.stackage.org/stack/linux-x86_64 | \
8+ tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
9+
10+ghc --version
11+stack --version
script/travis-lifecycle-installnew file+13
@@ -0,0 +1,13 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+GHCVER=${GHCVER?"GHCVER needs to be set."}
6+
7+path=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
8+
9+$path/travis-timeout \
10+ stack --no-terminal --skip-ghc-check --stack-yaml stack-$GHCVER.yaml setup
11+
12+$path/travis-timeout \
13+ stack --no-terminal --skip-ghc-check --stack-yaml stack-$GHCVER.yaml test pagerduty --only-snapshot
script/travis-lifecycle-scriptnew file+9
@@ -0,0 +1,9 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+GHCVER=${GHCVER?"GHCVER needs to be set."}
6+
7+path=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
8+
9+stack --no-terminal --skip-ghc-check --stack-yaml stack-$GHCVER.yaml test pagerduty
script/travis-timeoutnew file+15
@@ -0,0 +1,15 @@
1+#!/usr/bin/env bash
2+
3+$* &
4+pidA=$!
5+minutes=0
6+
7+while true; do sleep 60; ((minutes++)); echo -e "\033[0;32m$minutes minute(s) elapsed running '$*'\033[0m."; done &
8+pidB=$!
9+wait $pidA
10+resA=$?
11+
12+echo -e "\033[0;32m'$*' exited with status ${resA}.\033[0m"
13+kill -9 $pidB
14+
15+exit $resA
script/upload-documentationdeleted−37
@@ -1,37 +0,0 @@
1−#!/usr/bin/env bash
2−
3−set -e
4−
5−package=${PWD##*/}
6−
7−echo "Package: ${package}"
8−read -p "Version: " version
9−read -p "Hackage user: " user
10−read -sp "Hackage password (not echoed): " password
11−
12−echo
13−echo "BUILDING"
14−echo
15−
16−cabal configure
17−cabal build
18−cabal haddock \
19− --hyperlink-source \
20− --html-location='/package/$pkg-$version/docs' \
21− --contents-location='/package/$pkg'
22−
23−echo
24−echo "ARCHIVING"
25−echo
26−
27−cd dist/doc/html
28−DDIR="${package}-${version}-docs"
29−cp -r "${package}" "${DDIR}" && gtar -c -v -z -Hustar -f "${DDIR}.tar.gz" "${DDIR}"
30−
31−echo
32−echo "UPLOADING"
33−echo
34−
35−curl -X PUT -H 'Content-Type: application/x-tar' \
36− -H 'Content-Encoding: gzip' --data-binary "@${DDIR}.tar.gz" \
37− "http://${user}:${password}@hackage.haskell.org/package/${package}-${version}/docs"
src/Control/Monad/Trans/PagerDuty.hs+15−50
@@ -3,12 +3,11 @@
33{-# LANGUAGE FlexibleInstances #-}
44{-# LANGUAGE GeneralizedNewtypeDeriving #-}
55{-# LANGUAGE MultiParamTypeClasses #-}
6−{-# LANGUAGE TemplateHaskell #-}
76{-# LANGUAGE TypeFamilies #-}
87{-# LANGUAGE UndecidableInstances #-}
98
109-- Module : Control.Monad.Trans.PagerDuty
11−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1211-- License : This Source Code Form is subject to the terms of
1312-- the Mozilla Public License, v. 2.0.
1413-- A copy of the MPL can be found in the LICENSE file or
@@ -26,19 +25,6 @@ module Control.Monad.Trans.PagerDuty
2625 -- * Running
2726 , runPagerDutyT
2827
29− -- * Configuration
30− -- ** Environment
31− , Env
32− , envDomain
33− , envAuth
34− , envManager
35− , envLogger
36− , scoped
37−
38− -- ** Logging
39− , Logger (..)
40− , debug
41−
4228 -- * Integration events
4329 , submit
4430 , submitCatch
@@ -49,45 +35,28 @@ module Control.Monad.Trans.PagerDuty
4935 , paginate
5036 , paginateCatch
5137
52− -- * Errors
53− , Error(..)
54− , _Internal
55− , _Integration
56− , _REST
57−
58− -- ** Integration
59− , IntegrationError
60− , status
61−
62− -- ** REST
63− , RESTError
64− , code
65−
66− -- ** Code
67− , Code (..)
68− , description
69−
70− -- ** Fields
71− , message
72− , errors
73−
74− -- ** Lifting
38+ -- ** Lifting errors
7539 , hoistError
40+
41+ , module Network.PagerDuty.Types
7642 ) where
7743
7844import Control.Applicative
45+import Control.Monad
7946import Control.Monad.Base
8047import Control.Monad.Catch
81−import Control.Monad.Except
48+import Control.Monad.Except (MonadError (..))
8249import Control.Monad.Morph
8350import Control.Monad.Reader
8451import Control.Monad.Trans.Control
52+import Control.Monad.Trans.Except
8553import Data.Aeson
8654import Data.Conduit
8755import Network.PagerDuty.Integration (Event, Response)
8856import qualified Network.PagerDuty.Integration as Int
8957import Network.PagerDuty.Internal.Types
9058import qualified Network.PagerDuty.REST as REST
59+import Network.PagerDuty.Types
9160
9261-- | A convenient alias for 'PagerDutyT' 'IO'.
9362type PagerDuty s = PagerDutyT s IO
@@ -114,28 +83,24 @@ instance MonadBase b m => MonadBase b (PagerDutyT s m) where
11483 {-# INLINE liftBase #-}
11584
11685instance MonadTransControl (PagerDutyT s) where
117− newtype StT (PagerDutyT s) a = StTPDT
118− { unStT :: StT (ExceptT Error) (StT (ReaderT (Env s)) a)
119− }
86+ type StT (PagerDutyT s) a = StT (ExceptT Error) (StT (ReaderT (Env s)) a)
12087
12188 liftWith f = PagerDutyT $
12289 liftWith $ \g ->
123− liftWith $ \h ->
124− f (liftM StTPDT . h . g . unPagerDutyT)
90+ liftWith $ \h ->
91+ f (h . g . unPagerDutyT)
12592 {-# INLINE liftWith #-}
12693
127− restoreT = PagerDutyT . restoreT . restoreT . liftM unStT
94+ restoreT = PagerDutyT . restoreT . restoreT
12895 {-# INLINE restoreT #-}
12996
13097instance MonadBaseControl b m => MonadBaseControl b (PagerDutyT s m) where
131− newtype StM (PagerDutyT s m) a = StMPDT
132− { unStMPDT :: ComposeSt (PagerDutyT s) m a
133− }
98+ type StM (PagerDutyT s m) a = ComposeSt (PagerDutyT s) m a
13499
135− liftBaseWith = defaultLiftBaseWith StMPDT
100+ liftBaseWith = defaultLiftBaseWith
136101 {-# INLINE liftBaseWith #-}
137102
138− restoreM = defaultRestoreM unStMPDT
103+ restoreM = defaultRestoreM
139104 {-# INLINE restoreM #-}
140105
141106instance MFunctor (PagerDutyT s) where
src/Network/PagerDuty/Integration.hs+12−6
@@ -6,7 +6,7 @@
66{-# LANGUAGE TemplateHaskell #-}
77
88-- Module : Network.PagerDuty.Integration
9−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
9+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1010-- License : This Source Code Form is subject to the terms of
1111-- the Mozilla Public License, v. 2.0.
1212-- A copy of the MPL can be found in the LICENSE file or
@@ -56,7 +56,7 @@ module Network.PagerDuty.Integration
5656 , Resolve
5757 , resolve
5858
59− -- * Event fields
59+ -- * Fields
6060 , HasServiceKey (..)
6161 , HasIncidentKey (..)
6262 , HasDescription (..)
@@ -72,19 +72,23 @@ module Network.PagerDuty.Integration
7272 , rsStatus
7373 , rsMessage
7474 , rsIncidentKey
75+
76+ , Generic
77+
78+ , module Network.PagerDuty.Types
7579 ) where
7680
7781import Control.Lens
7882import Control.Monad.IO.Class
7983import Data.Aeson
80−import Data.Default.Class
81−import qualified Data.HashMap.Strict as Map
84+import qualified Data.Aeson.KeyMap as Map
8285import Data.Text (Text)
8386import Network.HTTP.Client (Manager)
8487import qualified Network.HTTP.Client as Client
8588import Network.PagerDuty.Internal.IO
8689import Network.PagerDuty.Internal.TH
8790import Network.PagerDuty.Internal.Types
91+import Network.PagerDuty.Types hiding (description, message)
8892
8993data Response = Response
9094 { _rsStatus :: Text
@@ -287,6 +291,8 @@ submitWith :: MonadIO m
287291 -> Event
288292 -> m (Either Error Response)
289293submitWith m l e = request m l e $
290− def { Client.host = "events.pagerduty.com"
291− , Client.path = "/generic/2010-04-15/create_event.json"
294+ Client.defaultRequest
295+ { Client.host = "events.pagerduty.com"
296+ , Client.path = "/generic/2010-04-15/create_event.json"
297+ , Client.method = "POST"
292298 }
src/Network/PagerDuty/Internal/IO.hs+1−1
@@ -2,7 +2,7 @@
22{-# LANGUAGE ScopedTypeVariables #-}
33
44-- Module : Network.PagerDuty.Internal.IO
5−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
5+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
66-- License : This Source Code Form is subject to the terms of
77-- the Mozilla Public License, v. 2.0.
88-- A copy of the MPL can be found in the LICENSE file or
src/Network/PagerDuty/Internal/Options.hs+4−4
@@ -1,5 +1,5 @@
11-- Module : Network.PagerDuty.Internal.Options
2−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
2+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
33-- License : This Source Code Form is subject to the terms of
44-- the Mozilla Public License, v. 2.0.
55-- A copy of the MPL can be found in the LICENSE file or
@@ -14,9 +14,9 @@ module Network.PagerDuty.Internal.Options
1414 , underscored
1515 ) where
1616
17−import Data.Aeson.Types
18−import Data.Char
19−import Data.List
17+import Data.Aeson.Types
18+import Data.Char
19+import Data.List
2020
2121dropped :: Int -> Options -> Options
2222dropped n o = o
src/Network/PagerDuty/Internal/Query.hs+14−12
@@ -1,12 +1,13 @@
11{-# LANGUAGE ConstraintKinds #-}
22{-# LANGUAGE DefaultSignatures #-}
3+{-# LANGUAGE FlexibleContexts #-}
34{-# LANGUAGE GADTs #-}
45{-# LANGUAGE OverloadedStrings #-}
56{-# LANGUAGE ScopedTypeVariables #-}
67{-# LANGUAGE TupleSections #-}
78
89-- Module : Network.PagerDuty.Internal.Query
9−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1011-- License : This Source Code Form is subject to the terms of
1112-- the Mozilla Public License, v. 2.0.
1213-- A copy of the MPL can be found in the LICENSE file or
@@ -23,14 +24,14 @@ module Network.PagerDuty.Internal.Query
2324
2425import Data.Aeson.Types
2526import Data.Bifunctor
26−import Data.ByteString (ByteString)
27−import qualified Data.ByteString.Char8 as BS
27+import Data.ByteString (ByteString)
28+import qualified Data.ByteString.Char8 as BS
2829import Data.ByteString.Conversion
29−import Data.Function (on)
30−import Data.List (groupBy)
31−import Data.Monoid ((<>))
32−import Data.Text (Text)
33−import qualified Data.Text.Encoding as Text
30+import Data.Function (on)
31+import Data.List (groupBy)
32+import Data.Monoid ((<>))
33+import Data.Text (Text)
34+import qualified Data.Text.Encoding as Text
3435import Generics.SOP
3536import Network.HTTP.Types
3637import Network.PagerDuty.Internal.Options
@@ -58,14 +59,15 @@ gqueryWith :: forall a. (Generic a, HasDatatypeInfo a, All2 QueryValues (Code a)
5859 -> a
5960 -> Query
6061gqueryWith o a = case datatypeInfo (Proxy :: Proxy a) of
61− ADT _ _ cs -> go cs (from a)
62− Newtype _ _ c -> go (c :* Nil) (from a)
62+ ADT _ _ cs _ -> go cs (from a)
63+ Newtype _ _ c -> go (c :* Nil) (from a)
6364 where
64− go :: (All2 QueryValues xss, SingI xss)
65+ go :: (All2 QueryValues xss, SListI xss)
6566 => NP ConstructorInfo xss
6667 -> SOP I xss
6768 -> Query
68− 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
6971
7072 group :: [(ByteString, ByteString)] -> Query
7173 group = concatMap f . groupBy ((==) `on` fst)
src/Network/PagerDuty/Internal/TH.hs+6−6
@@ -1,7 +1,7 @@
11{-# LANGUAGE TemplateHaskell #-}
22
33-- Module : Network.PagerDuty.Internal.TH
4−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
4+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
55-- License : This Source Code Form is subject to the terms of
66-- the Mozilla Public License, v. 2.0.
77-- A copy of the MPL can be found in the LICENSE file or
@@ -40,15 +40,15 @@ module Network.PagerDuty.Internal.TH
4040
4141import Control.Applicative
4242import Control.Lens
43−import qualified Data.Aeson.TH as Aeson
43+import qualified Data.Aeson.TH as Aeson
4444import Data.Aeson.Types
45−import Data.ByteString (ByteString)
46−import qualified Data.Text.Encoding as Text
45+import Data.ByteString (ByteString)
46+import qualified Data.Text.Encoding as Text
4747import Generics.SOP.TH
4848import Language.Haskell.TH
4949import Network.HTTP.Types.QueryLike
50−import Network.PagerDuty.Internal.Query
5150import Network.PagerDuty.Internal.Options
51+import Network.PagerDuty.Internal.Query
5252
5353jsonRequest :: Name -> Q [Dec]
5454jsonRequest n = concat <$> sequence
@@ -61,7 +61,7 @@ queryRequest :: Name -> Q [Dec]
6161queryRequest n = concat <$> sequence
6262 [ deriveGeneric n
6363 , makeLenses n
64− , [d|instance ToJSON $(conT n) where toJSON = const (toJSON (object []))|]
64+ , [d|instance ToJSON $(conT n) where toJSON = const emptyObject|]
6565 , [d|instance QueryLike $(conT n) where toQuery = gquery|]
6666 ]
6767
src/Network/PagerDuty/Internal/Types.hs+43−26
@@ -15,7 +15,7 @@
1515{-# LANGUAGE ViewPatterns #-}
1616
1717-- Module : Network.PagerDuty.Internal.Types
18−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
18+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1919-- License : This Source Code Form is subject to the terms of
2020-- the Mozilla Public License, v. 2.0.
2121-- A copy of the MPL can be found in the LICENSE file or
@@ -27,35 +27,33 @@
2727module Network.PagerDuty.Internal.Types where
2828
2929import Control.Applicative
30−import Control.Lens hiding ((.=))
30+import 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 System.Locale
54−
55−-- FIXME: Verify IncidentId/IncidentKey .. *Id/*Key are actually different or needed
53+import Data.Time.Locale.Compat
5654
5755newtype CSV a = CSV [a]
58− deriving (Eq, Show, Monoid)
56+ deriving (Eq, Show, Semigroup, Monoid)
5957
6058makePrisms ''CSV
6159
@@ -72,7 +70,7 @@ instance ToByteString a => ToJSON (CSV a) where
7270 toJSON = String . Text.decodeUtf8 . toByteString'
7371
7472newtype List a = L [a]
75− deriving (Eq, Show, Monoid)
73+ deriving (Eq, Show, Semigroup, Monoid)
7674
7775deriveJSON ''List
7876makePrisms ''List
@@ -108,7 +106,7 @@ instance ToJSON Date where
108106
109107instance ToByteString Date where
110108 builder (D d) = builder
111− (formatTime defaultTimeLocale (iso8601DateFormat $ Just "%XZ") d)
109+ (formatTime defaultTimeLocale ("%Y-%m-%dT%XZ") d)
112110
113111instance QueryValues Date
114112
@@ -135,14 +133,17 @@ data Security = Basic | Token
135133 deriving (Eq, Show)
136134
137135data Auth (a :: Security) where
138− AuthBasic :: ByteString -> ByteString -> Auth Basic
139− AuthToken :: ByteString -> Auth Token
136+ AuthBasic :: ByteString -> ByteString -> Auth 'Basic
137+ AuthToken :: ByteString -> Auth 'Token
140138
141139deriving instance Eq (Auth a)
142140deriving instance Show (Auth a)
143141
144142newtype SubDomain = SubDomain { subDomain :: ByteString }
145− deriving (Eq, Show, IsString)
143+ deriving (Eq, Show, IsString, ToByteString)
144+
145+mkSubDomain :: ByteString -> SubDomain
146+mkSubDomain = SubDomain
146147
147148domain :: SubDomain -> ByteString
148149domain (SubDomain s)
@@ -179,7 +180,7 @@ prod :: SubDomain -> Auth s -> Manager -> Env s
179180prod d a m = Env d a m None
180181
181182newtype Code = Code Integer
182− deriving (Eq, Show)
183+ deriving (Eq, Show, Num)
183184
184185deriveJSON ''Code
185186
@@ -278,8 +279,13 @@ data Pager = Pager
278279
279280makeLenses ''Pager
280281
281−instance FromJSON a => FromJSON (a, Maybe Pager) where
282− 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
283289 <$> parseJSON (Object o)
284290 <*> optional (parse o)
285291 where
@@ -304,11 +310,13 @@ data Path where
304310 Path :: Path
305311 Seg :: ToByteString a => a -> Path
306312
313+instance Semigroup Path where
314+ x <> Path = x
315+ Path <> y = y
316+ Seg x <> Seg y = Seg (builder x <> "/" <> builder y)
317+
307318instance Monoid Path where
308− mempty = Path
309− mappend x Path = x
310− mappend Path y = y
311− mappend (Seg x) (Seg y) = Seg (builder x <> "/" <> builder y)
319+ mempty = Path
312320
313321instance IsString Path where
314322 fromString = Seg
@@ -385,13 +393,13 @@ class Paginate a where
385393 next :: Request a s b -> Maybe Pager -> Maybe (Request a s b)
386394 next rq = maybe Nothing go
387395 where
388− go x | x^.pgTotal == 0 = Nothing
389− | otherwise = Just $
390− rq & pager ?~ (x & pgOffset +~ x^.pgTotal)
396+ go x | x ^. pgTotal == 0 = Nothing
397+ | otherwise = Just $
398+ rq & pager ?~ (x & pgOffset +~ x ^. pgTotal)
391399 & query %~ (add . clear)
392400 where
393401 add :: Query -> Query
394− add = maybe id ((:) . (k,) . Just . Text.encodeUtf8) (x^.pgQuery)
402+ add = maybe id ((:) . (k,) . Just . Text.encodeUtf8) (x ^. pgQuery)
395403
396404 clear :: Query -> Query
397405 clear = deleteBy ((==) `on` fst) (k, Nothing)
@@ -402,6 +410,9 @@ class Paginate a where
402410newtype Key (a :: Symbol) = Key Text
403411 deriving (Eq, Show, IsString)
404412
413+mkKey :: Text -> Key a
414+mkKey = Key
415+
405416instance FromJSON (Key a) where
406417 parseJSON = withText "key" (return . Key)
407418
@@ -422,6 +433,9 @@ type IncidentKey = Key "incident"
422433newtype Id (a :: Symbol) = Id Text
423434 deriving (Eq, Show, IsString)
424435
436+mkId :: Text -> Id a
437+mkId = Id
438+
425439instance FromJSON (Id a) where
426440 parseJSON = withText "id" (return . Id)
427441
@@ -469,7 +483,10 @@ instance QueryLike Empty where
469483 toQuery = const []
470484
471485newtype Address = Address Text
472− deriving (Eq, Show)
486+ deriving (Eq, Show, IsString)
487+
488+mkAddress :: Text -> Address
489+mkAddress = Address
473490
474491deriveJSON ''Address
475492makePrisms ''Address
src/Network/PagerDuty/REST.hs+16−25
@@ -2,7 +2,7 @@
22{-# LANGUAGE OverloadedStrings #-}
33
44-- Module : Network.PagerDuty.REST
5−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
5+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
66-- License : This Source Code Form is subject to the terms of
77-- the Mozilla Public License, v. 2.0.
88-- A copy of the MPL can be found in the LICENSE file or
@@ -13,22 +13,13 @@
1313
1414module Network.PagerDuty.REST
1515 (
16−
1716 -- * Sending requests
1817 send
19− , paginate
20−
21− -- * Configuration
22− -- ** Environment
23− , Env
24− , envDomain
25− , envAuth
26− , envManager
27− , envLogger
28−
29− -- ** Requests
3018 , sendWith
19+ , paginate
3120 , paginateWith
21+
22+ , module Network.PagerDuty.Types
3223 ) where
3324
3425import Control.Applicative
@@ -36,20 +27,21 @@ import Control.Lens
3627import Control.Monad
3728import Control.Monad.IO.Class
3829import Control.Monad.Trans
39−import Data.Aeson (FromJSON)
30+import Data.Aeson (FromJSON)
4031import Data.Conduit
41−import Data.Default.Class
4232import Data.Monoid
43−import Network.HTTP.Client (Manager)
44−import qualified Network.HTTP.Client as Client
33+import Network.HTTP.Client (Manager)
34+import qualified Network.HTTP.Client as Client
4535import Network.HTTP.Types
4636import Network.PagerDuty.Internal.IO
4737import Network.PagerDuty.Internal.Types
38+import Network.PagerDuty.Types
4839
4940-- FIXME: verify correct actions are all paginated
5041-- FIXME: Ensure RequesterId parameter is always most significant param
5142-- FIXME: add smart constructors for all types, for testing purposes
5243
44+-- | /See:/ 'sendWith'
5345send :: (MonadIO m, FromJSON b)
5446 => SubDomain
5547 -> Auth s
@@ -58,13 +50,13 @@ send :: (MonadIO m, FromJSON b)
5850 -> m (Either Error b)
5951send d a m = sendWith (prod d a m)
6052
61−-- | /See:/ 'sendWith'
6253sendWith :: (MonadIO m, FromJSON b)
6354 => Env s
6455 -> Request a s b
6556 -> m (Either Error b)
66−sendWith e = liftM (fmap fst) . http e
57+sendWith e = liftM (fmap _pgItem) . http e
6758
59+-- | /See:/ 'paginateWith'
6860paginate :: (MonadIO m, Paginate a, FromJSON b)
6961 => SubDomain
7062 -> Auth s
@@ -73,7 +65,6 @@ paginate :: (MonadIO m, Paginate a, FromJSON b)
7365 -> Source m (Either Error b)
7466paginate d a m = paginateWith (prod d a m)
7567
76−-- | /See:/ 'paginateWith'
7768paginateWith :: (MonadIO m, Paginate a, FromJSON b)
7869 => Env s
7970 -> Request a s b
@@ -82,15 +73,15 @@ paginateWith e = go
8273 where
8374 go rq = do
8475 rs <- lift (http e rq)
85− yield (fst <$> rs)
76+ yield (_pgItem <$> rs)
8677 either (const (return ()))
87− (maybe (return ()) go . next rq . snd)
78+ (maybe (return ()) go . next rq . _pgPager)
8879 rs
8980
9081http :: (MonadIO m, FromJSON b)
9182 => Env s
9283 -> Request a s b
93− -> m (Either Error (b, Maybe Pager))
84+ -> m (Either Error (Page b))
9485http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
9586 { Client.host = domain (e ^. envDomain)
9687 , Client.path = renderPath (rq ^. path)
@@ -98,7 +89,7 @@ http e rq = request (e ^. envManager) (e ^. envLogger) rq $ raw
9889 }
9990 where
10091 raw = case e ^. envAuth of
101− AuthBasic u p -> Client.applyBasicAuth u p def
102− AuthToken t -> def
92+ AuthBasic u p -> Client.applyBasicAuth u p Client.defaultRequest
93+ AuthToken t -> Client.defaultRequest
10394 { Client.requestHeaders = [("Authorization", "Token token=" <> t)]
10495 }
src/Network/PagerDuty/REST/Alerts.hs+7−7
@@ -4,7 +4,7 @@
44{-# LANGUAGE TypeFamilies #-}
55
66-- Module : Network.PagerDuty.REST.Alerts
7−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
7+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
88-- License : This Source Code Form is subject to the terms of
99-- the Mozilla Public License, v. 2.0.
1010-- A copy of the MPL can be found in the LICENSE file or
@@ -43,12 +43,12 @@ module Network.PagerDuty.REST.Alerts
4343 , alertAddress
4444 ) where
4545
46−import Control.Lens
47−import Data.Aeson.Lens
48−import Data.Time
49−import Network.PagerDuty.REST.Users (User)
50−import Network.PagerDuty.Internal.TH
51−import Network.PagerDuty.Internal.Types
46+import Control.Lens hiding (Empty)
47+import Data.Aeson.Lens
48+import Data.Time
49+import Network.PagerDuty.Internal.TH
50+import Network.PagerDuty.Internal.Types
51+import Network.PagerDuty.REST.Users (User)
5252
5353alerts :: Path
5454alerts = "alerts"
src/Network/PagerDuty/REST/EscalationPolicies.hs+14−14
@@ -1,13 +1,13 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.EscalationPolicies
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -60,15 +60,15 @@ module Network.PagerDuty.REST.EscalationPolicies
6060 , pServices
6161 ) where
6262
63−import Control.Lens
64−import Data.Aeson.Lens
65−import Data.Text (Text)
66−import Network.HTTP.Types
67−import Network.PagerDuty.REST.Services (Service)
68−import Network.PagerDuty.Internal.TH
69−import Network.PagerDuty.Internal.Types
63+import Control.Lens hiding (Empty)
64+import Data.Aeson.Lens
65+import Data.Text (Text)
66+import Network.HTTP.Types
67+import Network.PagerDuty.Internal.TH
68+import Network.PagerDuty.Internal.Types
69+import Network.PagerDuty.REST.Services (Service)
7070
71−import Network.PagerDuty.REST.EscalationPolicies.EscalationRules
71+import Network.PagerDuty.REST.EscalationPolicies.EscalationRules
7272
7373default (Path)
7474
src/Network/PagerDuty/REST/EscalationPolicies/EscalationRules.hs+10−10
@@ -1,12 +1,12 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
1+{-# LANGUAGE ExtendedDefaultRules #-}
2+{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
55
66{-# OPTIONS_GHC -fno-warn-type-defaults #-}
77
88-- Module : Network.PagerDuty.REST.EscalationPolicies.EscalationRules
9−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
9+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1010-- License : This Source Code Form is subject to the terms of
1111-- the Mozilla Public License, v. 2.0.
1212-- A copy of the MPL can be found in the LICENSE file or
@@ -64,15 +64,15 @@ module Network.PagerDuty.REST.EscalationPolicies.EscalationRules
6464 , rTargets
6565 ) where
6666
67−import Control.Applicative ((<$>))
68−import Control.Lens hiding ((.=))
67+import Control.Applicative ((<$>))
68+import Control.Lens hiding ((.=))
6969import Data.Aeson
70−import qualified Data.HashMap.Strict as Map
71−import Data.Text (Text)
70+import qualified Data.Aeson.KeyMap as Map
71+import Data.Text (Text)
7272import Network.HTTP.Types
73−import Network.PagerDuty.REST.Users
7473import Network.PagerDuty.Internal.TH
7574import Network.PagerDuty.Internal.Types
75+import Network.PagerDuty.REST.Users
7676
7777default (Path)
7878
src/Network/PagerDuty/REST/Incidents.hs+5−4
@@ -10,7 +10,7 @@
1010{-# OPTIONS_GHC -fno-warn-type-defaults #-}
1111
1212-- Module : Network.PagerDuty.REST.Incidents
13−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
13+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1414-- License : This Source Code Form is subject to the terms of
1515-- the Mozilla Public License, v. 2.0.
1616-- A copy of the MPL can be found in the LICENSE file or
@@ -130,9 +130,10 @@ module Network.PagerDuty.REST.Incidents
130130 ) where
131131
132132import Control.Applicative hiding (empty)
133−import Control.Lens
133+import Control.Lens hiding (Empty)
134134import Data.Aeson
135−import Data.ByteString.Conversion (ToByteString(..), toByteString')
135+import Data.ByteString.Conversion (ToByteString (..),
136+ toByteString')
136137import Data.Default.Class
137138import Data.Maybe
138139import Data.Monoid hiding (All)
@@ -566,7 +567,7 @@ updateIncidents r = auth updateIncidentsBasic & query .~ [("requester_id", r)]
566567
567568-- | A version of 'updateIncidents' which uses HTTP Basic authentication and
568569-- doesn't require a 'RequesterId'.
569−updateIncidentsBasic :: Request UpdateIncidents Basic [UpdatedIncidents]
570+updateIncidentsBasic :: Request UpdateIncidents 'Basic [UpdatedIncidents]
570571updateIncidentsBasic =
571572 mk UpdateIncidents
572573 { _uiIncidents' = []
src/Network/PagerDuty/REST/Incidents/Notes.hs+12−12
@@ -1,11 +1,11 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TemplateHaskell #-}
1+{-# LANGUAGE ExtendedDefaultRules #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE TemplateHaskell #-}
44
55{-# OPTIONS_GHC -fno-warn-type-defaults #-}
66
77-- Module : Network.PagerDuty.REST.Incidents.Notes
8−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
8+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
99-- License : This Source Code Form is subject to the terms of
1010-- the Mozilla Public License, v. 2.0.
1111-- A copy of the MPL can be found in the LICENSE file or
@@ -36,14 +36,14 @@ module Network.PagerDuty.REST.Incidents.Notes
3636 , nContent
3737 ) where
3838
39−import Control.Lens hiding ((.=))
40−import Data.Aeson
41−import Data.Text (Text)
42−import Data.Time
43−import Network.HTTP.Types
44−import Network.PagerDuty.REST.Users
45−import Network.PagerDuty.Internal.TH
46−import Network.PagerDuty.Internal.Types
39+import Control.Lens hiding ((.=))
40+import Data.Aeson
41+import Data.Text (Text)
42+import Data.Time
43+import Network.HTTP.Types
44+import Network.PagerDuty.Internal.TH
45+import Network.PagerDuty.Internal.Types
46+import Network.PagerDuty.REST.Users
4747
4848default (Path)
4949
src/Network/PagerDuty/REST/LogEntries.hs+6−7
@@ -5,7 +5,7 @@
55{-# LANGUAGE TypeFamilies #-}
66
77-- Module : Network.PagerDuty.REST.LogEntries
8−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
8+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
99-- License : This Source Code Form is subject to the terms of
1010-- the Mozilla Public License, v. 2.0.
1111-- A copy of the MPL can be found in the LICENSE file or
@@ -111,19 +111,18 @@ module Network.PagerDuty.REST.LogEntries
111111 , nAddress
112112 ) where
113113
114−import Control.Applicative
115−import Control.Lens
114+import 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
120−import Data.Text (Text)
121−import qualified Data.Text as Text
119+import Data.Text (Text)
120+import qualified Data.Text as Text
122121import Data.Time
123122import Network.HTTP.Types
124−import Network.PagerDuty.REST.Users (User)
125123import Network.PagerDuty.Internal.TH
126124import Network.PagerDuty.Internal.Types
125+import Network.PagerDuty.REST.Users (User)
127126
128127logs :: Path
129128logs = "log_entries"
src/Network/PagerDuty/REST/MaintenanceWindows.hs+10−10
@@ -4,7 +4,7 @@
44{-# LANGUAGE TypeFamilies #-}
55
66-- Module : Network.PagerDuty.REST.MaintenanceWindows
7−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
7+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
88-- License : This Source Code Form is subject to the terms of
99-- the Mozilla Public License, v. 2.0.
1010-- A copy of the MPL can be found in the LICENSE file or
@@ -74,14 +74,14 @@ module Network.PagerDuty.REST.MaintenanceWindows
7474 , mwServices
7575 ) where
7676
77−import Control.Lens
78−import Data.Monoid
79−import Data.Text (Text)
80−import Data.Time
81−import Network.HTTP.Types
82−import Network.PagerDuty.REST.Users (User)
83−import Network.PagerDuty.Internal.TH
84−import Network.PagerDuty.Internal.Types
77+import Control.Lens hiding (Empty)
78+import Data.Monoid
79+import Data.Text (Text)
80+import Data.Time
81+import Network.HTTP.Types
82+import Network.PagerDuty.Internal.TH
83+import Network.PagerDuty.Internal.Types
84+import Network.PagerDuty.REST.Users (User)
8585
8686windows :: Path
8787windows = "maintenance_windows"
@@ -214,7 +214,7 @@ createWindow r s e xs =
214214createWindowBasic :: UTCTime -- ^ 'cwStartTime'
215215 -> UTCTime -- ^ 'cwEndTime'
216216 -> [ServiceId] -- ^ 'cwServiceIds'
217− -> Request CreateWindow Basic MaintenanceWindow
217+ -> Request CreateWindow 'Basic MaintenanceWindow
218218createWindowBasic s e xs =
219219 mk CreateWindow
220220 { _cwRequesterId' = Nothing
src/Network/PagerDuty/REST/Reports.hs+11−11
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE ExtendedDefaultRules #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.Reports
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -58,11 +58,11 @@ module Network.PagerDuty.REST.Reports
5858 , irNumberOfIncidents
5959 ) where
6060
61−import Control.Lens
62−import Data.Aeson.Lens
63−import Data.Time
64−import Network.PagerDuty.Internal.TH
65−import Network.PagerDuty.Internal.Types
61+import Control.Lens hiding (Empty)
62+import Data.Aeson.Lens
63+import Data.Time
64+import Network.PagerDuty.Internal.TH
65+import Network.PagerDuty.Internal.Types
6666
6767default (Path)
6868
src/Network/PagerDuty/REST/Schedules.hs+14−14
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE ExtendedDefaultRules #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.Schedules
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -110,14 +110,14 @@ module Network.PagerDuty.REST.Schedules
110110 , sFinalSchedule
111111 ) where
112112
113−import Control.Lens hiding ((.=))
114−import Data.Aeson
115−import Data.Text (Text)
116−import Data.Time
117−import Network.HTTP.Types
118−import Network.PagerDuty.REST.Users (User)
119−import Network.PagerDuty.Internal.TH
120−import Network.PagerDuty.Internal.Types
113+import Control.Lens hiding (Empty, (.=))
114+import Data.Aeson
115+import Data.Text (Text)
116+import Data.Time
117+import Network.HTTP.Types
118+import Network.PagerDuty.Internal.TH
119+import Network.PagerDuty.Internal.Types
120+import Network.PagerDuty.REST.Users (User)
121121
122122default (Path)
123123
src/Network/PagerDuty/REST/Schedules/Overrides.hs+12−12
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE ExtendedDefaultRules #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.Schedules
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -50,12 +50,12 @@ module Network.PagerDuty.REST.Schedules.Overrides
5050 , oUser
5151 ) where
5252
53−import Control.Lens
54−import Data.Time
55−import Network.HTTP.Types
56−import Network.PagerDuty.REST.Users
57−import Network.PagerDuty.Internal.TH
58−import Network.PagerDuty.Internal.Types
53+import Control.Lens
54+import Data.Time
55+import Network.HTTP.Types
56+import Network.PagerDuty.Internal.TH
57+import Network.PagerDuty.Internal.Types
58+import Network.PagerDuty.REST.Users
5959
6060overrides :: ScheduleId -> Path
6161overrides i = "schedules" % i % "overrides"
src/Network/PagerDuty/REST/Services.hs+16−16
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE ExtendedDefaultRules #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.Services
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -106,14 +106,14 @@ module Network.PagerDuty.REST.Services
106106 , svcSeverityFilter
107107 ) where
108108
109−import Control.Lens
110−import Data.Aeson.Lens
111−import Data.Text (Text)
112−import Data.Time
113−import Network.HTTP.Types
114−import Network.PagerDuty.REST.Services.EmailFilters
115−import Network.PagerDuty.Internal.TH
116−import Network.PagerDuty.Internal.Types
109+import Control.Lens hiding (Empty)
110+import Data.Aeson.Lens
111+import Data.Text (Text)
112+import Data.Time
113+import Network.HTTP.Types
114+import Network.PagerDuty.Internal.TH
115+import Network.PagerDuty.Internal.Types
116+import Network.PagerDuty.REST.Services.EmailFilters
117117
118118default (Path)
119119
@@ -483,7 +483,7 @@ enableService r i =
483483
484484-- | A version of 'enableService' which uses HTTP Basic authentication and
485485-- doesn't require a 'RequesterId'.
486−enableServiceBasic :: ServiceId -> Request Empty Basic Empty
486+enableServiceBasic :: ServiceId -> Request Empty 'Basic Empty
487487enableServiceBasic i = empty & meth .~ PUT & path .~ services % i % "enable"
488488
489489-- | Disable a service. Once a service is disabled, it will not be able to
@@ -498,7 +498,7 @@ disableService r i =
498498
499499-- | A version of 'disableService' which uses HTTP Basic authentication and
500500-- doesn't require a 'RequesterId'.
501−disableServiceBasic :: ServiceId -> Request Empty Basic Empty
501+disableServiceBasic :: ServiceId -> Request Empty 'Basic Empty
502502disableServiceBasic i = empty & meth .~ PUT & path .~ services % i % "disable"
503503
504504-- | Regenerate a new service key for an existing service.
src/Network/PagerDuty/REST/Services/EmailFilters.hs+14−14
@@ -1,11 +1,11 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TemplateHaskell #-}
1+{-# LANGUAGE ExtendedDefaultRules #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE TemplateHaskell #-}
44
55{-# OPTIONS_GHC -fno-warn-type-defaults #-}
66
77-- Module : Network.PagerDuty.REST.Services.EmailFilters
8−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
8+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
99-- License : This Source Code Form is subject to the terms of
1010-- the Mozilla Public License, v. 2.0.
1111-- A copy of the MPL can be found in the LICENSE file or
@@ -39,15 +39,15 @@ module Network.PagerDuty.REST.Services.EmailFilters
3939 , efId
4040 ) where
4141
42−import Control.Applicative hiding (empty)
43−import Control.Lens hiding ((.=))
44−import Data.Aeson
45−import Data.Default.Class
46−import Data.Monoid
47−import Data.Text (Text)
48−import Network.HTTP.Types
49−import Network.PagerDuty.Internal.TH
50−import Network.PagerDuty.Internal.Types
42+import Control.Applicative hiding (empty)
43+import Control.Lens hiding ((.=))
44+import Data.Aeson
45+import Data.Default.Class
46+import Data.Monoid
47+import Data.Text (Text)
48+import Network.HTTP.Types
49+import Network.PagerDuty.Internal.TH
50+import Network.PagerDuty.Internal.Types
5151
5252default (Path)
5353
@@ -65,7 +65,7 @@ deriveNullaryWith hyphenated ''MatchMode
6565-- FIXME: Tighten up this type! Make the regex required for match/no-match and
6666-- encode the conditional invariants.
6767data EmailFilterInfo = EmailFilterInfo
68− { _efSubjectMode' :: Maybe MatchMode
68+ { _efSubjectMode' :: Maybe MatchMode
6969 , _efSubjectRegex' :: Maybe Text
7070 , _efBodyMode' :: Maybe MatchMode
7171 , _efBodyRegex' :: Maybe Text
src/Network/PagerDuty/REST/Users.hs+17−17
@@ -1,13 +1,13 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE ExtendedDefaultRules #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE TemplateHaskell #-}
5−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE DataKinds #-}
2+{-# LANGUAGE ExtendedDefaultRules #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+{-# LANGUAGE TypeFamilies #-}
66
77{-# OPTIONS_GHC -fno-warn-type-defaults #-}
88
99-- Module : Network.PagerDuty.REST.Users
10−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
10+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
1111-- License : This Source Code Form is subject to the terms of
1212-- the Mozilla Public License, v. 2.0.
1313-- A copy of the MPL can be found in the LICENSE file or
@@ -81,16 +81,16 @@ module Network.PagerDuty.REST.Users
8181 , uJobTitle
8282 ) where
8383
84−import Control.Applicative hiding (empty)
85−import Control.Lens hiding ((.=))
86−import Data.Aeson
87−import Data.Default.Class
88−import Data.Monoid
89−import Data.Text (Text)
90−import Data.Time
91−import Network.HTTP.Types
92−import Network.PagerDuty.Internal.TH
93−import Network.PagerDuty.Internal.Types
84+import Control.Applicative hiding (empty)
85+import Control.Lens hiding (Empty, (.=))
86+import Data.Aeson
87+import Data.Default.Class
88+import Data.Monoid
89+import Data.Text (Text)
90+import Data.Time
91+import Network.HTTP.Types
92+import Network.PagerDuty.Internal.TH
93+import Network.PagerDuty.Internal.Types
9494
9595default (Path)
9696
@@ -315,7 +315,7 @@ createUser r n e = auth (createUserBasic n e) & query .~ [("requester_id", r)]
315315-- doesn't require a 'RequesterId'.
316316createUserBasic :: Text -- ^ 'cuName'
317317 -> Address -- ^ 'cuEmail'
318− -> Request CreateUser Basic User
318+ -> Request CreateUser 'Basic User
319319createUserBasic n e =
320320 mk CreateUser
321321 { _cuName' = n
src/Network/PagerDuty/REST/Users/ContactMethods.hs+10−10
@@ -1,11 +1,11 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TemplateHaskell #-}
1+{-# LANGUAGE ExtendedDefaultRules #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE TemplateHaskell #-}
44
55{-# OPTIONS_GHC -fno-warn-type-defaults #-}
66
77-- Module : Network.PagerDuty.REST.Users.ContactMethods
8−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
8+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
99-- License : This Source Code Form is subject to the terms of
1010-- the Mozilla Public License, v. 2.0.
1111-- A copy of the MPL can be found in the LICENSE file or
@@ -56,12 +56,12 @@ module Network.PagerDuty.REST.Users.ContactMethods
5656 , Contact
5757 ) where
5858
59−import Control.Lens
60−import Data.Aeson.Lens
61−import Data.Text (Text)
62−import Network.HTTP.Types
63−import Network.PagerDuty.Internal.TH
64−import Network.PagerDuty.Internal.Types
59+import Control.Lens
60+import Data.Aeson.Lens
61+import Data.Text (Text)
62+import Network.HTTP.Types
63+import Network.PagerDuty.Internal.TH
64+import Network.PagerDuty.Internal.Types
6565
6666default (Path)
6767
src/Network/PagerDuty/REST/Users/NotificationRules.hs+10−10
@@ -1,11 +1,11 @@
1−{-# LANGUAGE ExtendedDefaultRules #-}
2−{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TemplateHaskell #-}
1+{-# LANGUAGE ExtendedDefaultRules #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE TemplateHaskell #-}
44
55{-# OPTIONS_GHC -fno-warn-type-defaults #-}
66
77-- Module : Network.PagerDuty.REST.Users.NotificationRules
8−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
8+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
99-- License : This Source Code Form is subject to the terms of
1010-- the Mozilla Public License, v. 2.0.
1111-- A copy of the MPL can be found in the LICENSE file or
@@ -51,12 +51,12 @@ module Network.PagerDuty.REST.Users.NotificationRules
5151 , rContactMethod
5252 ) where
5353
54−import Control.Lens
55−import Data.Aeson.Lens
56−import Network.HTTP.Types
57−import Network.PagerDuty.REST.Users.ContactMethods
58−import Network.PagerDuty.Internal.TH
59−import Network.PagerDuty.Internal.Types
54+import Control.Lens
55+import Data.Aeson.Lens
56+import Network.HTTP.Types
57+import Network.PagerDuty.Internal.TH
58+import Network.PagerDuty.Internal.Types
59+import Network.PagerDuty.REST.Users.ContactMethods
6060
6161default (Path)
6262
src/Network/PagerDuty/REST/Webhooks.hs+4−3
@@ -3,7 +3,7 @@
33{-# LANGUAGE TemplateHaskell #-}
44
55-- Module : Network.PagerDuty.REST.Webhooks
6−-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
6+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
77-- License : This Source Code Form is subject to the terms of
88-- the Mozilla Public License, v. 2.0.
99-- A copy of the MPL can be found in the LICENSE file or
@@ -35,13 +35,14 @@ module Network.PagerDuty.REST.Webhooks
3535import Control.Applicative hiding (empty)
3636import Control.Lens
3737import Data.Aeson
38−import Data.ByteString.Conversion (ToByteString(..), toByteString')
38+import Data.ByteString.Conversion (ToByteString (..),
39+ toByteString')
3940import Data.Text (Text)
4041import qualified Data.Text.Encoding as Text
4142import Data.Time
42−import Network.PagerDuty.REST.Incidents
4343import Network.PagerDuty.Internal.TH
4444import Network.PagerDuty.Internal.Types
45+import Network.PagerDuty.REST.Incidents
4546
4647data WebhookType
4748 = WTrigger
src/Network/PagerDuty/Types.hsnew file+93
@@ -0,0 +1,93 @@
1+-- Module : Network.PagerDuty.Types
2+-- Copyright : (c) 2013-2015 Brendan Hay <brendan.g.hay@gmail.com>
3+-- License : This Source Code Form is subject to the terms of
4+-- the Mozilla Public License, v. 2.0.
5+-- A copy of the MPL can be found in the LICENSE file or
6+-- you can obtain it at http://mozilla.org/MPL/2.0/.
7+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
8+-- Stability : experimental
9+-- Portability : non-portable (GHC extensions)
10+
11+module Network.PagerDuty.Types
12+ (
13+ -- * Configuration
14+ -- ** Environment
15+ Env
16+ , envDomain
17+ , envAuth
18+ , envManager
19+ , envLogger
20+
21+ -- ** Logging
22+ , Logger (..)
23+ , debug
24+
25+ -- * Types
26+ -- ** Requests
27+ , Paginate
28+ , Request
29+
30+ -- ** Errors
31+ , Error
32+ , _Internal
33+ , _Integration
34+ , _REST
35+ -- *** Messages
36+ , HasMessage (..)
37+ -- *** Fields
38+ , HasErrors (..)
39+ -- *** Integration
40+ , IntegrationError
41+ , status
42+ -- *** REST
43+ , RESTError
44+ , Code
45+ , code
46+ , description
47+
48+ -- ** Authentication
49+ , Security (..)
50+ , Auth (..)
51+
52+ -- ** Keys
53+ , Key
54+ , mkKey
55+ -- *** Aliases
56+ , ServiceKey
57+ , IncidentKey
58+
59+ -- ** Identifiers
60+ , Id
61+ , mkId
62+ -- *** Aliases
63+ , AlertId
64+ , ContactId
65+ , EmailFilterId
66+ , EscalationPolicyId
67+ , EscalationRuleId
68+ , IncidentId
69+ , LogEntryId
70+ , NoteId
71+ , NotificationRuleId
72+ , OverrideId
73+ , RequesterId
74+ , ScheduleId
75+ , ServiceId
76+ , UserId
77+ , VendorId
78+ , WebhookId
79+ , WindowId
80+
81+ -- ** SubDomain
82+ , SubDomain
83+ , mkSubDomain
84+
85+ -- ** Address
86+ , Address
87+ , mkAddress
88+
89+ -- ** Miscellaneous
90+ , Empty (..)
91+ ) where
92+
93+import Network.PagerDuty.Internal.Types
stack.yamlnew file+7
@@ -0,0 +1,7 @@
1+resolver: lts-19.23
2+
3+packages:
4+- .
5+
6+nix:
7+ packages: [zlib]