Class: Utopia::Content::Response

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

Overview

A basic content response, including useful defaults for typical HTML5 content.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeResponse

Initialize an empty successful HTML response.



18
19
20
21
22
23
24
25
# File 'lib/utopia/content/response.rb', line 18

def initialize
	@status = 200
	@headers = {}
	@body = []
	
	# The default content type:
	self.content_type = "text/html; charset=utf-8"
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



29
30
31
# File 'lib/utopia/content/response.rb', line 29

def body
  @body
end

#headersObject (readonly)

Returns the value of attribute headers.



28
29
30
# File 'lib/utopia/content/response.rb', line 28

def headers
  @headers
end

#statusObject

Returns the value of attribute status.



27
28
29
# File 'lib/utopia/content/response.rb', line 27

def status
  @status
end

Instance Method Details

#cache!(duration = 3600, access: "public") ⇒ Object

Specify that the content could be cached.



57
58
59
60
61
62
# File 'lib/utopia/content/response.rb', line 57

def cache!(duration = 3600, access: "public")
	unless cache_control = @headers[CACHE_CONTROL] and cache_control.include?(NO_CACHE)
		@headers[CACHE_CONTROL] = "#{access}, max-age=#{duration}"
		@headers[EXPIRES] = (Time.now + duration).httpdate
	end
end

#contentObject

Join the response body into rendered content.



33
34
35
# File 'lib/utopia/content/response.rb', line 33

def content
	@body.join
end

#content_type=(value) ⇒ Object Also known as: content_type!

Specify the content type of the response data.



65
66
67
# File 'lib/utopia/content/response.rb', line 65

def content_type= value
	@headers[CONTENT_TYPE] = value
end

#do_not_cache!Object

Specifies that the content shouldn't be cached. Overrides cache! if already called.



51
52
53
54
# File 'lib/utopia/content/response.rb', line 51

def do_not_cache!
	@headers[CACHE_CONTROL] = "no-cache, must-revalidate"
	@headers[EXPIRES] = Time.now.httpdate
end

#lookup(tag) ⇒ Object

Decline tag lookup by default.



40
41
42
# File 'lib/utopia/content/response.rb', line 40

def lookup(tag)
	return nil
end

#to_responseObject

Convert this value to a protocol HTTP response.



46
47
48
# File 'lib/utopia/content/response.rb', line 46

def to_response
	Utopia::Response[@status, @headers, @body]
end