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.



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

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:



238
239
240
# File 'lib/groonga/client/response/base.rb', line 238

def body
  @body
end

#commandGroonga::Command

Returns The command for the request.

Returns:

  • (Groonga::Command)

    The command for the request.



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

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:



233
234
235
# File 'lib/groonga/client/response/base.rb', line 233

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.



241
242
243
# File 'lib/groonga/client/response/base.rb', line 241

def raw
  @raw
end

Class Method Details

.parse(command, raw_response) ⇒ Object



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
101
102
103
104
105
106
107
# File 'lib/groonga/client/response/base.rb', line 68

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
  when :arrow, :"apache-arrow"
    header, body = parse_apache_arrow(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



284
285
286
287
288
289
290
291
292
# File 'lib/groonga/client/response/base.rb', line 284

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



296
297
298
299
300
301
302
303
304
# File 'lib/groonga/client/response/base.rb', line 296

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



252
253
254
255
256
257
258
259
260
# File 'lib/groonga/client/response/base.rb', line 252

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



272
273
274
275
276
277
278
279
280
# File 'lib/groonga/client/response/base.rb', line 272

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



266
267
268
# File 'lib/groonga/client/response/base.rb', line 266

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



309
310
311
# File 'lib/groonga/client/response/base.rb', line 309

def success?
  return_code.zero?
end