Class: CouchShell::Response

Inherits:
Object
  • Object
show all
Defined in:
lib/couch-shell/response.rb

Constant Summary collapse

JSON_CONTENT_TYPES =
[
  "application/json", "text/plain"
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(response) ⇒ Response

response is a HTTP::Message from httpclient library, or a Net::HTTP response



16
17
18
19
20
# File 'lib/couch-shell/response.rb', line 16

def initialize(response)
  @res = response
  @json_value = nil
  @computed_json_value = false
end

Instance Method Details

#attr(name, altname = nil) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/couch-shell/response.rb', line 66

def attr(name, altname = nil)
  name = name.to_sym
  altname = altname ? altname.to_sym : nil
  if json_value
    if json_value.respond_to?(name)
      json_value.__send__ name
    elsif altname && json_value.respond_to?(altname)
      json_value.__send__ altname
    end
  end
end

#bodyObject



56
57
58
# File 'lib/couch-shell/response.rb', line 56

def body
  @res.respond_to?(:content) ? @res.content : @res.body
end

#codeObject



44
45
46
# File 'lib/couch-shell/response.rb', line 44

def code
  @res.respond_to?(:status) ? @res.status.to_s : @res.code
end

#content_typeObject



60
61
62
63
64
# File 'lib/couch-shell/response.rb', line 60

def content_type
  @res.respond_to?(:content_type) ?
    @res.content_type :
    @res.contenttype.sub(/;[^;]*\z/, '')
end

#jsonObject

Response body parsed as json, represented as a ruby data structure. nil if body is empty, false if parsing failed.



24
25
26
# File 'lib/couch-shell/response.rb', line 24

def json
  json_value ? json_value.unwrapped! : json_value
end

#json_valueObject

Like json, but wrapped in a CouchShell::JsonValue.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/couch-shell/response.rb', line 29

def json_value
  unless @computed_json_value
    if JSON_CONTENT_TYPES.include?(content_type) &&
        !body.nil? && !body.empty?
      begin
        @json_value = JsonValue.wrap(JSON.parse(body))
      rescue JSON::ParserError
        @json_value = false
      end
    end
    @computed_json_value = true
  end
  @json_value
end

#messageObject



48
49
50
# File 'lib/couch-shell/response.rb', line 48

def message
  @res.respond_to?(:message) ? @res.message : @res.reason
end

#ok?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/couch-shell/response.rb', line 52

def ok?
  code.start_with?("2")
end