Class: Swagger::Response

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw) ⇒ Response

Returns a new instance of Response.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/swagger/response.rb', line 8

def initialize(raw)
  self.raw = raw

  case self.code
      when 500..510 then raise(ServerError, self.body)
    when 400 then
        e = nil
        if self.body['errors']
          e = ValidationError.new(self.body['errors'])
          if self.body['validation_failures']
            e.validation_failures = self.body['validation_failures']
          end
        else
          e = ValidationError.new(self.body)
        end
        raise(e)
      when 401 then raise(AuthenticationError, self.body)
      when 402..403 then raise(ClientError, self.body)
      when 299..399 then raise(ClientError, self.body)
      when 0 then raise(ClientError, raw.return_message)
  end
end

Instance Attribute Details

#rawObject

Returns the value of attribute raw.



6
7
8
# File 'lib/swagger/response.rb', line 6

def raw
  @raw
end

Instance Method Details

#bodyObject

If body is JSON, parse it Otherwise return raw string



47
48
49
50
51
# File 'lib/swagger/response.rb', line 47

def body
  JSON.parse raw.body
rescue
  raw.body
end

#codeObject



31
32
33
# File 'lib/swagger/response.rb', line 31

def code
  raw.code
end

#error_messageObject

Account for error messages that take different forms…



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

def error_message
  body['message']
rescue
  body
end

#formatObject

Extract the response format from the header hash e.g. => ‘application/json’



63
64
65
# File 'lib/swagger/response.rb', line 63

def format
  headers['Content-Type'].split("/").last.downcase
end

#headersObject

‘headers_hash` is a Typhoeus-specific extension of Hash, so simplify it back into a regular old Hash.



55
56
57
58
59
# File 'lib/swagger/response.rb', line 55

def headers
  h = {}
  raw.headers_hash.each {|k,v| h[k] = v }
  h
end

#json?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/swagger/response.rb', line 67

def json?
  format == 'json'
end

#pretty_bodyObject



75
76
77
78
79
80
# File 'lib/swagger/response.rb', line 75

def pretty_body
  return unless body.present?
  case format
  when 'json' then JSON.pretty_generate(body).gsub(/\n/, '<br/>')
  end
end

#pretty_headersObject



82
83
84
# File 'lib/swagger/response.rb', line 82

def pretty_headers
  JSON.pretty_generate(headers).gsub(/\n/, '<br/>')
end

#validation_messageObject



42
43
44
# File 'lib/swagger/response.rb', line 42

def validation_message
  body
end

#xml?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/swagger/response.rb', line 71

def xml?
  format == 'xml'
end