Class: ApiTransformer::FrontendResponseBuilder
- Inherits:
-
Object
- Object
- ApiTransformer::FrontendResponseBuilder
- Defined in:
- lib/api_transformer/frontend_response_builder.rb
Overview
Processes the response block
Instance Attribute Summary collapse
-
#success(value = nil, &block) ⇒ Object
readonly
Returns the value of attribute success.
Instance Method Summary collapse
- #array(key, klass, array_data) ⇒ Object
- #attribute(key, value) ⇒ Object
- #body(value) ⇒ Object
- #content_type(value) ⇒ Object
- #cookie(key, value) ⇒ Object
- #do_streaming ⇒ Object
- #failure(run = true, &block) ⇒ Object
- #header(key, value) ⇒ Object
-
#initialize(env, options, block, route) ⇒ FrontendResponseBuilder
constructor
A new instance of FrontendResponseBuilder.
- #object(key, klass, object_data) ⇒ Object
- #send_body ⇒ Object
- #status(value) ⇒ Object
- #status_and_headers(backend_responses) ⇒ Object
- #stream(&block) ⇒ Object
- #stream_close ⇒ Object
- #stream_write(data) ⇒ Object
- #streaming? ⇒ Boolean
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, , block, route) @env = env = @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 |
#cookie(key, value) ⇒ Object
49 50 51 |
# File 'lib/api_transformer/frontend_response_builder.rb', line 49 def (key, value) @frontend_response.(key, value) end |
#do_streaming ⇒ Object
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_body ⇒ Object
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_close ⇒ Object
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
28 29 30 |
# File 'lib/api_transformer/frontend_response_builder.rb', line 28 def streaming? [:streaming] end |