Class: Groonga::Client::Response::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/groonga/client/response/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(command, header, body) ⇒ Base

Returns a new instance of Base.



202
203
204
205
206
207
# File 'lib/groonga/client/response/base.rb', line 202

def initialize(command, header, body)
  self.command = command
  self.header = header
  self.body = body
  self.raw = nil
end

Instance Attribute Details

#body::Hash

Returns The body of response. Its content is depends on command.

Returns:

  • (::Hash)

    The body of response. Its content is depends on command.

See Also:



197
198
199
# File 'lib/groonga/client/response/base.rb', line 197

def body
  @body
end

#commandGroonga::Command

Returns The command for the request.

Returns:

  • (Groonga::Command)

    The command for the request.



183
184
185
# File 'lib/groonga/client/response/base.rb', line 183

def command
  @command
end

#header::Array<Integer, Float, Float>

Returns The header of response. It consists of [return_code, start_time, elapsed_time_in_seconds] for success case. It consists of [return_code, start_time, elapsed_time_in_seconds, error_message, error_location] for error case.

Returns:

  • (::Array<Integer, Float, Float>)

    The header of response. It consists of [return_code, start_time, elapsed_time_in_seconds] for success case. It consists of [return_code, start_time, elapsed_time_in_seconds, error_message, error_location] for error case.

See Also:



192
193
194
# File 'lib/groonga/client/response/base.rb', line 192

def header
  @header
end

#rawString

Returns The unparsed response. It may be JSON, XML or Groonga command format.

Returns:

  • (String)

    The unparsed response. It may be JSON, XML or Groonga command format.



200
201
202
# File 'lib/groonga/client/response/base.rb', line 200

def raw
  @raw
end

Class Method Details

.parse(command, raw_response) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/groonga/client/response/base.rb', line 64

def parse(command, raw_response)
  return_code = nil
  case command.output_type
  when :json
    callback = command["callback"]
    if callback and
        /\A#{Regexp.escape(callback)}\((.+)\);\z/ =~ raw_response
      response = JSON.parse($1)
    else
      response = JSON.parse(raw_response)
    end
    if response.is_a?(::Array)
      header, body = response
      return_code = header[0] if header
    else
      header = response["header"]
      body = response["body"]
      return_code = header["return_code"] if header
    end
  when :xml
    header, body = parse_xml(raw_response)
    return_code = header[0] if header
  when :tsv
    header, body = parse_tsv(raw_response)
    return_code = header["return_code"] if header
  else
    header = nil
    body = raw_response
  end
  if header.nil? or return_code == 0
    response = new(command, header, body)
  else
    response = Error.new(command, header, body)
  end
  response.raw = raw_response
  response
end

Instance Method Details

#elapsed_timeFloat

Returns The elapsed time of the request.

Returns:

  • (Float)

    The elapsed time of the request.

Since:

  • 0.1.0



243
244
245
246
247
248
249
250
251
# File 'lib/groonga/client/response/base.rb', line 243

def elapsed_time
  if header.nil?
    0.0
  elsif header_v1?
    header[2]
  else
    header["elapsed_time"]
  end
end

#error_messageString?

Returns The error message of the response.

Returns:

  • (String, nil)

    The error message of the response.

Since:

  • 0.2.4



255
256
257
258
259
260
261
262
263
# File 'lib/groonga/client/response/base.rb', line 255

def error_message
  if header.nil?
    nil
  elsif header_v1?
    header[3]
  else
    (header["error"] || {})["message"]
  end
end

#return_codeInteger

Returns The return code of the response.

Returns:

  • (Integer)

    The return code of the response.

Since:

  • 0.2.6



211
212
213
214
215
216
217
218
219
# File 'lib/groonga/client/response/base.rb', line 211

def return_code
  if header.nil?
    0
  elsif header_v1?
    header[0]
  else
    header["return_code"] || 0
  end
end

#start_timeTime

Returns The time of the request is accepted.

Returns:

  • (Time)

    The time of the request is accepted.

Since:

  • 0.1.0



231
232
233
234
235
236
237
238
239
# File 'lib/groonga/client/response/base.rb', line 231

def start_time
  if header.nil?
    Time.at(0)
  elsif header_v1?
    Time.at(header[1])
  else
    Time.at(header["start_time"])
  end
end

#status_codeInteger

Deprecated.

since 0.2.6. Use #return_code instead.

Returns The status code of the response.

Returns:

  • (Integer)

    The status code of the response.

Since:

  • 0.1.0



225
226
227
# File 'lib/groonga/client/response/base.rb', line 225

def status_code
  return_code
end

#success?Boolean

Returns true if the request is processed successfully, false otherwise.

Returns:

  • (Boolean)

    true if the request is processed successfully, false otherwise.

Since:

  • 0.1.0



268
269
270
# File 'lib/groonga/client/response/base.rb', line 268

def success?
  return_code.zero?
end