class PaperCup::Request

Constants

COMMAND_TEMPLATE

Attributes

body[RW]
headers[RW]
method[RW]
params[RW]
url[RW]

Public Class Methods

new(method:, url:, headers: {}, params: {}, body: "") click to toggle source
# File lib/paper_cup/request.rb, line 11
def initialize(method:, url:, headers: {}, params: {}, body: "")
  @url, @method, @headers, @params, @body = url, method, headers, params, body
end

Public Instance Methods

build_body() click to toggle source
# File lib/paper_cup/request.rb, line 41
def build_body
  body.empty? ? "" : "-d '#{body}'"
end
build_headers() click to toggle source
# File lib/paper_cup/request.rb, line 29
def build_headers
  @headers.map { |k, v| "-H '#{k}: #{v}'" }.join(" ")
end
build_params() click to toggle source
# File lib/paper_cup/request.rb, line 33
def build_params
  json_request? ? "-d '#{params.to_json}'" : "-d '#{params}'"
end
command() click to toggle source
# File lib/paper_cup/request.rb, line 19
def command
  COMMAND_TEMPLATE % {
    method:  method.upcase,
    headers: build_headers,
    params:  build_params,
    body:    build_body,
    url:     url
  }
end
exec() click to toggle source
# File lib/paper_cup/request.rb, line 15
def exec
  Response.new(Open3.capture3(command).first)
end
json_request?() click to toggle source
# File lib/paper_cup/request.rb, line 37
def json_request?
  @headers["Content-Type"] && @headers["Content-Type"].include?("json")
end