Class: AlfredoClient

Inherits:
Object
  • Object
show all
Defined in:
lib/alfredo.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, client_id:, base_url: 'https://api.alfredosend.com') ⇒ AlfredoClient

Returns a new instance of AlfredoClient.



5
6
7
8
9
# File 'lib/alfredo.rb', line 5

def initialize(api_key:, client_id:, base_url: 'https://api.alfredosend.com')
  @api_key = api_key
  @client_id = client_id
  @base_url = base_url.sub(%r{/$}, '')
end

Instance Method Details

#send_transactional(template_id, payload, idempotency_key: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/alfredo.rb', line 11

def send_transactional(template_id, payload, idempotency_key: nil)
  uri = URI("#{@base_url}/v1/clients/#{@client_id}/transactional/templates/#{template_id}/send")
  request = Net::HTTP::Post.new(uri, {
    'Authorization' => "Bearer #{@api_key}",
    'Content-Type' => 'application/json',
  })
  request['Idempotency-Key'] = idempotency_key if idempotency_key
  request.body = JSON.generate(payload)
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(request) }
  body = JSON.parse(response.body)
  raise(body['message'] || "Alfredo respondió #{response.code}.") unless response.is_a?(Net::HTTPSuccess)
  body
end