flowdock-rest-0.1.0.0: src/Chat/Flowdock/REST/URLs.hs
-- |
-- Module : Chat.Flowdock.REST.URLs
-- License : BSD3
-- Maintainer : Oleg Grenrus <oleg.grenrus@iki.fi>
module Chat.Flowdock.REST.URLs (
-- * Flows
-- | See <https://www.flowdock.com/api/flows>
flowsUrl,
allFlowsUrl,
flowGetUrl,
-- * Messages
-- | See <https://www.flowdock.com/api/messages>
messagesUrl,
-- * Users
-- | See <https://www.flowdock.com/api/users>
usersUrl,
orgUsersUrl,
flowUsersUrl,
-- * Organisations
-- | See <https://www.flowdock.com/api/organizations>
organisationsUrl,
organisationUrl,
) where
import Data.List
import Data.Monoid
import Chat.Flowdock.REST.Internal
import Chat.Flowdock.REST.User
import Chat.Flowdock.REST.Organisation
import Chat.Flowdock.REST.Flow
import Chat.Flowdock.REST.Message
apiBaseUrl :: String
apiBaseUrl = "https://api.flowdock.com"
mkUrl :: [String] -> ApiUrl a
mkUrl parts = ApiUrl $ apiBaseUrl <> "/" <> intercalate "/" parts
flowsUrl :: ApiUrl [Flow]
flowsUrl = mkUrl ["flows"]
allFlowsUrl :: ApiUrl [Flow]
allFlowsUrl = mkUrl ["flows", "all"]
flowGetUrl :: ParamName Organisation -> ParamName Flow -> ApiUrl Flow
flowGetUrl (ParamName org) (ParamName flow) = mkUrl ["flows", org, flow]
messagesUrl :: ParamName Organisation -> ParamName Flow -> ApiUrl [Message]
messagesUrl (ParamName org) (ParamName flow) = mkUrl ["flows", org, flow, "messages"]
usersUrl :: ApiUrl [User]
usersUrl = mkUrl ["users"]
flowUsersUrl :: ParamName Organisation -> ParamName Flow -> ApiUrl [User]
flowUsersUrl (ParamName org) (ParamName flow) = mkUrl ["flows", org, flow, "users"]
orgUsersUrl :: ParamName Organisation -> ApiUrl [User]
orgUsersUrl (ParamName org) = mkUrl ["organizations", org, "users"]
organisationsUrl :: ApiUrl [Organisation]
organisationsUrl = mkUrl ["organizations"]
organisationUrl :: ParamName Organisation -> ApiUrl Organisation
organisationUrl (ParamName org) = mkUrl ["organizations", org]