Class: Notisend::Client

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

Overview

HTTP core: builds Faraday connections, executes requests, maps errors

Constant Summary collapse

RETRY_OPTIONS =
{
  max: 2, interval: 0.2, backoff_factor: 2, methods: %i[get],
  exceptions: [Faraday::TimeoutError, Faraday::ConnectionFailed, 'Timeout::Error', Errno::ETIMEDOUT]
}.freeze
DEFAULT_MIME_TYPE =
'application/octet-stream'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_token: nil, base_url: nil, open_timeout: nil, timeout: nil, verify_ssl: nil, ca_bundle_file: nil, logger: nil) ⇒ Client

Returns a new instance of Client.



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/notisend/client.rb', line 14

def initialize(api_token: nil, base_url: nil, open_timeout: nil, timeout: nil,
               verify_ssl: nil, ca_bundle_file: nil, logger: nil)
  defaults = Notisend.configuration
  @api_token = api_token || defaults.api_token
  @base_url = base_url || defaults.base_url
  @open_timeout = open_timeout || defaults.open_timeout
  @timeout = timeout || defaults.timeout
  @verify_ssl = verify_ssl.nil? ? defaults.verify_ssl : verify_ssl
  @ca_bundle_file = ca_bundle_file || defaults.ca_bundle_file
  @logger = logger || defaults.logger
  ensure_token!
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



12
13
14
# File 'lib/notisend/client.rb', line 12

def base_url
  @base_url
end

Instance Method Details

#balanceObject



27
# File 'lib/notisend/client.rb', line 27

def balance = @balance ||= Resources::Balance.new(self)

#campaignsObject



35
# File 'lib/notisend/client.rb', line 35

def campaigns = @campaigns ||= Resources::Campaigns.new(self)

#delete(path) ⇒ Object



54
55
56
# File 'lib/notisend/client.rb', line 54

def delete(path)
  run_request { connection.delete(path) }
end

#get(path, params = {}) ⇒ Object



38
39
40
# File 'lib/notisend/client.rb', line 38

def get(path, params = {})
  run_request { connection.get(path, params.compact) }
end

#listsObject



30
# File 'lib/notisend/client.rb', line 30

def lists = @lists ||= Resources::Lists.new(self)

#messagesObject



28
# File 'lib/notisend/client.rb', line 28

def messages = @messages ||= Resources::Messages.new(self)

#organizationsObject



34
# File 'lib/notisend/client.rb', line 34

def organizations = @organizations ||= Resources::Organizations.new(self)

#parametersObject



31
# File 'lib/notisend/client.rb', line 31

def parameters = @parameters ||= Resources::Parameters.new(self)

#patch(path, payload = {}) ⇒ Object



50
51
52
# File 'lib/notisend/client.rb', line 50

def patch(path, payload = {})
  run_request { connection.patch(path, payload) }
end

#post(path, payload = {}, attachments: nil) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/notisend/client.rb', line 42

def post(path, payload = {}, attachments: nil)
  files = Array(attachments)
  return run_request { connection.post(path, payload) } if files.empty?

  body = payload.merge(attachments: files.map { |a| file_part(a) })
  run_request { multipart_connection.post(path, body) }
end

#recipientsObject



32
# File 'lib/notisend/client.rb', line 32

def recipients = @recipients ||= Resources::Recipients.new(self)

#segmentsObject



33
# File 'lib/notisend/client.rb', line 33

def segments = @segments ||= Resources::Segments.new(self)

#templatesObject



29
# File 'lib/notisend/client.rb', line 29

def templates = @templates ||= Resources::Templates.new(self)

#webhooksObject



36
# File 'lib/notisend/client.rb', line 36

def webhooks = @webhooks ||= Resources::Webhooks.new(self)