defmodule ExMicrosoftBot.Client.Teams do @moduledoc """ This module provides functions for Teams (from Microsoft Teams). """ import ExMicrosoftBot.Client, only: [deserialize_response: 2, get: 1] alias ExMicrosoftBot.{Client, Models} @doc """ Returns details for the Team with the given ID. https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/get-teams-context?tabs=json#get-teams-details """ @spec details(service_url :: String.t(), team_id :: String.t()) :: {:ok, Models.Team.t()} | Client.error_type() def details(service_url, team_id) do service_url |> teams_url("/#{team_id}") |> get() |> deserialize_response(&Models.Team.parse/1) end @doc """ Returns all channels in the Team with the given ID. https://docs.microsoft.com/en-us/microsoftteams/platform/bots/how-to/get-teams-context?tabs=json#get-the-list-of-channels-in-a-team """ @spec channels(service_url :: String.t(), team_id :: String.t()) :: {:ok, Models.ChannelAccount.t()} | Client.error_type() def channels(service_url, team_id) do service_url |> teams_url("/#{team_id}/conversations") |> get() |> deserialize_response(&Models.Teams.ChannelsResponse.parse/1) end defp teams_url(service_url) do service_url = String.trim_trailing(service_url, "/") "#{service_url}/v3/teams" end defp teams_url(service_url, path), do: teams_url(service_url) <> path end