class GCR::Request

Attributes

body[R]
class_name[R]
route[R]

Public Class Methods

from_hash(hash_req) click to toggle source
# File lib/gcr/request.rb, line 10
def self.from_hash(hash_req)
  new(
    "route"      => hash_req["route"],
    "class_name" => hash_req["class_name"],
    "body"       => hash_req["body"],
  )
end
from_proto(route, proto_req, *_) click to toggle source
# File lib/gcr/request.rb, line 2
def self.from_proto(route, proto_req, *_)
  new(
    "route"      => route,
    "class_name" => proto_req.class.name,
    "body"       => proto_req.to_json(emit_defaults: true),
  )
end
new(opts) click to toggle source
# File lib/gcr/request.rb, line 20
def initialize(opts)
  @route      = opts["route"]
  @class_name = opts["class_name"]
  @body       = opts["body"]
end

Public Instance Methods

==(other) click to toggle source
# File lib/gcr/request.rb, line 38
def ==(other)
  return false unless route == other.route
  return false unless class_name == other.class_name

  parsed_body.keys.all? do |k|
    next true if GCR.ignored_fields.include?(k)
    parsed_body[k] == other.parsed_body[k]
  end
end
parsed_body() click to toggle source
# File lib/gcr/request.rb, line 26
def parsed_body
  @parsed_body ||= JSON.parse(body)
end
to_json(*_) click to toggle source
# File lib/gcr/request.rb, line 30
def to_json(*_)
  JSON.dump("route" => route, "class_name" => class_name, "body" => body)
end
to_proto() click to toggle source
# File lib/gcr/request.rb, line 34
def to_proto
  [route, Object.const_get(class_name).decode_json(body)]
end