packages feed

alerta 0.1.0.4 → 0.1.0.5

raw patch · 4 files changed

+118/−118 lines, 4 filesdep ~servantdep ~servant-clientdep ~servant-serverPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: servant, servant-client, servant-server

API changes (from Hackage documentation)

- Alerta: checkNonempty :: UserAttr u -> Either (UserAttr Empty) (UserAttr Nonempty)
+ Alerta: checkNonempty :: UserAttr u -> Either (UserAttr 'Empty) (UserAttr 'Nonempty)
- Alerta: emptyUserAttr :: UserAttr Empty
+ Alerta: emptyUserAttr :: UserAttr 'Empty
- Alerta: updateUser :: Maybe ApiKey -> UUID -> UserAttr Nonempty -> ClientM Resp
+ Alerta: updateUser :: Maybe ApiKey -> UUID -> UserAttr 'Nonempty -> ClientM Resp
- Alerta: withUserLogin :: UserAttr u -> Email -> UserAttr Nonempty
+ Alerta: withUserLogin :: UserAttr u -> Email -> UserAttr 'Nonempty
- Alerta: withUserName :: UserAttr u -> UserName -> UserAttr Nonempty
+ Alerta: withUserName :: UserAttr u -> UserName -> UserAttr 'Nonempty
- Alerta: withUserPassword :: UserAttr u -> Password -> UserAttr Nonempty
+ Alerta: withUserPassword :: UserAttr u -> Password -> UserAttr 'Nonempty
- Alerta: withUserProvider :: UserAttr u -> Provider -> UserAttr Nonempty
+ Alerta: withUserProvider :: UserAttr u -> Provider -> UserAttr 'Nonempty
- Alerta: withUserText :: UserAttr u -> Text -> UserAttr Nonempty
+ Alerta: withUserText :: UserAttr u -> Text -> UserAttr 'Nonempty

Files

alerta.cabal view
@@ -1,5 +1,5 @@ name:                alerta-version:             0.1.0.4+version:             0.1.0.5 synopsis:            Bindings to the alerta REST API homepage:            https://github.com/mjhopkins/alerta-client bug-reports:         https://github.com/mjhopkins/alerta-client/issues@@ -37,9 +37,9 @@                      , data-default   >= 0.7   && < 0.8                      , http-api-data  >= 0.3   && < 0.4                      , http-client    >= 0.5   && < 0.6-                     , servant        >= 0.10  && < 0.12-                     , servant-client >= 0.10  && < 0.12-                     , servant-server >= 0.10  && < 0.12+                     , servant        >= 0.10  && < 0.13+                     , servant-client >= 0.10  && < 0.13+                     , servant-server >= 0.10  && < 0.13                      , text           >= 1.2.2 && < 1.3                      , time           >= 1.6   && < 1.9   ghc-options:         -Wall
src/Alerta.hs view
src/Alerta/Auth.hs view
@@ -17,14 +17,14 @@   , NeedApiKey   ) where -import           Alerta.Types       (ApiKey(..))+import           Alerta.Types       (ApiKey (..)) -import           Data.Typeable      (Typeable) import           Data.Monoid        ((<>)) import           Data.Proxy-import           Servant.Common.Req (Req, addHeader)-import           Servant.Client+import           Data.Typeable      (Typeable) import           Servant.API        ((:>))+import           Servant.Client+import           Servant.Common.Req (Req, addHeader)  data NeedApiKey deriving Typeable data WithApiKey deriving Typeable
src/Alerta/Types.hs view
@@ -190,7 +190,7 @@ k !~ v =  (k, v, Regex,   False)  -- | These are the valid keys for use in field queries.--- +-- -- NB no 'id', 'repeat' or 'duplicateCount' as these have special handling. data QueryAttr =     EventQueryAttr@@ -337,8 +337,8 @@ --------------------------------------------------------------------------------  -- | Data required to create (post) an alert.-data Alert = Alert {-    alertResource    :: Resource+data Alert = Alert+  { alertResource    :: Resource   , alertEvent       :: Event   , alertEnvironment :: Maybe Environment   , alertSeverity    :: Maybe Severity@@ -362,8 +362,8 @@  -- | Create an alert with just the mandatory fields. mkAlert :: Resource -> Event -> Service -> Alert-mkAlert r e s = Alert {-    alertResource    = r+mkAlert r e s = Alert+  { alertResource    = r   , alertEvent       = e   -- supposed to be optional, but RejectPolicy plugin requires it to be one of ALLOWED_ENVIRONMENTS   , alertEnvironment = Just "Development"@@ -386,8 +386,8 @@   }  -- | Data returned from the server about an alert-data AlertInfo = AlertInfo {-    alertInfoId               :: UUID+data AlertInfo = AlertInfo+  { alertInfoId               :: UUID   , alertInfoResource         :: Resource   , alertInfoEvent            :: Event   , alertInfoEnvironment      :: Environment -- ^ defaults to empty string@@ -483,8 +483,8 @@ instance ToHttpApiData AlertAttr where   toQueryParam = T.pack . uncapitalise . onCamelComponents (dropRight 2) . show -data HistoryItem = StatusHistoryItem {-    historyItemEvent      :: Event+data HistoryItem = StatusHistoryItem+  { historyItemEvent      :: Event   , historyItemStatus     :: Status   , historyItemText       :: Text   , historyItemId         :: UUID@@ -499,8 +499,8 @@   } deriving (Eq, Show, Generic)  -- | When performing an alert history query an enriched version of the alert history is returned with extra fields.-data ExtendedHistoryItem = StatusExtendedHistoryItem {-    statusExtendedHistoryItemId          :: UUID+data ExtendedHistoryItem = StatusExtendedHistoryItem+  { statusExtendedHistoryItemId          :: UUID   , statusExtendedHistoryItemResource    :: Resource   , statusExtendedHistoryItemEvent       :: Event   , statusExtendedHistoryItemEnvironment :: Environment@@ -513,8 +513,8 @@   , statusExtendedHistoryItemOrigin      :: Origin   , statusExtendedHistoryItemUpdateTime  :: UTCTime   , statusExtendedHistoryItemCustomer    :: Maybe CustomerName-  } | SeverityExtendedHistoryItem {-    severityExtendedHistoryItemId          :: UUID+  } | SeverityExtendedHistoryItem+  { severityExtendedHistoryItemId          :: UUID   , severityExtendedHistoryItemResource    :: Resource   , severityExtendedHistoryItemEvent       :: Event   , severityExtendedHistoryItemEnvironment :: Environment@@ -535,30 +535,30 @@ -- | Attributes are key-value pairs that can be attached to an alert. newtype Attributes = Attributes { attributes :: Map Text Text } deriving (Eq, Show, Generic) -data StatusChange = StatusChange {-    statusChangeStatus :: Status -- docs say not "unknown" but the api allows it+data StatusChange = StatusChange+  { statusChangeStatus :: Status -- docs say not "unknown" but the api allows it     -- (in fact any text is accepted - but our parsing code need to be able     -- to read it back from the alert history)   , statusChangeText   :: Maybe Text   } deriving (Eq, Show, Generic) -data CreateAlertResp = OkCreateAlertResp {-    okCreateAlertRespId         :: UUID+data CreateAlertResp = OkCreateAlertResp+  { okCreateAlertRespId         :: UUID   , okCreateAlertRespAlert      :: Maybe AlertInfo -- ^ not present if rate limited or in blackout   , okCreateAlertRespMessage    :: Maybe Text      -- ^ present when rate limited or in blackout   } | ErrorCreateAlertResp {     errorCreateAlertRespMessage :: Text   } deriving (Eq, Show, Generic) -data AlertResp = OkAlertResp {-    okAlertRespAlert      :: AlertInfo+data AlertResp = OkAlertResp+  { okAlertRespAlert      :: AlertInfo   , okAlertRespTotal      :: Int   } | ErrorAlertResp {     errorAlertRespMessage :: Text   } deriving (Eq, Show, Generic) -data AlertsResp = OkAlertsResp {-    okAlertsRespAlerts           :: [AlertInfo]+data AlertsResp = OkAlertsResp+  { okAlertsRespAlerts           :: [AlertInfo]   , okAlertsRespTotal            :: Int   , okAlertsRespPage             :: PageNo   , okAlertsRespPageSize         :: Int@@ -569,21 +569,21 @@   , okAlertsRespLastTime         :: UTCTime   , okAlertsRespAutoRefresh      :: Bool   , okAlertsRespMessage          :: Maybe Text-  } | ErrorAlertsResp {-    errorAlertsRespMessage       :: Text+  } | ErrorAlertsResp+  { errorAlertsRespMessage       :: Text   } deriving (Eq, Show, Generic) -data AlertCountResp = OkAlertCountResp {-    okAlertCountRespTotal          :: Int+data AlertCountResp = OkAlertCountResp+  { okAlertCountRespTotal          :: Int   , okAlertCountRespSeverityCounts :: Int   , okAlertCountRespStatusCounts   :: Int   , okAlertCountRespMessage        :: Maybe Text-  } | ErrorAlertCountResp {-    errorAlertCountRespMessage     :: Text+  } | ErrorAlertCountResp+  { errorAlertCountRespMessage     :: Text   } deriving (Eq, Show, Generic) -data ResourceInfo = ResourceInfo {-    resourceInfoId       :: UUID+data ResourceInfo = ResourceInfo+  { resourceInfoId       :: UUID   , resourceInfoResource :: Resource   , resourceInfoHref     :: Href   } deriving (Eq, Show, Generic)@@ -592,71 +592,71 @@ -- i.e. if you group by origin, then the result will have an "origin" field. -- -- This dependently-typed feature is not currently captured in the Haskell types.-data Top10Info = Top10Info {-    top10InfoCount          :: Int+data Top10Info = Top10Info+  { top10InfoCount          :: Int   , top10InfoDuplicateCount :: Int   , top10InfoEnvironments   :: [Environment]   , top10InfoServices       :: [Service]   , top10InfoResources      :: [ResourceInfo]   } deriving (Eq, Show, Generic) -data Top10Resp = OkTop10Resp {-    okTop10RespTop10   :: [Top10Info]+data Top10Resp = OkTop10Resp+  { okTop10RespTop10   :: [Top10Info]   , okTop10RespTotal   :: Int   , okTop10RespMessage :: Maybe Text-  } | ErrorTop10Resp {-    errorTop10RespMessage :: Text+  } | ErrorTop10Resp+  { errorTop10RespMessage :: Text   } deriving (Eq, Show, Generic) -data AlertHistoryResp = OkAlertHistoryResp {-    okAlertHistoryRespHistory  :: [ExtendedHistoryItem]+data AlertHistoryResp = OkAlertHistoryResp+  { okAlertHistoryRespHistory  :: [ExtendedHistoryItem]   , okAlertHistoryRespLastTime :: UTCTime   , okAlertHistoryRespMessage  :: Maybe Text-  } | ErrorAlertHistoryResp {-    errorAlertHistoryResp      :: Text+  } | ErrorAlertHistoryResp+  { errorAlertHistoryResp      :: Text   } deriving (Eq, Show, Generic)  -------------------------------------------------------------------------------- -- Environments -------------------------------------------------------------------------------- -data EnvironmentInfo = EnvironmentInfo {-    environmentInfoCount       :: Int+data EnvironmentInfo = EnvironmentInfo+  { environmentInfoCount       :: Int   , environmentInfoEnvironment :: Environment   } deriving (Eq, Show, Generic) -data EnvironmentsResp = OkEnvironmentsResp {-    okEnvironmentsRespMessage      :: Maybe Text+data EnvironmentsResp = OkEnvironmentsResp+  { okEnvironmentsRespMessage      :: Maybe Text   , okEnvironmentsRespTotal        :: Int   , okEnvironmentsRespEnvironments :: [EnvironmentInfo]-  } | ErrorEnvironmentsResp {-    errorEnvironmentsRespMessage :: Text+  } | ErrorEnvironmentsResp+  { errorEnvironmentsRespMessage :: Text   } deriving (Eq, Show, Generic)  -------------------------------------------------------------------------------- -- Services -------------------------------------------------------------------------------- -data ServiceInfo = ServiceInfo {-    serviceInfoCount       :: Int+data ServiceInfo = ServiceInfo+  { serviceInfoCount       :: Int   , serviceInfoEnvironment :: Environment   , serviceInfoService     :: Service   } deriving (Eq, Show, Generic) -data ServicesResp = OkServicesResp {-    okServicesRespTotal    :: Int+data ServicesResp = OkServicesResp+  { okServicesRespTotal    :: Int   , okServicesRespServices :: [ServiceInfo]   , okServicesRespMessage  :: Maybe Text-  } | ErrorServicesResp {-    errorServicesRespMessage :: Text+  } | ErrorServicesResp+  { errorServicesRespMessage :: Text   } deriving (Eq, Show, Generic)  -------------------------------------------------------------------------------- -- Blackouts -------------------------------------------------------------------------------- -data Blackout = Blackout {-    blackoutEnvironment :: Environment+data Blackout = Blackout+  { blackoutEnvironment :: Environment   , blackoutResource    :: Maybe Resource   , blackoutService     :: Maybe Service   , blackoutEvent       :: Maybe Event@@ -686,7 +686,7 @@ --   5. if group present -- --   6. if resource and event present---    +-- --   7. if tags present -- -- Somewhat bizarrely, the saved blackout only includes an attribute@@ -696,8 +696,8 @@ -- if it was used to deduce the priority, -- i.e. a priority 6 blackout will have resource and event attributes, -- but no tags attribute, even if it was supplied when it was created.-data BlackoutInfo = BlackoutInfo {-    blackoutInfoId          :: UUID+data BlackoutInfo = BlackoutInfo+  { blackoutInfoId          :: UUID   , blackoutInfoPriority    :: Int   , blackoutInfoEnvironment :: Environment   , blackoutInfoResource    :: Maybe Resource@@ -713,8 +713,8 @@  data BlackoutStatus = Expired | Pending | Active deriving (Eq, Ord, Bounded, Enum, Ix, Show, Generic) -data ExtendedBlackoutInfo = ExtendedBlackoutInfo {-    extendedBlackoutInfoId          :: UUID+data ExtendedBlackoutInfo = ExtendedBlackoutInfo+  { extendedBlackoutInfoId          :: UUID   , extendedBlackoutInfoPriority    :: Int    -- see comment above   , extendedBlackoutInfoEnvironment :: Environment   , extendedBlackoutInfoResource    :: Maybe Resource@@ -730,15 +730,15 @@   , extendedBlackoutInfoStatus      :: BlackoutStatus   } deriving (Eq, Show, Generic) -data BlackoutResp = OkBlackoutResp {-    okBlackoutRespId       :: UUID+data BlackoutResp = OkBlackoutResp+  { okBlackoutRespId       :: UUID   , okBlackoutRespBlackout :: BlackoutInfo   } | ErrorBlackoutResp {     errorBlackoutRespMessage :: Text   } deriving (Eq, Show, Generic) -data BlackoutsResp = OkBlackoutsResp {-    okBlackoutsRespTotal     :: Int+data BlackoutsResp = OkBlackoutsResp+  { okBlackoutsRespTotal     :: Int   , okBlackoutsRespBlackouts :: [ExtendedBlackoutInfo]   , okBlackoutsRespMessage   :: Maybe Text   , okBlackoutsRespTime      :: UTCTime@@ -752,8 +752,8 @@ --------------------------------------------------------------------------------  -- | Data needed to create a heartbeat-data Heartbeat = Heartbeat {-    heartbeatOrigin     :: Maybe Origin       -- defaults to prog/nodename+data Heartbeat = Heartbeat+  { heartbeatOrigin     :: Maybe Origin       -- defaults to prog/nodename   , heartbeatTags       :: [Tag]   , heartbeatCreateTime :: Maybe UTCTime   , heartbeatTimeout    :: Maybe Int          -- seconds@@ -761,8 +761,8 @@   } deriving (Eq, Show, Generic, Default)  -- | Information returned from the server about a heartbeat-data HeartbeatInfo = HeartbeatInfo {-    heartbeatInfoCreateTime  :: UTCTime+data HeartbeatInfo = HeartbeatInfo+  { heartbeatInfoCreateTime  :: UTCTime   , heartbeatInfoCustomer    :: Maybe CustomerName   , heartbeatInfoHref        :: Href   , heartbeatInfoId          :: UUID@@ -773,27 +773,27 @@   , heartbeatInfoType        :: Text   } deriving (Eq, Show, Generic) -data CreateHeartbeatResp = OkCreateHeartbeatResp {-    createHeartbeatRespId        :: UUID+data CreateHeartbeatResp = OkCreateHeartbeatResp+  { createHeartbeatRespId        :: UUID   , createHeartbeatRespHeartbeat :: HeartbeatInfo-  } | ErrorCreateHeartbeatResp {-    createHeartbeatRespMessage   :: Text+  } | ErrorCreateHeartbeatResp+  { createHeartbeatRespMessage   :: Text   } deriving (Eq, Show, Generic) -data HeartbeatResp = OkHeartbeatResp {-    heartbeatRespHeartbeat :: HeartbeatInfo+data HeartbeatResp = OkHeartbeatResp+  { heartbeatRespHeartbeat :: HeartbeatInfo   , heartbeatRespTotal     :: Int-  } | ErrorHeartbeatResp {-    heartbeatRespMessage   :: Text+  } | ErrorHeartbeatResp+  { heartbeatRespMessage   :: Text   } deriving (Eq, Show, Generic) -data HeartbeatsResp = OkHeartbeatsResp {-    heartbeatsRespHeartbeats   :: [HeartbeatInfo]+data HeartbeatsResp = OkHeartbeatsResp+  { heartbeatsRespHeartbeats   :: [HeartbeatInfo]   , heartbeatsRespTime         :: Maybe UTCTime   , heartbeatsRespTotal        :: Int   , heartbeatsRespMessage      :: Maybe Text-  } | ErrorHeartbeatsResp {-    heartbeatsRespErrorMessage :: Text+  } | ErrorHeartbeatsResp+  { heartbeatsRespErrorMessage :: Text   } deriving (Eq, Show, Generic)  @@ -826,8 +826,8 @@   toUrlPiece (ApiKey k) = k  -- | Data needed to create an API key-data CreateApiKey = CreateApiKey {-    createApiKeyUser     :: Maybe Email         -- ^ only read if authorised as admin, defaults to current user+data CreateApiKey = CreateApiKey+  { createApiKeyUser     :: Maybe Email         -- ^ only read if authorised as admin, defaults to current user   , createApiKeyCustomer :: Maybe CustomerName  -- ^ only read if authorised as admin, defaults to current customer   , createApiKeyType     :: Maybe ApiKeyType    -- ^ defaults to read-only   , createApiKeyText     :: Maybe Text        -- ^ defaults to "API Key for $user"@@ -846,8 +846,8 @@   parseJSON = genericParseJSON $ defaultOptions { constructorTagModifier = camelTo2 '-'}  -- | Information returned from the server about an API key-data ApiKeyInfo = ApiKeyInfo {-    apiKeyInfoUser         :: Email+data ApiKeyInfo = ApiKeyInfo+  { apiKeyInfoUser         :: Email   , apiKeyInfoKey          :: ApiKey   , apiKeyInfoType         :: ApiKeyType   , apiKeyInfoText         :: Text@@ -857,20 +857,20 @@   , apiKeyInfoCustomer     :: Maybe CustomerName   } deriving (Eq, Show, Generic) -data CreateApiKeyResp = OkCreateApiKeyResp {-    okCreateApiKeyRespKey        :: ApiKey +data CreateApiKeyResp = OkCreateApiKeyResp+  { okCreateApiKeyRespKey        :: ApiKey   , okCreateApiKeyRespData       :: ApiKeyInfo-  } | ErrorCreateApiKeyResp {-    errorCreateApiKeyRespMessage :: Text+  } | ErrorCreateApiKeyResp+  { errorCreateApiKeyRespMessage :: Text   } deriving (Eq, Show, Generic) -data ApiKeysResp = OkApiKeysResp {-    okApiKeysRespKeys       :: [ApiKeyInfo]+data ApiKeysResp = OkApiKeysResp+  { okApiKeysRespKeys       :: [ApiKeyInfo]   , okApiKeysRespTotal      :: Int   , okApiKeysRespTime       :: UTCTime   , okApiKeysRespMessage    :: Maybe Text-  } | ErrorApiKeysResp {-    errorApiKeysRespMessage :: Text+  } | ErrorApiKeysResp+  { errorApiKeysRespMessage :: Text   } deriving (Eq, Show, Generic)  --------------------------------------------------------------------------------@@ -881,8 +881,8 @@ -- yay, cowboy coding  -- Data needed to create a user-data User = User {-    userName          :: UserName+data User = User+  { userName          :: UserName   , userLogin         :: Email   , userPassword      :: Password   , userProvider      :: Maybe Provider@@ -911,8 +911,8 @@ -- The helper functions "withUserName" etc. can be used in conjunction with -- the default empty "UserAttr" to build up a nonempty "UserAttr". -data UserAttr (u :: IsEmpty) = UserAttr {-    userAttrName           :: Maybe UserName+data UserAttr (u :: IsEmpty) = UserAttr+  { userAttrName           :: Maybe UserName   , userAttrLogin          :: Maybe Email   , userAttrPassword       :: Maybe Password   , userAttrProvider       :: Maybe Provider@@ -969,8 +969,8 @@ withUserText          u s = u { userAttrText = Just s } withUserEmailVerified u b = u { userAttrEmail_verified = Just b } -data UserInfo = UserInfo {-    userInfoCreateTime     :: UTCTime+data UserInfo = UserInfo+  { userInfoCreateTime     :: UTCTime   , userInfoId             :: UUID   , userInfoName           :: UserName   , userInfoProvider       :: Provider@@ -982,8 +982,8 @@ data RoleType = UserRoleType | AdminRoleType  deriving (Eq, Ord, Bounded, Enum, Ix, Show, Generic) -data ExtendedUserInfo = ExtendedUserInfo {-    extendedUserInfoCreateTime     :: UTCTime+data ExtendedUserInfo = ExtendedUserInfo+  { extendedUserInfoCreateTime     :: UTCTime   , extendedUserInfoId             :: UUID   , extendedUserInfoName           :: UserName   , extendedUserInfoLogin          :: Email@@ -993,15 +993,15 @@   , extendedUserInfoEmail_verified :: Bool   } deriving (Show, Generic) -data UserResp = OkUserResp {-    okUserRespId   :: UUID+data UserResp = OkUserResp+  { okUserRespId   :: UUID   , okUserRespUser :: UserInfo   } | ErrorUserResp {     errorUserRespMessage :: Text   } deriving (Show, Generic) -data UsersResp = OkUsersResp {-    okUsersRespUsers   :: [ExtendedUserInfo]+data UsersResp = OkUsersResp+  { okUsersRespUsers   :: [ExtendedUserInfo]   , okUsersRespTotal   :: Int   , okUsersRespDomains :: [Text]       -- allowed email domains   , okUsersRespGroups  :: [Text]       -- allowed Gitlab groups@@ -1017,26 +1017,26 @@ -- Customers -------------------------------------------------------------------------------- -data Customer = Customer {-    customerCustomer :: CustomerName+data Customer = Customer+  { customerCustomer :: CustomerName   , customerMatch    :: Text -- regex, apparently   } deriving (Show, Generic) -data CustomerInfo = CustomerInfo {-    customerInfoId       :: UUID+data CustomerInfo = CustomerInfo+  { customerInfoId       :: UUID   , customerInfoCustomer :: CustomerName   , customerInfoMatch    :: Text -- regex, apparently   } deriving (Show, Generic) -data CustomerResp = OkCustomerResp {-    okCustomerRespId         :: UUID+data CustomerResp = OkCustomerResp+  { okCustomerRespId         :: UUID   , okCustomerRespCustomer   :: CustomerInfo   } | ErrorCustomerResp {     errorCustomerRespMessage :: Text   } deriving (Show, Generic) -data CustomersResp = OkCustomersResp {-    okCustomersRespCustomers :: [CustomerInfo]+data CustomersResp = OkCustomersResp+  { okCustomersRespCustomers :: [CustomerInfo]   , okCustomersRespTotal     :: Int   , okCustomersRespMessage   :: Maybe Text   , okCustomersRespTime      :: UTCTime