packages feed

calamity 0.1.22.0 → 0.1.22.1

raw patch · 7 files changed

+84/−56 lines, 7 filesdep ~bytestringdep ~megaparsecdep ~timePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: bytestring, megaparsec, time, unboxing-vector

API changes (from Hackage documentation)

+ Calamity.HTTP.Internal.Request: modifyResponse :: Request a => a -> Value -> Value
- Calamity.Cache.Eff: delDM :: forall r_a9hxq. MemberWithError CacheEff r_a9hxq => Snowflake DMChannel -> Sem r_a9hxq ()
+ Calamity.Cache.Eff: delDM :: forall r_a9h1l. MemberWithError CacheEff r_a9h1l => Snowflake DMChannel -> Sem r_a9h1l ()
- Calamity.Cache.Eff: delGuild :: forall r_a9hxj. MemberWithError CacheEff r_a9hxj => Snowflake Guild -> Sem r_a9hxj ()
+ Calamity.Cache.Eff: delGuild :: forall r_a9h1e. MemberWithError CacheEff r_a9h1e => Snowflake Guild -> Sem r_a9h1e ()
- Calamity.Cache.Eff: delMessage :: forall r_a9hxL. MemberWithError CacheEff r_a9hxL => Snowflake Message -> Sem r_a9hxL ()
+ Calamity.Cache.Eff: delMessage :: forall r_a9h1G. MemberWithError CacheEff r_a9h1G => Snowflake Message -> Sem r_a9h1G ()
- Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9hxE. MemberWithError CacheEff r_a9hxE => Snowflake Guild -> Sem r_a9hxE ()
+ Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9h1z. MemberWithError CacheEff r_a9h1z => Snowflake Guild -> Sem r_a9h1z ()
- Calamity.Cache.Eff: delUser :: forall r_a9hxx. MemberWithError CacheEff r_a9hxx => Snowflake User -> Sem r_a9hxx ()
+ Calamity.Cache.Eff: delUser :: forall r_a9h1s. MemberWithError CacheEff r_a9h1s => Snowflake User -> Sem r_a9h1s ()
- Calamity.Cache.Eff: getBotUser :: forall r_a9hxb. MemberWithError CacheEff r_a9hxb => Sem r_a9hxb (Maybe User)
+ Calamity.Cache.Eff: getBotUser :: forall r_a9h16. MemberWithError CacheEff r_a9h16 => Sem r_a9h16 (Maybe User)
- Calamity.Cache.Eff: getDM :: forall r_a9hxn. MemberWithError CacheEff r_a9hxn => Snowflake DMChannel -> Sem r_a9hxn (Maybe DMChannel)
+ Calamity.Cache.Eff: getDM :: forall r_a9h1i. MemberWithError CacheEff r_a9h1i => Snowflake DMChannel -> Sem r_a9h1i (Maybe DMChannel)
- Calamity.Cache.Eff: getDMs :: forall r_a9hxp. MemberWithError CacheEff r_a9hxp => Sem r_a9hxp [DMChannel]
+ Calamity.Cache.Eff: getDMs :: forall r_a9h1k. MemberWithError CacheEff r_a9h1k => Sem r_a9h1k [DMChannel]
- Calamity.Cache.Eff: getGuild :: forall r_a9hxe. MemberWithError CacheEff r_a9hxe => Snowflake Guild -> Sem r_a9hxe (Maybe Guild)
+ Calamity.Cache.Eff: getGuild :: forall r_a9h19. MemberWithError CacheEff r_a9h19 => Snowflake Guild -> Sem r_a9h19 (Maybe Guild)
- Calamity.Cache.Eff: getGuildChannel :: forall r_a9hxg. MemberWithError CacheEff r_a9hxg => Snowflake GuildChannel -> Sem r_a9hxg (Maybe GuildChannel)
+ Calamity.Cache.Eff: getGuildChannel :: forall r_a9h1b. MemberWithError CacheEff r_a9h1b => Snowflake GuildChannel -> Sem r_a9h1b (Maybe GuildChannel)
- Calamity.Cache.Eff: getGuilds :: forall r_a9hxi. MemberWithError CacheEff r_a9hxi => Sem r_a9hxi [Guild]
+ Calamity.Cache.Eff: getGuilds :: forall r_a9h1d. MemberWithError CacheEff r_a9h1d => Sem r_a9h1d [Guild]
- Calamity.Cache.Eff: getMessage :: forall r_a9hxI. MemberWithError CacheEff r_a9hxI => Snowflake Message -> Sem r_a9hxI (Maybe Message)
+ Calamity.Cache.Eff: getMessage :: forall r_a9h1D. MemberWithError CacheEff r_a9h1D => Snowflake Message -> Sem r_a9h1D (Maybe Message)
- Calamity.Cache.Eff: getMessages :: forall r_a9hxK. MemberWithError CacheEff r_a9hxK => Sem r_a9hxK [Message]
+ Calamity.Cache.Eff: getMessages :: forall r_a9h1F. MemberWithError CacheEff r_a9h1F => Sem r_a9h1F [Message]
- Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9hxD. MemberWithError CacheEff r_a9hxD => Sem r_a9hxD [Snowflake Guild]
+ Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9h1y. MemberWithError CacheEff r_a9h1y => Sem r_a9h1y [Snowflake Guild]
- Calamity.Cache.Eff: getUser :: forall r_a9hxu. MemberWithError CacheEff r_a9hxu => Snowflake User -> Sem r_a9hxu (Maybe User)
+ Calamity.Cache.Eff: getUser :: forall r_a9h1p. MemberWithError CacheEff r_a9h1p => Snowflake User -> Sem r_a9h1p (Maybe User)
- Calamity.Cache.Eff: getUsers :: forall r_a9hxw. MemberWithError CacheEff r_a9hxw => Sem r_a9hxw [User]
+ Calamity.Cache.Eff: getUsers :: forall r_a9h1r. MemberWithError CacheEff r_a9h1r => Sem r_a9h1r [User]
- Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9hxB. MemberWithError CacheEff r_a9hxB => Snowflake Guild -> Sem r_a9hxB Bool
+ Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9h1w. MemberWithError CacheEff r_a9h1w => Snowflake Guild -> Sem r_a9h1w Bool
- Calamity.Cache.Eff: setBotUser :: forall r_a9hx9. MemberWithError CacheEff r_a9hx9 => User -> Sem r_a9hx9 ()
+ Calamity.Cache.Eff: setBotUser :: forall r_a9h14. MemberWithError CacheEff r_a9h14 => User -> Sem r_a9h14 ()
- Calamity.Cache.Eff: setDM :: forall r_a9hxl. MemberWithError CacheEff r_a9hxl => DMChannel -> Sem r_a9hxl ()
+ Calamity.Cache.Eff: setDM :: forall r_a9h1g. MemberWithError CacheEff r_a9h1g => DMChannel -> Sem r_a9h1g ()
- Calamity.Cache.Eff: setGuild :: forall r_a9hxc. MemberWithError CacheEff r_a9hxc => Guild -> Sem r_a9hxc ()
+ Calamity.Cache.Eff: setGuild :: forall r_a9h17. MemberWithError CacheEff r_a9h17 => Guild -> Sem r_a9h17 ()
- Calamity.Cache.Eff: setMessage :: forall r_a9hxG. MemberWithError CacheEff r_a9hxG => Message -> Sem r_a9hxG ()
+ Calamity.Cache.Eff: setMessage :: forall r_a9h1B. MemberWithError CacheEff r_a9h1B => Message -> Sem r_a9h1B ()
- Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9hxz. MemberWithError CacheEff r_a9hxz => Snowflake Guild -> Sem r_a9hxz ()
+ Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9h1u. MemberWithError CacheEff r_a9h1u => Snowflake Guild -> Sem r_a9h1u ()
- Calamity.Cache.Eff: setUser :: forall r_a9hxs. MemberWithError CacheEff r_a9hxs => User -> Sem r_a9hxs ()
+ Calamity.Cache.Eff: setUser :: forall r_a9h1n. MemberWithError CacheEff r_a9h1n => User -> Sem r_a9h1n ()
- Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a6UjU. MemberWithError ParsePrefix r_a6UjU => Message -> Sem r_a6UjU (Maybe (Text, Text))
+ Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a6Und. MemberWithError ParsePrefix r_a6Und => Message -> Sem r_a6Und (Maybe (Text, Text))
- Calamity.HTTP: invoke :: (Request a, BotC r, FromJSON (Result a)) => a -> Sem r (Either RestError (Result a))
+ Calamity.HTTP: invoke :: (BotC r, Request a, FromJSON (Result a)) => a -> Sem r (Either RestError (Result a))
- Calamity.HTTP.Internal.Request: invoke :: (Request a, BotC r, FromJSON (Result a)) => a -> Sem r (Either RestError (Result a))
+ Calamity.HTTP.Internal.Request: invoke :: (BotC r, Request a, FromJSON (Result a)) => a -> Sem r (Either RestError (Result a))
- Calamity.Internal.LocalWriter: llisten :: forall o_arjZ r_arrw a_XrjZ. MemberWithError (LocalWriter o_arjZ) r_arrw => Sem r_arrw a_XrjZ -> Sem r_arrw (o_arjZ, a_XrjZ)
+ Calamity.Internal.LocalWriter: llisten :: forall o_arkt r_ars0 a_Xrkt. MemberWithError (LocalWriter o_arkt) r_ars0 => Sem r_ars0 a_Xrkt -> Sem r_ars0 (o_arkt, a_Xrkt)
- Calamity.Internal.LocalWriter: ltell :: forall o_arjV r_arru. MemberWithError (LocalWriter o_arjV) r_arru => o_arjV -> Sem r_arru ()
+ Calamity.Internal.LocalWriter: ltell :: forall o_arkp r_arrY. MemberWithError (LocalWriter o_arkp) r_arrY => o_arkp -> Sem r_arrY ()
- Calamity.Metrics.Eff: addCounter :: forall r_auWH. MemberWithError MetricEff r_auWH => Int -> Counter -> Sem r_auWH Int
+ Calamity.Metrics.Eff: addCounter :: forall r_auXv. MemberWithError MetricEff r_auXv => Int -> Counter -> Sem r_auXv Int
- Calamity.Metrics.Eff: modifyGauge :: forall r_auWK. MemberWithError MetricEff r_auWK => (Double -> Double) -> Gauge -> Sem r_auWK Double
+ Calamity.Metrics.Eff: modifyGauge :: forall r_auXy. MemberWithError MetricEff r_auXy => (Double -> Double) -> Gauge -> Sem r_auXy Double
- Calamity.Metrics.Eff: observeHistogram :: forall r_auWN. MemberWithError MetricEff r_auWN => Double -> Histogram -> Sem r_auWN HistogramSample
+ Calamity.Metrics.Eff: observeHistogram :: forall r_auXB. MemberWithError MetricEff r_auXB => Double -> Histogram -> Sem r_auXB HistogramSample
- Calamity.Metrics.Eff: registerCounter :: forall r_auWx. MemberWithError MetricEff r_auWx => Text -> [(Text, Text)] -> Sem r_auWx Counter
+ Calamity.Metrics.Eff: registerCounter :: forall r_auXl. MemberWithError MetricEff r_auXl => Text -> [(Text, Text)] -> Sem r_auXl Counter
- Calamity.Metrics.Eff: registerGauge :: forall r_auWA. MemberWithError MetricEff r_auWA => Text -> [(Text, Text)] -> Sem r_auWA Gauge
+ Calamity.Metrics.Eff: registerGauge :: forall r_auXo. MemberWithError MetricEff r_auXo => Text -> [(Text, Text)] -> Sem r_auXo Gauge
- Calamity.Metrics.Eff: registerHistogram :: forall r_auWD. MemberWithError MetricEff r_auWD => Text -> [(Text, Text)] -> [Double] -> Sem r_auWD Histogram
+ Calamity.Metrics.Eff: registerHistogram :: forall r_auXr. MemberWithError MetricEff r_auXr => Text -> [(Text, Text)] -> [Double] -> Sem r_auXr Histogram

Files

ChangeLog.md view
@@ -1,5 +1,12 @@ # Changelog for Calamity +## 0.1.22.1+++ Bump some upper bounds++ Fix parsing of members from GetGuildMember++ Make game field in Presence correctly optional++ Make roles field in Presence updates correctly optional (internal)+ ## 0.1.22.0  * Update to gateway/http endpoint v8.
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: b3783e8d7e7db062a2aa10f4642564dea368efe4f9130957aaa0259e2f96e54e+-- hash: a5846981d4aa83053956a4f860e1145f8c044323b2d869cf4a670bad5106addf  name:           calamity-version:        0.1.22.0+version:        0.1.22.1 synopsis:       A library for writing discord bots in haskell description:    Please see the README on GitHub at <https://github.com/nitros12/calamity#readme> category:       Network, Web@@ -140,7 +140,7 @@       aeson >=1.4 && <2     , async >=2.2 && <3     , base >=4.12 && <5-    , bytestring >=0.10 && <0.11+    , bytestring >=0.10 && <0.12     , colour >=2.3.5 && <2.4     , concurrent-extra >=0.7 && <0.8     , containers >=0.6 && <0.7@@ -162,7 +162,7 @@     , http-types >=0.12 && <0.13     , lens >=4.18 && <5     , lens-aeson >=1.1 && <2-    , megaparsec >=8 && <9+    , megaparsec >=8 && <10     , mime-types >=0.1 && <0.2     , mtl >=2.2 && <3     , polysemy >=1.3 && <2@@ -175,10 +175,10 @@     , stm-containers >=1.1 && <2     , text >=1.2 && <2     , text-show >=3.8 && <4-    , time >=1.8 && <1.11+    , time >=1.8 && <1.12     , typerep-map >=0.3 && <0.4     , unagi-chan >=0.4 && <0.5-    , unboxing-vector >=0.1 && <0.2+    , unboxing-vector >=0.2 && <0.3     , unordered-containers >=0.2 && <0.3     , vector >=0.12 && <0.13     , websockets >=0.12 && <0.13
src/Calamity/HTTP.hs view
@@ -1,7 +1,7 @@ -- | Combined http request stuff module Calamity.HTTP-    ( module Calamity.HTTP.AuditLog-    , module Calamity.HTTP.Internal.Request+    ( invoke+    , module Calamity.HTTP.AuditLog     , module Calamity.HTTP.Channel     , module Calamity.HTTP.Emoji     , module Calamity.HTTP.Guild
src/Calamity/HTTP/Guild.hs view
@@ -27,6 +27,7 @@ import           Control.Lens                   hiding ( (.=) )  import           Data.Aeson+import           Data.Aeson.Lens import           Data.Colour                    ( Colour ) import           Data.Default.Class import           Data.Maybe@@ -280,3 +281,9 @@   action (BeginGuildPrune _ d r) = postEmptyP (param "days" .~ [showt d] >>> param "compute_prune_count" .~ [showt r])   action (GetGuildVoiceRegions _) = getWith   action (GetGuildInvites _) = getWith++  -- this is a bit of a hack+  -- TODO: add something to allow for contextual parsing+  modifyResponse (GetGuildMember (getID @Guild -> gid) _) = _Object . at "guild_id"  ?~ _String # showt (fromSnowflake gid)+  modifyResponse (ListGuildMembers (getID @Guild -> gid) _) = values . _Object . at "guild_id"  ?~ _String # showt (fromSnowflake gid)+  modifyResponse _ = Prelude.id
src/Calamity/HTTP/Internal/Request.hs view
@@ -1,6 +1,7 @@ -- | Generic Request type module Calamity.HTTP.Internal.Request     ( Request(..)+    , invoke     , postWith'     , postWithP'     , putWith'@@ -67,25 +68,30 @@    action :: a -> Options -> Session -> String -> IO (Response LB.ByteString) -  invoke :: (BotC r, FromJSON (Calamity.HTTP.Internal.Request.Result a)) => a -> Sem r (Either RestError (Calamity.HTTP.Internal.Request.Result a))-  invoke a = do-      rlState' <- P.asks (^. #rlState)-      session <- P.asks (^. #session)-      token' <- P.asks (^. #token)+  modifyResponse :: a -> Value -> Value+  modifyResponse _ = id -      let route' = route a -      inFlightRequests <- registerGauge "inflight_requests" [("route", route' ^. #path)]-      totalRequests <- registerCounter "total_requests" [("route", route' ^. #path)]-      void $ modifyGauge (+ 1) inFlightRequests-      void $ addCounter 1 totalRequests+invoke :: (BotC r, Request a, FromJSON (Calamity.HTTP.Internal.Request.Result a)) => a -> Sem r (Either RestError (Calamity.HTTP.Internal.Request.Result a))+invoke a = do+    rlState' <- P.asks (^. #rlState)+    session <- P.asks (^. #session)+    token' <- P.asks (^. #token) -      resp <- attr "route" (route' ^. #path) $ doRequest rlState' route'-        (action a (requestOptions token') session (route' ^. #path . unpacked))+    let route' = route a -      void $ modifyGauge (subtract 1) inFlightRequests+    inFlightRequests <- registerGauge "inflight_requests" [("route", route' ^. #path)]+    totalRequests <- registerCounter "total_requests" [("route", route' ^. #path)]+    void $ modifyGauge (+ 1) inFlightRequests+    void $ addCounter 1 totalRequests -      P.runError $ (fromResult . fromJSON) =<< (fromJSONDecode . readResp) =<< extractRight resp+    resp <- attr "route" (route' ^. #path) $ doRequest rlState' route'+      (action a (requestOptions token') session (route' ^. #path . unpacked))++    void $ modifyGauge (subtract 1) inFlightRequests++    P.runError $ (fromResult . fromJSON . modifyResponse a) =<< (fromJSONDecode . readResp) =<< extractRight resp+  defaultRequestOptions :: Options defaultRequestOptions = defaults
src/Calamity/Types/Model/Guild/Emoji.hs view
@@ -34,7 +34,9 @@   deriving ( Eq, Show, Generic )   deriving ( TextShow ) via TSG.FromGeneric Emoji   deriving ( ToJSON ) via CalamityJSON Emoji-  deriving ( FromJSON ) via WithSpecialCases '["user" `ExtractFieldFrom` "id"] Emoji+  deriving ( FromJSON ) via WithSpecialCases '["user" `ExtractFieldFrom` "id"+                                              ,"roles" `IfNoneThen` DefaultToEmptyArray+                                              ] Emoji   deriving ( HasID Emoji ) via HasIDField "id" Emoji  emojiAsRawEmoji :: Emoji -> RawEmoji
src/Calamity/Types/Model/Presence/Presence.hs view
@@ -1,43 +1,49 @@ -- | User presences module Calamity.Types.Model.Presence.Presence-    ( Presence(..)-    , ClientStatus(..) ) where+  ( Presence (..),+    ClientStatus (..),+  )+where -import           Calamity.Internal.AesonThings+import Calamity.Internal.AesonThings import {-# SOURCE #-} Calamity.Types.Model.Guild.Guild-import           Calamity.Types.Model.Presence.Activity-import           Calamity.Types.Model.User-import           Calamity.Types.Snowflake--import           Data.Aeson-import qualified Data.Override                          as O-import           Data.Override.Aeson                    ()-import           Data.Text.Lazy                         ( Text )--import           GHC.Generics--import           TextShow-import qualified TextShow.Generic                       as TSG+import Calamity.Types.Model.Presence.Activity+import Calamity.Types.Model.User+import Calamity.Types.Snowflake+import Data.Aeson+import qualified Data.Override as O+import Data.Override.Aeson ()+import Data.Text.Lazy (Text)+import GHC.Generics+import TextShow+import qualified TextShow.Generic as TSG  data Presence = Presence-  { user         :: Snowflake User-  , game         :: Maybe Activity-  , guildID      :: Snowflake Guild-  , status       :: StatusType-  , clientStatus :: ClientStatus+  { user :: Snowflake User,+    game :: Maybe Activity,+    guildID :: Snowflake Guild,+    status :: StatusType,+    clientStatus :: ClientStatus   }-  deriving ( Eq, Show, Generic )-  deriving ( TextShow ) via TSG.FromGeneric Presence-  deriving ( ToJSON, FromJSON ) via CalamityJSON-      (O.Override Presence '["user" `O.As` Partial User])-  deriving ( HasID User ) via HasIDField "user" Presence-  deriving ( HasID Guild ) via HasIDField "guildID" Presence+  deriving (Eq, Show, Generic)+  deriving (TextShow) via TSG.FromGeneric Presence+  deriving+    (ToJSON)+    via CalamityJSON+          (O.Override Presence '["user" `O.As` Partial User])+  deriving+    (FromJSON)+    via WithSpecialCases+          '["user" `ExtractFieldFrom` "user"]+          Presence+  deriving (HasID User) via HasIDField "user" Presence+  deriving (HasID Guild) via HasIDField "guildID" Presence  data ClientStatus = ClientStatus-  { desktop :: Maybe Text-  , mobile  :: Maybe Text-  , web     :: Maybe Text+  { desktop :: Maybe Text,+    mobile :: Maybe Text,+    web :: Maybe Text   }-  deriving ( Eq, Show, Generic )-  deriving ( TextShow ) via TSG.FromGeneric ClientStatus-  deriving ( ToJSON, FromJSON ) via CalamityJSON ClientStatus+  deriving (Eq, Show, Generic)+  deriving (TextShow) via TSG.FromGeneric ClientStatus+  deriving (ToJSON, FromJSON) via CalamityJSON ClientStatus