Current section

Files

Jump to
wax lib api media.ex
Raw

lib/api/media.ex

defmodule Whatsapp.Api.Media do
@moduledoc """
Modulo para el manejo de archivos media de Whatsapp
"""
@parser Application.get_env(:wax, :parser)
alias Whatsapp.Models.MessageOutboundMedia
alias WhatsappApiRequestMedia
require Logger
@doc """
Carga el archivo al servidor de Whatsapp
"""
@spec upload(tuple(), Media.t()) :: tuple
def upload({url, auth_header}, %MessageOutboundMedia{data: data, mime_type: mime_type}) do
headers = [{"Content-Type", mime_type}, auth_header]
url
|> Kernel.<>("/media")
|> WhatsappApiRequestMedia.rate_limit_request(:post!, data, headers)
|> @parser.parse(:media_upload)
end
@doc """
Obtiene el archivo media del servidor de la aplicación de Whatsapp
"""
@spec download(tuple(), integer | String.t()) :: tuple
def download({url, auth_header}, media_id) do
url
|> Kernel.<>("/media/#{media_id}")
|> WhatsappApiRequestMedia.rate_limit_request(:get!, [auth_header])
|> @parser.parse(:media_download)
end
end