packages feed

tightrope 0.1.0.1 → 0.2.0.0

raw patch · 3 files changed

+27/−27 lines, 3 filesdep ~aesondep ~lensdep ~waiPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: aeson, lens, wai, wreq

API changes (from Hackage documentation)

- Network.Tightrope: destination :: HasDestination c_aavL e_aavM => Lens' c_aavL e_aavM
- Network.Tightrope: instance HasDestination Message Room
- Network.Tightrope: instance ToJSON Message
- Network.Tightrope: iconEmoji :: HasIconEmoji c_aavL e_aavM => Lens' c_aavL e_aavM
+ Network.Tightrope: iconEmoji :: HasIconEmoji c_aadj e_aadk => Lens' c_aadj e_aadk
- Network.Tightrope: message :: Icon -> Text -> Text -> Room -> Message
+ Network.Tightrope: message :: Icon -> Text -> Text -> Message
- Network.Tightrope: name :: HasName c_aatp e_aatq => Lens' c_aatp e_aatq
+ Network.Tightrope: name :: HasName c_aab8 e_aab9 => Lens' c_aab8 e_aab9
- Network.Tightrope: say :: Message -> Slack (Response ByteString)
+ Network.Tightrope: say :: Message -> Room -> Slack (Response ByteString)
- Network.Tightrope: source :: HasSource c_aatp e_aatq => Lens' c_aatp e_aatq
+ Network.Tightrope: source :: HasSource c_aab8 e_aab9 => Lens' c_aab8 e_aab9
- Network.Tightrope: text :: HasText c_aatp e_aatq => Lens' c_aatp e_aatq
+ Network.Tightrope: text :: HasText c_aab8 e_aab9 => Lens' c_aab8 e_aab9
- Network.Tightrope: user :: HasUser c_aatp e_aatq => Lens' c_aatp e_aatq
+ Network.Tightrope: user :: HasUser c_aab8 e_aab9 => Lens' c_aab8 e_aab9
- Network.Tightrope: username :: HasUsername c_aavL e_aavM => Lens' c_aavL e_aavM
+ Network.Tightrope: username :: HasUsername c_aadj e_aadk => Lens' c_aadj e_aadk

Files

Network/Tightrope.hs view
@@ -11,13 +11,14 @@   User(..), Channel(..), Icon(..), Room(..),   say, bot, message, defaultMessage,   Account(..),-  source, user, name, text,-  iconEmoji, destination, username,+  source, user, name,+  text,+  iconEmoji, username,   liftIO ) where import qualified Network.Wai as Wai import qualified Network.Wreq as Wreq-import           Control.Lens hiding ((.=))+import           Control.Lens (makeFields, (^.), (&), (.~)) import qualified Data.Aeson as Aeson import           Data.Aeson ((.=)) import           Data.Text (Text)@@ -48,7 +49,6 @@ $(makeFields ''Command)  data Message = Message { _messageIconEmoji :: Icon-                       , _messageDestination :: Room                        , _messageUsername :: Text                        , _messageText :: Text                        }@@ -59,14 +59,12 @@                  (Icon "ghost")                  "Tightrope Bot"                  "I love Tightrope"-                 (Public $ Channel "general")                  -message :: Icon -> Text -> Text -> Room -> Message-message icon username text room =-  Message { _messageIconEmoji = icon-          , _messageDestination = room-          , _messageUsername = username-          , _messageText = text+message :: Icon -> Text -> Text -> Message+message i u t =+  Message { _messageIconEmoji = i+          , _messageUsername = u+          , _messageText = t           }  type Token = String@@ -86,21 +84,19 @@ instance Aeson.ToJSON Icon where   toJSON (Icon i) = Aeson.String (mconcat [":", i, ":"]) -instance Aeson.ToJSON Message where-  toJSON m = Aeson.object [ "channel" .= (m ^. destination)-                          , "icon_emoji" .= (m ^. iconEmoji)-                          , "username" .= (m ^. username)-                          , "text" .= (m ^. text)-                          ]- newtype Slack m = Slack (ReaderT Account IO m)   deriving (Functor, Applicative, Monad, MonadIO, MonadReader Account) -say :: Message -> Slack (Wreq.Response ByteString)-say msg = do+say :: Message -> Room -> Slack (Wreq.Response ByteString)+say msg room = do   Account token path <- ask   let opts = Wreq.defaults & Wreq.param "token" .~ [Text.pack token]-  liftIO $ Wreq.postWith opts path (Aeson.toJSON msg)+  liftIO $ Wreq.postWith opts path (Aeson.toJSON payload)+  where payload = Aeson.object [ "channel" .= room+                               , "icon_emoji" .= (msg ^. iconEmoji)+                               , "username" .= (msg ^. username)+                               , "text" .= (msg ^. text)+                               ]  roomFromText :: User -> Text -> Room roomFromText u "directmessage" = Private u
+ changelog.md view
@@ -0,0 +1,4 @@+# 0.2.0.0 - Jul 27 2014++- `say` now takes an explicit room argument+- removed `destination` from `Message`s
tightrope.cabal view
@@ -1,5 +1,5 @@ name:                tightrope-version:             0.1.0.1+version:             0.2.0.0 synopsis:            Nice API for a Slackbot description:         Making bots for Slack is hard! But wait: now it's easy. license:             MIT@@ -9,7 +9,7 @@ -- copyright: category:            Web build-type:          Simple--- extra-source-files:+extra-source-files:  changelog.md cabal-version:       >=1.10  source-repository head@@ -22,11 +22,11 @@   -- other-extensions:   build-depends:       wai-extra == 3.*,                        base == 4.*,-                       wai,-                       wreq,-                       aeson,+                       wai == 3.*,+                       wreq == 0.1.*,+                       aeson == 0.8.*,                        bytestring,-                       lens,+                       lens == 4.3.*,                        mtl,                        text,                        containers,