Class: Spikard::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/spikard/response.rb

Overview

Response object returned from route handlers. Mirrors the Python/Node response helpers so the native layer can extract status, headers, and JSON-serialisable content.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content: nil, body: nil, status_code: 200, headers: nil, content_type: nil) ⇒ Response

Returns a new instance of Response.



11
12
13
14
15
16
# File 'lib/spikard/response.rb', line 11

def initialize(content: nil, body: nil, status_code: 200, headers: nil, content_type: nil)
  @content = content.nil? ? body : content
  self.status_code = status_code
  self.headers = headers
  set_header('content-type', content_type) if content_type
end

Instance Attribute Details

#contentObject

Returns the value of attribute content.



8
9
10
# File 'lib/spikard/response.rb', line 8

def content
  @content
end

#headersObject

Returns the value of attribute headers.



9
10
11
# File 'lib/spikard/response.rb', line 9

def headers
  @headers
end

#status_codeObject

Returns the value of attribute status_code.



9
10
11
# File 'lib/spikard/response.rb', line 9

def status_code
  @status_code
end

Instance Method Details

Raises:

  • (ArgumentError)


36
37
38
39
40
41
# File 'lib/spikard/response.rb', line 36

def set_cookie(name, value, **options)
  raise ArgumentError, 'cookie name required' if name.nil? || name.empty?

  header_value = ["#{name}=#{value}", *cookie_parts(options)].join('; ')
  set_header('set-cookie', header_value)
end

#set_header(name, value) ⇒ Object



32
33
34
# File 'lib/spikard/response.rb', line 32

def set_header(name, value)
  @headers[name.to_s] = value.to_s
end

#statusObject



18
19
20
# File 'lib/spikard/response.rb', line 18

def status
  @status_code
end