Class: PaperCup::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/paper_cup/request.rb

Constant Summary collapse

COMMAND_TEMPLATE =
"curl -X %{method} -w %%{http_code} %{headers} %{params} %{body} %{url}"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method:, url:, headers: {}, params: {}, body: "") ⇒ Request

Returns a new instance of Request.



11
12
13
# 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

Instance Attribute Details

#bodyObject

Returns the value of attribute body.



7
8
9
# File 'lib/paper_cup/request.rb', line 7

def body
  @body
end

#headersObject

Returns the value of attribute headers.



7
8
9
# File 'lib/paper_cup/request.rb', line 7

def headers
  @headers
end

#methodObject

Returns the value of attribute method.



7
8
9
# File 'lib/paper_cup/request.rb', line 7

def method
  @method
end

#paramsObject

Returns the value of attribute params.



7
8
9
# File 'lib/paper_cup/request.rb', line 7

def params
  @params
end

#urlObject

Returns the value of attribute url.



7
8
9
# File 'lib/paper_cup/request.rb', line 7

def url
  @url
end

Instance Method Details

#build_bodyObject



41
42
43
# File 'lib/paper_cup/request.rb', line 41

def build_body
  body.empty? ? "" : "-d '#{body}'"
end

#build_headersObject



29
30
31
# File 'lib/paper_cup/request.rb', line 29

def build_headers
  @headers.map { |k, v| "-H '#{k}: #{v}'" }.join(" ")
end

#build_paramsObject



33
34
35
# File 'lib/paper_cup/request.rb', line 33

def build_params
  json_request? ? "-d '#{params.to_json}'" : "-d '#{params}'"
end

#commandObject



19
20
21
22
23
24
25
26
27
# 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

#execObject



15
16
17
# File 'lib/paper_cup/request.rb', line 15

def exec
  Response.new(Open3.capture3(command).first)
end

#json_request?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/paper_cup/request.rb', line 37

def json_request?
  @headers["Content-Type"] && @headers["Content-Type"].include?("json")
end