class NeverBounce::CLI::Script::RequestMaker

An API request maker script base class.

Constants

SHARED_ENVARS

Shared envar defaults.

Attributes

api_key[W]
request[W]
request_curl[W]
response[W]
server_raw[W]
session[W]
user_config[W]

Public Instance Methods

api_key() click to toggle source

@!attribute api_key @return [String]

# File lib/never_bounce/cli/script/request_maker.rb, line 25
def api_key
  @api_key ||= env["API_KEY"] || user_config.api_key or raise UsageError, "API key not given, use `API_KEY=`"
end
api_url() click to toggle source

@!attribute api_url @return [String]

# File lib/never_bounce/cli/script/request_maker.rb, line 31
def api_url
  @api_url ||= igetset(:api_url) do
    env["API_URL"] || user_config.api_url
  end
end
print_curl_request() click to toggle source

Print request as a ready-to-run cURL command. Return 0.

print_error_response() click to toggle source

Print error response as a standard table. Return 1.

return print_error_response if response_error?
print_server_raw() click to toggle source

Print raw response. Return 0.

return print_raw_response if env_truthy? "RAW"
request() click to toggle source

An instance of API::Request::Base successor. @abstract @!attribute request @return [Object]

# File lib/never_bounce/cli/script/request_maker.rb, line 41
def request
  @request or raise NotImplementedError, "Redefine `request` in your class: #{self.class}"
end
request_curl() click to toggle source

Request's cURL representation. Default is request.to_curl @!attribute request_curl @return [Array]

# File lib/never_bounce/cli/script/request_maker.rb, line 48
def request_curl
  require_attr(:request).to_curl
end
response() click to toggle source

An API::Response::Base successor instance. @!attribute response @return [Object]

# File lib/never_bounce/cli/script/request_maker.rb, line 55
def response
  @response ||= require_attr(:session).response
end
server_raw() click to toggle source

Raw server response text. Default is session.server_raw. This attribute is used by RAW=y mode only. @!attribute server_raw @return [String]

# File lib/never_bounce/cli/script/request_maker.rb, line 63
def server_raw
  @server_raw ||= require_attr(:session).server_raw
end
session() click to toggle source

An instance of API::Session built around {#request}. @!attribute session @return [Object]

# File lib/never_bounce/cli/script/request_maker.rb, line 70
def session
  @session ||= API::Session.new(request: require_attr(:request))
end
slim_main1() click to toggle source
# File lib/never_bounce/cli/script/request_maker.rb, line 144
def slim_main1
  # Perform common boilerplate actions.
  return print_curl_request if env_truthy? "CURL"

  # Any of these, unless during tests, touch `response`, which triggers the actual request.
  return print_server_raw if env_truthy? "RAW"
  return print_error_response if response.error?

  call_slim_main(0)
end
user_config() click to toggle source

@!attribute user_config @return [UserConfig]

# File lib/never_bounce/cli/script/request_maker.rb, line 76
def user_config
  @user_config ||= UserConfig.new
end

Private Instance Methods

get_table_value(r, hspec) click to toggle source

Extract response's value according to a heading spec.

get_table_value(reasponse, ["ID", :id, :right])
# File lib/never_bounce/cli/script/request_maker.rb, line 85
def get_table_value(r, hspec)
  if (m = hspec[1]).is_a? Proc
    m.(r)
  else
    r.public_send(m)
  end
end
inil(v) click to toggle source

“Inspect or nil” – format a scalar for table-friendly output.

inil(5)     # => "5"
inil(nil)   # => "-"

@return [String]

# File lib/never_bounce/cli/script/request_maker.rb, line 100
def inil(v)
  v.nil?? "-" : v.inspect
end