class NeverBounce::CLI::Script::RequestMaker
An API request maker script base class.
Constants
- SHARED_ENVARS
Shared envar defaults.
Attributes
Public Instance Methods
@!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
@!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 request as a ready-to-run cURL command. Return 0.
# File lib/never_bounce/cli/script/request_maker.rb, line 106 def print_curl_request stdout.puts "curl #{request_curl.map(&:shellescape).join(' ')}" 0 end
Print error response as a standard table. Return 1.
return print_error_response if response_error?
# File lib/never_bounce/cli/script/request_maker.rb, line 114 def print_error_response "ErrorResponse".tap do |label| headings = [ ["Status", :status, :center], ["Message", :message], ["ExecTime", :execution_time, :right], ] table = Table.new( headings: headings.map { |ar| ar[0] }, rows: [headings.map { |ar| get_table_value(response, ar) }], ).align!(headings) stdout.puts "\n#{label}:" stdout.puts table end 1 end
Print raw response. Return 0.
return print_raw_response if env_truthy? "RAW"
# File lib/never_bounce/cli/script/request_maker.rb, line 137 def print_server_raw stdout.puts server_raw 0 end
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'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
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
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
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
# 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
@!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
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
“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