Class: Joshua::Response
- Inherits:
-
Object
- Object
- Joshua::Response
- Defined in:
- lib/joshua/response.rb
Instance Method Summary collapse
- #[]=(key, value) ⇒ Object
- #data(value) ⇒ Object
- #data? ⇒ Boolean
-
#error(*args) ⇒ Object
add api response error.
- #error? ⇒ Boolean
- #error_detail(name, desc) ⇒ Object
-
#header(*args) ⇒ Object
forward header to rack_response.header.
-
#initialize(api) ⇒ Response
constructor
A new instance of Response.
-
#message(value) ⇒ Object
human readable response message.
-
#meta(key, value = nil) ⇒ Object
api meta response, any data is allowed.
-
#render ⇒ Object
render full api response.
Constructor Details
#initialize(api) ⇒ Response
Returns a new instance of Response.
5 6 7 8 9 10 |
# File 'lib/joshua/response.rb', line 5 def initialize api @api = api @out = {} @meta = {} @errors = {} end |
Instance Method Details
#[]=(key, value) ⇒ Object
12 13 14 |
# File 'lib/joshua/response.rb', line 12 def []= key, value key, value end |
#data(value) ⇒ Object
61 62 63 |
# File 'lib/joshua/response.rb', line 61 def data value @data ||= value end |
#data? ⇒ Boolean
65 66 67 |
# File 'lib/joshua/response.rb', line 65 def data? !@data.nil? end |
#error(*args) ⇒ Object
add api response error
40 41 42 43 44 45 46 47 48 |
# File 'lib/joshua/response.rb', line 40 def error *args return @errors unless args[0] desc, code = args.reverse @errors[:code] = code if code @errors[:messages] ||= [] @errors[:messages].push desc unless @errors[:messages].include?(desc) end |
#error? ⇒ Boolean
50 51 52 |
# File 'lib/joshua/response.rb', line 50 def error? !!(@errors[:messages] || @errors[:details]) end |
#error_detail(name, desc) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/joshua/response.rb', line 54 def error_detail name, desc error '%s (%s)' % [desc, name] @errors[:details] ||= {} @errors[:details][name] = desc end |
#header(*args) ⇒ Object
forward header to rack_response.header
17 18 19 20 21 22 23 |
# File 'lib/joshua/response.rb', line 17 def header *args if args.first @api.rack_response.header[args.first] = args[1] if @api.rack_response else @api.rack_response.header end end |
#message(value) ⇒ Object
human readable response message
26 27 28 |
# File 'lib/joshua/response.rb', line 26 def value @message = value end |
#meta(key, value = nil) ⇒ Object
api meta response, any data is allowed
31 32 33 34 35 36 37 |
# File 'lib/joshua/response.rb', line 31 def key, value = nil if value @meta[key] = value else @meta[key] end end |
#render ⇒ Object
render full api response
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/joshua/response.rb', line 70 def render {}.tap do |out| if @errors.keys.empty? out[:success] = true else out[:success] = false out[:error] = @errors end out[:meta] = @meta out[:message] = @message if @message out[:data] = @data unless @data.nil? out[:status] = error? ? 400 : 200 end end |