class NeverBounce::API::Client

API client.

client = NeverBounce::API::Client.new(api_key: "api_key")

response = client.account_info
# => #<NeverBounce::API::Response::AccountInfo> or
# => #<NeverBounce::API::ErrorMessage>

response = client.single_check(credits_info: true, email: "support@neverbounce.com", timeout: 3)
# => #<NeverBounce::API::Response::JobsDownload> or
# => #<NeverBounce::API::ErrorMessage>

response = client.jobs_search(page: 1, per_page: 10)
# => #<NeverBounce::API::Response::JobsSearch> or
# => #<NeverBounce::API::ErrorMessage>

# ...

@see account_info @see jobs_create @see jobs_delete @see jobs_download @see jobs_parse @see jobs_results @see jobs_search @see jobs_start @see jobs_status @see single_check @see developers.neverbounce.com/v4.0/reference

Attributes

api_key[W]
api_version[W]

Public Instance Methods

account_info() click to toggle source

Make an account/info request. @return [Response::AccountInfo] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::AccountInfo @see developers.neverbounce.com/v4.0/reference#account-info

# File lib/never_bounce/api/client.rb, line 73
def account_info
  response_to(Request::AccountInfo.new({
    api_key: api_key,
    api_version: api_version,
  }))
end
api_key() click to toggle source

API key. @return [String]

# File lib/never_bounce/api/client.rb, line 44
def api_key
  @api_key or raise AttributeError, "Attribute must be set: api_key"
end
api_version() click to toggle source

API version. @return [String]

# File lib/never_bounce/api/client.rb, line 50
def api_version
  @api_version
end
jobs_create(auto_parse: false, auto_start: false, filename: nil, remote_input: nil, run_sample: false, supplied_input: nil, historical: nil) click to toggle source

Make a jobs/create request. @param auto_parse [Boolean] @param auto_start [Boolean] @param filename [Boolean] Default is "YYYYMMDD-HHMMSS.csv" based on current time. @param remote_input [String] E.g. "http://isp.com/emails.csv". @param run_sample [Boolean] @param supplied_input [Array<Array<email, name>>] E.g. [["alice@isp.com", "Alice Roberts"], ["bob.smith@gmail.com", "Bob Smith"]]. @return [Response::JobsCreate] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsCreate @see developers.neverbounce.com/v4.0/reference#jobs-create

# File lib/never_bounce/api/client.rb, line 93
def jobs_create(auto_parse: false, auto_start: false, filename: nil, remote_input: nil, run_sample: false, supplied_input: nil, historical: nil)
  raise ArgumentError, "`remote_input` and `supplied_input` can't both be given" if remote_input && supplied_input

  input_location = if (v = remote_input)
    # NOTE: Logical order: type, then value.
    input = v
    "remote_url"
  elsif (v = supplied_input)
    input = v
    "supplied"
  else
    # NOTE: Not exactly sure what to raise here. From procedure standpoint missing argument is an `ArgumentError`.
    raise ArgumentError, "Input not given, use `remote_input` or `supplied_input`"
  end

  filename ||= Time.now.strftime("%Y%m%d-%H%M%S.csv")

  response_to(API::Request::JobsCreate.new({
    api_key: api_key,
    api_version: api_version,
    auto_parse: auto_parse,
    auto_start: auto_start,
    filename: filename,
    input: input,
    input_location: input_location,
    run_sample: run_sample,
    historical: historical,
  }))
end
jobs_delete(job_id: nil) click to toggle source

Make a jobs/delete request. @param job_id [Integer] @return [Response::JobsDelete] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsDelete @see developers.neverbounce.com/v4.0/reference#jobs-delete

# File lib/never_bounce/api/client.rb, line 131
def jobs_delete(job_id: nil)
  response_to(Request::JobsDelete.new({
    api_key: api_key,
    api_version: api_version,
    job_id: job_id,
  }))
end
jobs_download(job_id: nil) click to toggle source

Make a jobs/download request. @param job_id [Integer] @return [Response::JobsDownload] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsDownload @see developers.neverbounce.com/v4.0/reference#jobs-download

# File lib/never_bounce/api/client.rb, line 147
def jobs_download(job_id: nil)
  response_to(Request::JobsDownload.new({
    api_key: api_key,
    api_version: api_version,
    job_id: job_id,
  }))
end
jobs_parse(auto_start: nil, job_id: nil) click to toggle source

Make a jobs/parse request. @param auto_start [Boolean] @param job_id [Integer] @return [Response::JobsParse] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsParse @see developers.neverbounce.com/v4.0/reference#jobs-parse

# File lib/never_bounce/api/client.rb, line 164
def jobs_parse(auto_start: nil, job_id: nil)
  response_to(Request::JobsParse.new({
    api_key: api_key,
    api_version: api_version,
    auto_start: auto_start,
    job_id: job_id,
  }))
end
jobs_results(job_id: nil, page: 1, per_page: nil) click to toggle source

Make a jobs/results request. @param job_id [Integer] @param page [Integer] @param per_page [Integer] @return [Response::JobsResults] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsResults @see developers.neverbounce.com/v4.0/reference#jobs-results

# File lib/never_bounce/api/client.rb, line 183
def jobs_results(job_id: nil, page: 1, per_page: nil)
  response_to(Request::JobsResults.new({
    api_key: api_key,
    api_version: api_version,
    job_id: job_id,
    page: page,
    per_page: per_page,
  }))
end
jobs_start(job_id: nil, run_sample: nil) click to toggle source

Make a jobs/start request. @param job_id [Integer] @param run_sample [Boolean] @return [Response::JobsResults] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsResults @see developers.neverbounce.com/v4.0/reference#jobs-start

# File lib/never_bounce/api/client.rb, line 222
def jobs_start(job_id: nil, run_sample: nil)
  response_to(Request::JobsStart.new({
    api_key: api_key,
    api_version: api_version,
    job_id: job_id,
    run_sample: run_sample,
  }))
end
jobs_status(job_id: nil) click to toggle source

Make a jobs/status request. @param job_id [Integer] @return [Response::JobsStatus] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::JobsStatus @see developers.neverbounce.com/v4.0/reference#jobs-status

# File lib/never_bounce/api/client.rb, line 239
def jobs_status(job_id: nil)
  response_to(Request::JobsStatus.new({
    api_key: api_key,
    api_version: api_version,
    job_id: job_id,
  }))
end
poe_confirm(email: nil, transaction_id: nil, confirmation_token: nil, result: nil) click to toggle source

Make a poe/confirm request. @param email [String] @param transaction_id [String] @param confirmation_token [String] @param result [String] @return [Response::POEConfirm] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::POEConfirm @see developers.neverbounce.com/v4.0/reference#poe-confirm

# File lib/never_bounce/api/client.rb, line 281
def poe_confirm(email: nil, transaction_id: nil, confirmation_token: nil, result: nil)
  response_to(Request::POEConfirm.new({
    api_key: api_key,
    api_version: api_version,
    email: email,
    transaction_id: transaction_id,
    confirmation_token: confirmation_token,
    result: result,
  }))
end
single_check(address_info: nil, credits_info: nil, email: nil, timeout: nil, historical: nil) click to toggle source

Make a single/check request. @param address_info [Boolean] @param credits_info [Boolean] @param email [String] @param timeout [Integer] @return [Response::SingleCheck] @return [Response::ErrorMessage] @raise [API::Error] @raise [StandardError] @see Request::SingleCheck @see developers.neverbounce.com/v4.0/reference#single-check

# File lib/never_bounce/api/client.rb, line 258
def single_check(address_info: nil, credits_info: nil, email: nil, timeout: nil, historical: nil)
  response_to(Request::SingleCheck.new({
    address_info: address_info,
    api_key: api_key,
    api_version: api_version,
    credits_info: credits_info,
    email: email,
    timeout: timeout,
    historical: historical,
  }))
end

Private Instance Methods

response_to(request) click to toggle source

Wrap request in a session, return response. @param request [Object] An instance of {Request::Base} successor. @return [Object] Result of {Session#response}.

# File lib/never_bounce/api/client.rb, line 59
def response_to(request)
  Session.new(request: request).response
end