packages feed

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 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