module Chat.Flowdock.REST.URLs (
flowsUrl,
allFlowsUrl,
flowGetUrl,
messagesUrl,
usersUrl,
orgUsersUrl,
flowUsersUrl,
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]