Class: ApiTransformer::FrontendResponseBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/api_transformer/frontend_response_builder.rb

Overview

Processes the response block

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env, options, block, route) ⇒ FrontendResponseBuilder

Returns a new instance of FrontendResponseBuilder.



6
7
8
9
10
11
12
13
# File 'lib/api_transformer/frontend_response_builder.rb', line 6

def initialize(env, options, block, route)
  @env = env
  @options = options
  @block = block
  @route = route

  @frontend_response = FrontendResponse.new
end

Instance Attribute Details

#success(value = nil, &block) ⇒ Object (readonly)

Returns the value of attribute success.



4
5
6
# File 'lib/api_transformer/frontend_response_builder.rb', line 4

def success
  @success
end

Instance Method Details

#array(key, klass, array_data) ⇒ Object



65
66
67
68
# File 'lib/api_transformer/frontend_response_builder.rb', line 65

def array(key, klass, array_data)
  value = array_data.map { |data| object_hash(klass, data) }
  @frontend_response.set key, value
end

#attribute(key, value) ⇒ Object



57
58
59
# File 'lib/api_transformer/frontend_response_builder.rb', line 57

def attribute(key, value)
  @frontend_response.set key, value
end

#body(value) ⇒ Object



24
25
26
# File 'lib/api_transformer/frontend_response_builder.rb', line 24

def body(value)
  @frontend_response.body = value
end

#content_type(value) ⇒ Object



45
46
47
# File 'lib/api_transformer/frontend_response_builder.rb', line 45

def content_type(value)
  @frontend_response.content_type = value
end


49
50
51
# File 'lib/api_transformer/frontend_response_builder.rb', line 49

def cookie(key, value)
  @frontend_response.set_cookie(key, value)
end

#do_streamingObject



82
83
84
# File 'lib/api_transformer/frontend_response_builder.rb', line 82

def do_streaming
  @streaming_block.call if @streaming_block
end

#failure(run = true, &block) ⇒ Object



37
38
39
# File 'lib/api_transformer/frontend_response_builder.rb', line 37

def failure(run = true, &block)
  run && !@failure && @failure = block
end

#header(key, value) ⇒ Object



53
54
55
# File 'lib/api_transformer/frontend_response_builder.rb', line 53

def header(key, value)
  @frontend_response.set_header(key, value)
end

#object(key, klass, object_data) ⇒ Object



61
62
63
# File 'lib/api_transformer/frontend_response_builder.rb', line 61

def object(key, klass, object_data)
  @frontend_response.set key, object_hash(klass, object_data)
end

#send_bodyObject



70
71
72
# File 'lib/api_transformer/frontend_response_builder.rb', line 70

def send_body
  stream_write @frontend_response.body
end

#status(value) ⇒ Object



41
42
43
# File 'lib/api_transformer/frontend_response_builder.rb', line 41

def status(value)
  @frontend_response.status = value
end

#status_and_headers(backend_responses) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/api_transformer/frontend_response_builder.rb', line 15

def status_and_headers(backend_responses)
  @route[:helper_blocks].each { |block| instance_eval(&block) }
  instance_exec(backend_responses, &@block)
  add_failure_handlers(backend_responses)
  handle_success_or_failure(backend_responses)

  [@frontend_response.status, @frontend_response.headers]
end

#stream(&block) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/api_transformer/frontend_response_builder.rb', line 74

def stream(&block)
  if block
    @streaming_block = block
  else
    fail "a block is required when streaming"
  end
end

#stream_closeObject



90
91
92
# File 'lib/api_transformer/frontend_response_builder.rb', line 90

def stream_close
  @env.stream_close
end

#stream_write(data) ⇒ Object



86
87
88
# File 'lib/api_transformer/frontend_response_builder.rb', line 86

def stream_write(data)
  @env.stream_send data
end

#streaming?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/api_transformer/frontend_response_builder.rb', line 28

def streaming?
  options[:streaming]
end