gitter 0.0.0.1 → 0.1
raw patch · 3 files changed
+56/−42 lines, 3 filesdep ~aesondep ~basedep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson, base, bytestring, exceptions, lens, lens-aeson, text, wreq
API changes (from Hackage documentation)
- Network.Gitter: withRoom :: MonadGitter gitter => Room -> GitterRoomT gitter a -> gitter a
+ Network.Gitter: withRoom :: Room -> GitterRoomT gitter a -> gitter a
Files
- gitter.cabal +9/−11
- src/Network/Gitter.hs +26/−17
- src/Network/Gitter/Types.hs +21/−14
gitter.cabal view
@@ -1,5 +1,5 @@ name: gitter-version: 0.0.0.1+version: 0.1 cabal-version: >=1.10 build-type: Simple license: GPL-3@@ -21,18 +21,16 @@ Network.Gitter.Monad Network.Gitter.Types build-depends:- aeson >=0.8.0.2 && <0.9,- base >=4.8.1.0 && <4.9,- bytestring >=0.10.6.0 && <0.11,- exceptions >=0.8.0.2 && <0.9,- lens >=4.12.3 && <4.13,- lens-aeson >=1.0.0.4 && <1.1,+ aeson >=0.11.2.1 && <0.12,+ base >=4.9.0.0 && <4.10,+ bytestring >=0.10.8.1 && <0.11,+ exceptions >=0.8.3 && <0.9,+ lens ==4.14.*,+ lens-aeson >=1.0.0.5 && <1.1, mtl >=2.2.1 && <2.3,- text >=1.2.1.3 && <1.3,- wreq >=0.4.0.0 && <0.5+ text >=1.2.2.1 && <1.3,+ wreq >=0.4.1.0 && <0.5 default-language: Haskell2010- default-extensions: GeneralizedNewtypeDeriving OverloadedStrings- RecordWildCards StandaloneDeriving TemplateHaskell hs-source-dirs: src other-modules: Control.Monad.Trans.X
src/Network/Gitter.hs view
@@ -1,6 +1,6 @@ {- Gitter API client — Haskell library- Copyright (C) 2015 Yuriy Syrovetskiy+ Copyright (C) 2015-2016 Yuriy Syrovetskiy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -16,6 +16,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. -} +{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+ module Network.Gitter ( Gitter(..) , GitterT@@ -24,20 +28,25 @@ , withRoom ) where -import Network.Gitter.Monad-import Network.Gitter.Types+import Control.Lens ((&~), (?=), (^.), (^?))+import Control.Monad (void)+import Control.Monad.Catch (MonadThrow)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Control.Monad.Reader (ReaderT, ask, runReaderT)+import Control.Monad.Trans (MonadTrans, lift)+import Data.Aeson (Value(String), object)+import Data.Aeson.Lens (_String, key)+import qualified Data.ByteString.Char8 as ByteString+import qualified Data.List as List+import Data.Monoid ((<>))+import Data.Text (Text)+import qualified Data.Text as Text+import Network.Wreq (asJSON, auth, defaults, oauth2Bearer, postWith,+ responseBody) -import Control.Lens-import Control.Monad.Catch-import Control.Monad.Reader-import Data.Aeson-import Data.Aeson.Lens-import Data.ByteString.Char8 as ByteString-import Data.List as List-import Data.Monoid-import Data.Text ( Text )-import qualified Data.Text as Text-import Network.Wreq+import Network.Gitter.Monad (MonadGitter (runGitterAction))+import Network.Gitter.Types (Gitter(..), ResourcePath, Room(ONETOONE,+ REPO), RoomId, RoomUri) newtype GitterT m a = GitterT (ReaderT Gitter m a) deriving (Applicative, Functor, Monad, MonadIO, MonadThrow, MonadTrans)@@ -49,10 +58,10 @@ deriving Functor roomUri :: Room -> RoomUri-roomUri (ONETOONE user) = user+roomUri (ONETOONE user) = user roomUri (REPO user repo) = user <> "/" <> repo -withRoom :: MonadGitter gitter => Room -> GitterRoomT gitter a -> gitter a+withRoom :: Room -> GitterRoomT gitter a -> gitter a withRoom room (GitterRoomT readerAction) = runReaderT readerAction room @@ -75,7 +84,7 @@ instance (MonadIO io, MonadThrow io) => MonadGitter (GitterT io) where runGitterAction path apiRequest = GitterT $ do- Gitter{..} <- ask+ Gitter{gitter_baseUrl, gitter_tokenFile} <- ask tokenFileContents <- liftIO $ ByteString.readFile gitter_tokenFile let token = normalizeSpace tokenFileContents url = List.intercalate "/" (gitter_baseUrl : fmap Text.unpack path)
src/Network/Gitter/Types.hs view
@@ -1,6 +1,6 @@ {- Gitter API client — Haskell library- Copyright (C) 2015 Yuriy Syrovetskiy+ Copyright (C) 2015-2016 Yuriy Syrovetskiy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -16,11 +16,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. -} +{-# LANGUAGE TemplateHaskell #-}+ module Network.Gitter.Types where -import Data.Aeson.TH-import Data.String.X-import Data.Text+import Data.Aeson.TH (SumEncoding(TaggedObject), contentsFieldName,+ defaultOptions, deriveJSON, fieldLabelModifier,+ sumEncoding, tagFieldName)+import Data.String.X (dropPrefix)+import Data.Text (Text) type ResourcePath = [Text] type UserName = Text@@ -28,19 +32,22 @@ type RoomId = Text type RoomUri = Text -data Room = ONETOONE UserName | REPO UserName RepoName+data Room+ = ONETOONE UserName+ | REPO UserName RepoName deriving Show deriveJSON- defaultOptions { sumEncoding = TaggedObject { tagFieldName = "type"- , contentsFieldName = "uri"- }- }+ defaultOptions+ { sumEncoding =+ TaggedObject{tagFieldName = "type", contentsFieldName = "uri"}+ } ''Room -data Gitter = Gitter { gitter_baseUrl :: String- , gitter_room :: Room- , gitter_tokenFile :: FilePath- }+data Gitter = Gitter+ { gitter_baseUrl :: String+ , gitter_room :: Room+ , gitter_tokenFile :: FilePath+ } -deriveJSON defaultOptions { fieldLabelModifier = dropPrefix "gitter_" } ''Gitter+deriveJSON defaultOptions{fieldLabelModifier = dropPrefix "gitter_"} ''Gitter