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 +4/−4
- src/Alerta.hs +0/−0
- src/Alerta/Auth.hs +4/−4
- src/Alerta/Types.hs +110/−110
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