Class: NeverBounce::CLI::Script::RequestMaker
- Inherits:
-
Meaningful
- Object
- Base
- Meaningful
- NeverBounce::CLI::Script::RequestMaker
- Defined in:
- lib/never_bounce/cli/script/request_maker.rb
Overview
An API request maker script base class.
Direct Known Subclasses
AccountInfo, JobsCreate, JobsDelete, JobsDownload, JobsParse, JobsResults, JobsSearch, JobsStart, JobsStatus, POEConfirm, SingleCheck
Constant Summary collapse
- SHARED_ENVARS =
Shared envar defaults.
{ "AUTO_START" => ["Start processing the job immediately after parsing", ["y", "n"]], "RUN_SAMPLE" => ["Run this job as a sample", ["y", "n"]], }
Instance Attribute Summary collapse
- #api_key ⇒ String
- #api_url ⇒ String
-
#request ⇒ Object
abstract
An instance of
API::Request::Base
successor. -
#request_curl ⇒ Array
Request’s cURL representation.
-
#response ⇒ Object
An
API::Response::Base
successor instance. -
#server_raw ⇒ String
Raw server response text.
-
#session ⇒ Object
An instance of
API::Session
built around #request. - #user_config ⇒ UserConfig
Attributes inherited from Meaningful
#banner_text, #envar_text, #help_text, #manifest, #options_text
Attributes inherited from Base
Instance Method Summary collapse
-
#get_table_value(r, hspec) ⇒ Object
private
Extract response’s value according to a heading spec.
-
#inil(v) ⇒ String
private
“Inspect or nil” – format a scalar for table-friendly output.
-
#print_curl_request ⇒ Object
Print request as a ready-to-run cURL command.
-
#print_error_response ⇒ Object
Print error response as a standard table.
-
#print_server_raw ⇒ Object
Print raw response.
-
#slim_main1 ⇒ Object
————————————— Main.
Methods inherited from Meaningful
#call_slim_main, error_klasses, format_envar_examples, #handle_help_and_options, #help?, #main, #option_parser, #options, #slim_main
Methods inherited from Base
#env_falsey?, #env_truthy?, env_value_truthy?, #main, #system, #verbose?
Instance Attribute Details
#api_key ⇒ String
25 26 27 |
# 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 ⇒ String
31 32 33 34 35 |
# 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 |
#request ⇒ Object
An instance of API::Request::Base
successor.
41 42 43 |
# 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 ⇒ Array
Request’s cURL representation. Default is request.to_curl
48 49 50 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 48 def request_curl require_attr(:request).to_curl end |
#response ⇒ Object
An API::Response::Base
successor instance.
55 56 57 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 55 def response @response ||= require_attr(:session).response end |
#server_raw ⇒ String
Raw server response text. Default is session.server_raw
. This attribute is used by RAW=y
mode only.
63 64 65 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 63 def server_raw @server_raw ||= require_attr(:session).server_raw end |
#session ⇒ Object
An instance of API::Session
built around #request.
70 71 72 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 70 def session @session ||= API::Session.new(request: require_attr(:request)) end |
#user_config ⇒ UserConfig
76 77 78 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 76 def user_config @user_config ||= UserConfig.new end |
Instance Method Details
#get_table_value(r, hspec) ⇒ Object (private)
Extract response’s value according to a heading spec.
get_table_value(reasponse, ["ID", :id, :right])
85 86 87 88 89 90 91 |
# 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) ⇒ String (private)
“Inspect or nil” – format a scalar for table-friendly output.
inil(5) # => "5"
inil(nil) # => "-"
100 101 102 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 100 def inil(v) v.nil?? "-" : v.inspect end |
#print_curl_request ⇒ Object
Print request as a ready-to-run cURL command. Return 0.
106 107 108 109 |
# 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 ⇒ Object
Print error response as a standard table. Return 1.
return print_error_response if response_error?
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# 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_server_raw ⇒ Object
Print raw response. Return 0.
return print_raw_response if env_truthy? "RAW"
137 138 139 140 |
# File 'lib/never_bounce/cli/script/request_maker.rb', line 137 def print_server_raw stdout.puts server_raw 0 end |
#slim_main1 ⇒ Object
————————————— Main
144 145 146 147 148 149 150 151 152 153 |
# 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 |