class Mailgun::TemplateService < ApplicationService
  def initialize(from, to, subject, template, data)
    @from = from
    @to = to
    @subject = subject
    @template = template
    @data = ActiveSupport::HashWithIndifferentAccess.new(data)
  end

  def call
    RestClient.post(
      mailgun_uri,
      from: @from,
      to: @to,
      subject: @subject,
      template: @template,
      'h:X-Mailgun-Variables': mailgun_variables.to_json,
      'o:tag': @data[:tags] || []
    )
  end

  private
    def mailgun_uri
      "https://api:#{ENV['MAILGUN_TOKEN']}@api.mailgun.net/v3/app.sycamoreschool.com/messages"
    end

    def mailgun_variables
      @data[:variables] || @data
    end
end
