defmodule ExMicrosoftBot.Client.Attachments do
@moduledoc """
This module provides the functions to get information related to attachments.
"""
import ExMicrosoftBot.Client, only: [get: 1, deserialize_response: 2]
alias ExMicrosoftBot.Models, as: Models
alias ExMicrosoftBot.Client
@doc """
Get AttachmentInfo structure describing the attachment views.
@see [API Reference](https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0#get-attachment-information)
"""
@spec get_attachment(service_url :: String.t(), attachment_id :: String.t()) ::
{:ok, Models.AttachmentInfo.t()} | Client.error_type()
def get_attachment(service_url, attachment_id) do
service_url
|> attachments_url("/#{attachment_id}")
|> get()
|> deserialize_response(&Models.AttachmentInfo.parse/1)
end
@doc """
Get the named view as binary content.
@see [API Reference](https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0#get-attachment)
"""
@spec get_attachment_view(
service_url :: String.t(),
attachment_id :: String.t(),
view_id :: String.t()
) ::
{:ok, binary()} | Client.error_type()
def get_attachment_view(service_url, attachment_id, view_id) do
service_url
|> attachments_url("/#{attachment_id}/views/#{view_id}")
|> get()
|> deserialize_response(& &1)
end
defp attachments_url(service_url),
do: "#{service_url}/v3/attachments"
defp attachments_url(service_url, path),
do: attachments_url(service_url) <> path
end