mailchimp 0.1.1 → 0.2.0
raw patch · 7 files changed
+225/−181 lines, 7 filesdep +generics-sopdep ~aesondep ~http-clientdep ~http-client-tlsPVP ok
version bump matches the API change (PVP)
Dependencies added: generics-sop
Dependency ranges changed: aeson, http-client, http-client-tls, servant, servant-client
API changes (from Hackage documentation)
- Web.MailChimp: Cleaned :: ListMemberStatus
- Web.MailChimp: Client :: (forall m. MonadIO m => m (Either ServantError Object)) -> (ListId -> ListClient) -> Client
- Web.MailChimp: ListClient :: ListMemberClient -> ListClient
- Web.MailChimp: ListMemberClient :: (forall m. MonadIO m => ListMemberRequest -> m (Either ServantError ListMemberResponse)) -> (forall m. MonadIO m => m (Either ServantError [ListMemberResponse])) -> (forall m. MonadIO m => ListMemberId -> m (Either ServantError ListMemberResponse)) -> (forall m. MonadIO m => ListMemberId -> ListMemberRequest -> m (Either ServantError ListMemberResponse)) -> (forall m. MonadIO m => ListMemberId -> ListMemberRequest -> m (Either ServantError ListMemberResponse)) -> (forall m. MonadIO m => ListMemberId -> m (Either ServantError String)) -> ListMemberClient
- Web.MailChimp: ListMemberRequest :: Text -> [(Text, Text)] -> ListMemberStatus -> [(Text, Value)] -> ListMemberRequest
- Web.MailChimp: ListMemberResponse :: ListMemberId -> ListMemberResponse
- Web.MailChimp: Pending :: ListMemberStatus
- Web.MailChimp: Subscribed :: ListMemberStatus
- Web.MailChimp: Unsubscribed :: ListMemberStatus
- Web.MailChimp: [addListMember] :: ListMemberClient -> forall m. MonadIO m => ListMemberRequest -> m (Either ServantError ListMemberResponse)
- Web.MailChimp: [addOrUpdateListMember] :: ListMemberClient -> forall m. MonadIO m => ListMemberId -> ListMemberRequest -> m (Either ServantError ListMemberResponse)
- Web.MailChimp: [deleteListMember] :: ListMemberClient -> forall m. MonadIO m => ListMemberId -> m (Either ServantError String)
- Web.MailChimp: [getListMember] :: ListMemberClient -> forall m. MonadIO m => ListMemberId -> m (Either ServantError ListMemberResponse)
- Web.MailChimp: [getListMembers] :: ListMemberClient -> forall m. MonadIO m => m (Either ServantError [ListMemberResponse])
- Web.MailChimp: [listMemberClient] :: ListClient -> ListMemberClient
- Web.MailChimp: [listMemberEmailAddress] :: ListMemberRequest -> Text
- Web.MailChimp: [listMemberExtra] :: ListMemberRequest -> [(Text, Value)]
- Web.MailChimp: [listMemberId] :: ListMemberResponse -> ListMemberId
- Web.MailChimp: [listMemberMergeFields] :: ListMemberRequest -> [(Text, Text)]
- Web.MailChimp: [listMemberStatus] :: ListMemberRequest -> ListMemberStatus
- Web.MailChimp: [updateListMember] :: ListMemberClient -> forall m. MonadIO m => ListMemberId -> ListMemberRequest -> m (Either ServantError ListMemberResponse)
- Web.MailChimp: data Client
- Web.MailChimp: data ListClient
- Web.MailChimp: data ListMemberClient
- Web.MailChimp: data ListMemberRequest
- Web.MailChimp: data ListMemberResponse
- Web.MailChimp: data ListMemberStatus
- Web.MailChimp: makeClient :: Manager -> Key -> Maybe Client
- Web.MailChimp: makeListMemberClient :: Manager -> Key -> ListId -> Maybe ListMemberClient
- Web.MailChimp: makeListMemberRequest :: Text -> ListMemberStatus -> ListMemberRequest
- Web.MailChimp: makeManager :: IO Manager
- Web.MailChimp: type Id = Text
- Web.MailChimp: type Key = ByteString
- Web.MailChimp: type ListId = Id
- Web.MailChimp: type ListMemberId = Id
+ Web.MailChimp: AuthClient :: ClientM Object -> ListClient -> (ListId -> ListMemberClient) -> AuthClient
+ Web.MailChimp: MainClient :: (BasicAuthData -> AuthClient) -> MainClient
+ Web.MailChimp: [makeAuthClient] :: MainClient -> BasicAuthData -> AuthClient
+ Web.MailChimp: [makeListMemberClient] :: AuthClient -> ListId -> ListMemberClient
+ Web.MailChimp: data AuthClient
+ Web.MailChimp: instance GHC.Generics.Generic Web.MailChimp.AuthClient
+ Web.MailChimp: instance GHC.Generics.Generic Web.MailChimp.MainClient
+ Web.MailChimp: instance Generics.SOP.Universe.Generic Web.MailChimp.AuthClient
+ Web.MailChimp: instance Generics.SOP.Universe.Generic Web.MailChimp.MainClient
+ Web.MailChimp: instance Servant.Client.Client Web.MailChimp.AuthApi ~ client => Servant.Client.Generic.ClientLike client Web.MailChimp.AuthClient
+ Web.MailChimp: instance Servant.Client.Client Web.MailChimp.MainApi ~ client => Servant.Client.Generic.ClientLike client Web.MailChimp.MainClient
+ Web.MailChimp: makeAuthClientWithKey :: Key -> AuthClient
+ Web.MailChimp: makeBaseUrl :: Key -> Maybe BaseUrl
+ Web.MailChimp: makeMainClient :: MainClient
+ Web.MailChimp: newtype MainClient
+ Web.MailChimp: run :: MonadIO m => Manager -> Key -> ClientM a -> m (Either ServantError a)
+ Web.MailChimp.Common: type Id = Text
+ Web.MailChimp.Extra: makeManager :: IO Manager
+ Web.MailChimp.Key: parseDataCenter :: Key -> Either String DataCenter
+ Web.MailChimp.Key: type DataCenter = ByteString
+ Web.MailChimp.Key: type Key = ByteString
+ Web.MailChimp.List: ListClient :: ClientM [String] -> ListClient
+ Web.MailChimp.List: [getLists] :: ListClient -> ClientM [String]
+ Web.MailChimp.List: data ListClient
+ Web.MailChimp.List: instance GHC.Generics.Generic Web.MailChimp.List.ListClient
+ Web.MailChimp.List: instance Generics.SOP.Universe.Generic Web.MailChimp.List.ListClient
+ Web.MailChimp.List: instance Servant.Client.Client Web.MailChimp.List.ListApi ~ client => Servant.Client.Generic.ClientLike client Web.MailChimp.List.ListClient
+ Web.MailChimp.List: type ListApi = Get '[JSON] [String]
+ Web.MailChimp.List: type ListId = Id
+ Web.MailChimp.List.Member: Cleaned :: ListMemberStatus
+ Web.MailChimp.List.Member: ListMemberClient :: (ListMemberRequest -> ClientM ListMemberResponse) -> ClientM [ListMemberResponse] -> (ListMemberId -> ClientM ListMemberResponse) -> (ListMemberId -> ListMemberRequest -> ClientM ListMemberResponse) -> (ListMemberId -> ListMemberRequest -> ClientM ListMemberResponse) -> (ListMemberId -> ClientM String) -> ListMemberClient
+ Web.MailChimp.List.Member: ListMemberRequest :: Text -> [(Text, Text)] -> ListMemberStatus -> [(Text, Value)] -> ListMemberRequest
+ Web.MailChimp.List.Member: ListMemberResponse :: ListMemberId -> ListMemberResponse
+ Web.MailChimp.List.Member: Pending :: ListMemberStatus
+ Web.MailChimp.List.Member: Subscribed :: ListMemberStatus
+ Web.MailChimp.List.Member: Unsubscribed :: ListMemberStatus
+ Web.MailChimp.List.Member: [addListMember] :: ListMemberClient -> ListMemberRequest -> ClientM ListMemberResponse
+ Web.MailChimp.List.Member: [addOrUpdateListMember] :: ListMemberClient -> ListMemberId -> ListMemberRequest -> ClientM ListMemberResponse
+ Web.MailChimp.List.Member: [deleteListMember] :: ListMemberClient -> ListMemberId -> ClientM String
+ Web.MailChimp.List.Member: [getListMember] :: ListMemberClient -> ListMemberId -> ClientM ListMemberResponse
+ Web.MailChimp.List.Member: [getListMembers] :: ListMemberClient -> ClientM [ListMemberResponse]
+ Web.MailChimp.List.Member: [listMemberEmailAddress] :: ListMemberRequest -> Text
+ Web.MailChimp.List.Member: [listMemberExtra] :: ListMemberRequest -> [(Text, Value)]
+ Web.MailChimp.List.Member: [listMemberId] :: ListMemberResponse -> ListMemberId
+ Web.MailChimp.List.Member: [listMemberMergeFields] :: ListMemberRequest -> [(Text, Text)]
+ Web.MailChimp.List.Member: [listMemberStatus] :: ListMemberRequest -> ListMemberStatus
+ Web.MailChimp.List.Member: [updateListMember] :: ListMemberClient -> ListMemberId -> ListMemberRequest -> ClientM ListMemberResponse
+ Web.MailChimp.List.Member: data ListMemberClient
+ Web.MailChimp.List.Member: data ListMemberRequest
+ Web.MailChimp.List.Member: data ListMemberResponse
+ Web.MailChimp.List.Member: data ListMemberStatus
+ Web.MailChimp.List.Member: instance Data.Aeson.Types.FromJSON.FromJSON Web.MailChimp.List.Member.ListMemberResponse
+ Web.MailChimp.List.Member: instance Data.Aeson.Types.ToJSON.ToJSON Web.MailChimp.List.Member.ListMemberRequest
+ Web.MailChimp.List.Member: instance Data.Aeson.Types.ToJSON.ToJSON Web.MailChimp.List.Member.ListMemberStatus
+ Web.MailChimp.List.Member: instance GHC.Generics.Generic Web.MailChimp.List.Member.ListMemberClient
+ Web.MailChimp.List.Member: instance GHC.Show.Show Web.MailChimp.List.Member.ListMemberRequest
+ Web.MailChimp.List.Member: instance GHC.Show.Show Web.MailChimp.List.Member.ListMemberResponse
+ Web.MailChimp.List.Member: instance GHC.Show.Show Web.MailChimp.List.Member.ListMemberStatus
+ Web.MailChimp.List.Member: instance Generics.SOP.Universe.Generic Web.MailChimp.List.Member.ListMemberClient
+ Web.MailChimp.List.Member: instance Servant.Client.Client Web.MailChimp.List.Member.ListMemberApi ~ client => Servant.Client.Generic.ClientLike client Web.MailChimp.List.Member.ListMemberClient
+ Web.MailChimp.List.Member: makeListMemberRequest :: Text -> ListMemberStatus -> ListMemberRequest
+ Web.MailChimp.List.Member: type ListMemberApi = (ReqBody '[JSON] ListMemberRequest :> Post '[JSON] ListMemberResponse) :<|> (Get '[JSON] [ListMemberResponse] :<|> ((Capture "subscriber_hash" ListMemberId :> Get '[JSON] ListMemberResponse) :<|> ((Capture "subscriber_hash" ListMemberId :> (ReqBody '[JSON] ListMemberRequest :> Patch '[JSON] ListMemberResponse)) :<|> ((Capture "subscriber_hash" ListMemberId :> (ReqBody '[JSON] ListMemberRequest :> Put '[JSON] ListMemberResponse)) :<|> (Capture "subscriber_hash" ListMemberId :> Delete '[JSON] String)))))
+ Web.MailChimp.List.Member: type ListMemberId = Id
- Web.MailChimp: [getLinks] :: Client -> forall m. MonadIO m => m (Either ServantError Object)
+ Web.MailChimp: [getLinks] :: AuthClient -> ClientM Object
- Web.MailChimp: [makeListClient] :: Client -> ListId -> ListClient
+ Web.MailChimp: [makeListClient] :: AuthClient -> ListClient
Files
- CHANGELOG.md +4/−0
- README.md +8/−2
- mailchimp.cabal +10/−9
- src/Web/MailChimp.hs +108/−108
- src/Web/MailChimp/List.hs +31/−7
- src/Web/MailChimp/List/Member.hs +60/−39
- src/Web/MailChimp/Tutorial.hs +4/−16
CHANGELOG.md view
@@ -1,3 +1,7 @@+# 0.2.0++- Moved to Servant 0.10 (3931320)+ # 0.1.1 - Tested with GHC 8.0.1.
README.md view
@@ -2,14 +2,20 @@ [![][1]][0] -[0]: https://travis-ci.org/jpvillaisaza/mailchimp-haskell-[1]: https://travis-ci.org/jpvillaisaza/mailchimp-haskell.svg?branch=master+[0]: https://circleci.com/gh/jpvillaisaza/mailchimp-haskell+[1]: https://circleci.com/gh/jpvillaisaza/mailchimp-haskell.svg?style=svg ![][2] ![][3] [2]: https://www.stackage.org/package/mailchimp/badge/lts [3]: https://www.stackage.org/package/mailchimp/badge/nightly++## Coverage++- API Root+- Lists+ - Members ## License
mailchimp.cabal view
@@ -1,5 +1,5 @@ name: mailchimp-version: 0.1.1+version: 0.2.0 build-type: Simple cabal-version: >= 1.21@@ -33,23 +33,24 @@ src exposed-modules: Web.MailChimp- Web.MailChimp.Tutorial- other-modules:- Paths_mailchimp Web.MailChimp.Common Web.MailChimp.Extra Web.MailChimp.Key Web.MailChimp.List Web.MailChimp.List.Member+ Web.MailChimp.Tutorial+ other-modules:+ Paths_mailchimp build-depends:- aeson >= 0.11 && < 0.12+ aeson >= 1.1 && < 1.2 , attoparsec >= 0.13 && < 0.14 , base >= 4.8 && < 4.10 , bytestring- , http-client >= 0.4 && < 0.5- , http-client-tls >= 0.2 && < 0.3- , servant >= 0.7 && < 0.9- , servant-client >= 0.7 && < 0.9+ , generics-sop >= 0.2 && < 0.3+ , http-client >= 0.5 && < 0.6+ , http-client-tls >= 0.3 && < 0.4+ , servant >= 0.10 && < 0.11+ , servant-client >= 0.10 && < 0.11 , text >= 1.2 && < 1.3 , transformers default-language:
src/Web/MailChimp.hs view
@@ -1,7 +1,10 @@ {-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} ----------------------------------------------------------------------@@ -14,21 +17,14 @@ ---------------------------------------------------------------------- module Web.MailChimp- ( Key- , Client(..)- , makeClient- , ListClient(..)- , ListId- , ListMemberClient(..)- , makeListMemberClient- , ListMemberRequest(..)- , makeListMemberRequest- , ListMemberResponse(..)- , ListMemberId- , ListMemberStatus(..)- , Id+ ( MainClient (..)+ , makeMainClient+ , AuthClient (..)+ , makeAuthClientWithKey+ , run+ , makeBaseUrl , Paths_mailchimp.version- , makeManager+ , module X ) where @@ -38,171 +34,175 @@ -- base import Data.Proxy (Proxy (Proxy)) import Data.Void (Void)+import GHC.Generics -- bytestring import Data.ByteString.Char8 (unpack) +-- generics-sop+import Generics.SOP+ -- http-client import Network.HTTP.Client (Manager) -- mailchimp import qualified Paths_mailchimp-import Web.MailChimp.Common-import Web.MailChimp.Extra-import Web.MailChimp.Key-import Web.MailChimp.List-import Web.MailChimp.List.Member+import Web.MailChimp.Common as X+import Web.MailChimp.Extra as X+import Web.MailChimp.Key as X+import Web.MailChimp.List as X+import Web.MailChimp.List.Member as X -- servant import Servant.API -- servant-client-import Servant.Client hiding (Client)-import qualified Servant.Client as Servant+import Servant.Client+import Servant.Client.Generic -- transformers import Control.Monad.IO.Class-import Control.Monad.Trans.Except (ExceptT, runExceptT) -- | -- -- The MailChimp API, version 3.0. -type Api =+type MainApi = "3.0" :> BasicAuth "" Void- :> (Get '[JSON] Object :<|> ListApi)+ :> AuthApi -- | --+--++newtype MainClient =+ MainClient+ { makeAuthClient+ :: BasicAuthData+ -> AuthClient++ }+ deriving (GHC.Generics.Generic)+++-- |+--+--+instance Generics.SOP.Generic MainClient+++-- |+--+--++instance (Client MainApi ~ client) => ClientLike client MainClient+++-- |+--+--++makeMainClient :: MainClient+makeMainClient =+ mkClient (client (Proxy :: Proxy MainApi))+++-- |+--+--++type AuthApi =+ Get '[JSON] Object+ :<|>+ "lists"+ :> ListApi+ :<|>+ "lists"+ :> Capture "list_id" ListId+ :> "members"+ :> ListMemberApi+++-- |+-- -- A client for MailChimp. -data Client =- Client+data AuthClient =+ AuthClient { -- | -- -- getLinks- :: forall m . MonadIO m- => m (Either ServantError Object)+ :: ClientM Object -- | --- -- Create a client for a list.+ -- Create a client for lists. , makeListClient+ :: ListClient++ -- |+ --+ -- Create a client for list members.++ , makeListMemberClient :: ListId- -> ListClient+ -> ListMemberClient }+ deriving (GHC.Generics.Generic) -- | ----- Create a client for MailChimp.--makeClient- :: Manager -- ^ A manager- -> Key -- ^ A key- -> Maybe Client -- ^ The client-makeClient manager key =- case makeBaseUrl key of- Nothing ->- Nothing-- Just baseUrl ->- let- makeGetLinks :<|> client' = client (Proxy :: Proxy Api) basicAuthData-- getLinks :: MonadIO m => m (Either ServantError Object)- getLinks = run (makeGetLinks manager baseUrl)-- makeListClient = makeListClient' manager baseUrl client'+-- - basicAuthData = BasicAuthData "" key- in- Just Client {..}+instance Generics.SOP.Generic AuthClient -- | -- -- -makeListClient'- :: Manager- -> BaseUrl- -> Servant.Client ListApi- -> ListId- -> ListClient-makeListClient' manager baseUrl client' listId =- let- listMemberClient =- makeListMemberClient' manager baseUrl (client' listId)- in- ListClient {..}+instance (Client AuthApi ~ client) => ClientLike client AuthClient -- | -- -- -makeListMemberClient'- :: Manager- -> BaseUrl- -> Servant.Client ListMemberApi- -> ListMemberClient-makeListMemberClient' manager baseUrl listClient =+makeAuthClientWithKey+ :: Key+ -> AuthClient+makeAuthClientWithKey key = let- makeAddListMember- :<|> md- :<|> md2- :<|> md3- :<|> md4- :<|> makeDeleteListMember = listClient-- addListMember lm = run (makeAddListMember lm manager baseUrl)-- getListMembers :: MonadIO m => m (Either ServantError [ListMemberResponse])- getListMembers = run (md manager baseUrl)-- getListMember s = run (md2 s manager baseUrl)-- updateListMember s lm = run (md3 s lm manager baseUrl)-- addOrUpdateListMember s lm = run (md4 s lm manager baseUrl)-- deleteListMember s = run (makeDeleteListMember s manager baseUrl)+ MainClient {..} = makeMainClient in- ListMemberClient {..}+ makeAuthClient (BasicAuthData "" key) + -- | -- -- run :: MonadIO m- => ExceptT e IO a- -> m (Either e a)-run =- liftIO . runExceptT----- |------ Create a client for a list members.--makeListMemberClient- :: Manager+ => Manager -> Key- -> ListId- -> Maybe ListMemberClient-makeListMemberClient manager key listId =- listMemberClient . (`makeListClient` listId)- <$> makeClient manager key+ -> ClientM a+ -> m (Either ServantError a)+run manager key =+ let+ Just baseUrl =+ makeBaseUrl key+ in+ liftIO . flip runClientM (ClientEnv manager baseUrl) -- |
src/Web/MailChimp/List.hs view
@@ -1,4 +1,8 @@ {-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} ----------------------------------------------------------------------@@ -12,19 +16,28 @@ module Web.MailChimp.List ( ListApi- , ListClient(..)+ , ListClient (..) , ListId ) where +-- base+import GHC.Generics++-- generics-sop+import Generics.SOP+ -- mailchimp import Web.MailChimp.Common-import Web.MailChimp.List.Member -- servant import Servant.API +-- servant-client+import Servant.Client+import Servant.Client.Generic + -- | -- -- A list ID.@@ -38,10 +51,7 @@ -- type ListApi =- "lists"- :> Capture "list_id" ListId- :> "members"- :> ListMemberApi+ Get '[JSON] [String] -- |@@ -54,6 +64,20 @@ -- -- - listMemberClient :: ListMemberClient+ getLists :: ClientM [String] }+ deriving (GHC.Generics.Generic)+++-- |+--+--+instance Generics.SOP.Generic ListClient+++-- |+--+--++instance (Client ListApi ~ client) => ClientLike client ListClient
src/Web/MailChimp/List/Member.hs view
@@ -1,7 +1,10 @@ {-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} ----------------------------------------------------------------------@@ -15,12 +18,12 @@ module Web.MailChimp.List.Member ( ListMemberApi- , ListMemberClient(..)- , ListMemberRequest(..)+ , ListMemberClient (..)+ , ListMemberRequest (..) , makeListMemberRequest- , ListMemberResponse(..)+ , ListMemberResponse (..) , ListMemberId- , ListMemberStatus(..)+ , ListMemberStatus (..) ) where @@ -28,6 +31,12 @@ import Data.Aeson import qualified Data.Aeson as Aeson +-- base+import GHC.Generics++-- generics-sop+import Generics.SOP+ -- mailchimp import Web.MailChimp.Common @@ -36,41 +45,44 @@ -- servant-client import Servant.Client+import Servant.Client.Generic -- text import Data.Text (Text) --- transformers-import Control.Monad.IO.Class (MonadIO) - type ListMemberId = Id + -- | -- -- type ListMemberApi =- ReqBody '[JSON] ListMemberRequest- :> Post '[JSON] ListMemberResponse-- :<|> Get '[JSON] [ListMemberResponse]+ ReqBody '[JSON] ListMemberRequest+ :> Post '[JSON] ListMemberResponse - :<|> Capture "subscriber_hash" ListMemberId- :> Get '[JSON] ListMemberResponse+ :<|>+ Get '[JSON] [ListMemberResponse] - :<|> Capture "subscriber_hash" ListMemberId- :> ReqBody '[JSON] ListMemberRequest- :> Patch '[JSON] ListMemberResponse+ :<|>+ Capture "subscriber_hash" ListMemberId+ :> Get '[JSON] ListMemberResponse - :<|> Capture "subscriber_hash" ListMemberId- :> ReqBody '[JSON] ListMemberRequest- :> Put '[JSON] ListMemberResponse+ :<|>+ Capture "subscriber_hash" ListMemberId+ :> ReqBody '[JSON] ListMemberRequest+ :> Patch '[JSON] ListMemberResponse + :<|>+ Capture "subscriber_hash" ListMemberId+ :> ReqBody '[JSON] ListMemberRequest+ :> Put '[JSON] ListMemberResponse - :<|> Capture "subscriber_hash" ListMemberId- :> Delete '[JSON] String+ :<|>+ Capture "subscriber_hash" ListMemberId+ :> Delete '[JSON] String -- |@@ -84,57 +96,66 @@ -- Add a new list member. addListMember- :: forall m . MonadIO m- => ListMemberRequest- -> m (Either ServantError ListMemberResponse)+ :: ListMemberRequest+ -> ClientM ListMemberResponse -- | -- -- Get information about members in a list. , getListMembers- :: forall m . MonadIO m- => m (Either ServantError [ListMemberResponse])+ :: ClientM [ListMemberResponse] -- | -- -- Get information about a specific list member. , getListMember- :: forall m . MonadIO m- => ListMemberId- -> m (Either ServantError ListMemberResponse)+ :: ListMemberId+ -> ClientM ListMemberResponse -- | -- -- Update a list member. , updateListMember- :: forall m . MonadIO m- => ListMemberId+ :: ListMemberId -> ListMemberRequest- -> m (Either ServantError ListMemberResponse)+ -> ClientM ListMemberResponse -- | -- -- Add or update a list member. , addOrUpdateListMember- :: forall m . MonadIO m- => ListMemberId+ :: ListMemberId -> ListMemberRequest- -> m (Either ServantError ListMemberResponse)+ -> ClientM ListMemberResponse -- | -- -- Remove a list member. , deleteListMember- :: forall m . MonadIO m- => ListMemberId- -> m (Either ServantError String)+ :: ListMemberId+ -> ClientM String }+ deriving (GHC.Generics.Generic)+++-- |+--+--++instance Generics.SOP.Generic ListMemberClient+++-- |+--+--++instance (Client ListMemberApi ~ client) => ClientLike client ListMemberClient -- |
src/Web/MailChimp/Tutorial.hs view
@@ -35,12 +35,8 @@ listId <- fmap Text.pack (getEnv "MAILCHIMP_LIST_ID") let- Just Client {..} =- makeClient manager key-- let- Just ListMemberClient {..} =- makeListMemberClient manager key listId+ AuthClient {..} = makeAuthClientWithKey key+ ListMemberClient {..} = makeListMemberClient listId let member =@@ -48,16 +44,8 @@ { listMemberMergeFields = [("FNAME", "Juan")] } - eitherLinks <- getLinks-- case eitherLinks of- Left err ->- putStrLn $ "Error: " ++ show err-- Right msg ->- print msg-- eitherAdd <- addListMember member+ eitherAdd <- run manager key (addListMember member)+-- eitherAdd <- run manager key (getLinks (BasicAuthData "" key)) case eitherAdd of Left err ->