class Ssllabs::ApiObject
Attributes
all_attributes[RW]
fields[RW]
lists[RW]
refs[RW]
Public Class Methods
field_methods(name)
click to toggle source
# File lib/ssllabs/api_object.rb, line 29 def self.field_methods(name) is_bool = name.to_s.end_with?('?') attr_name = to_attr_name(name) api_name = to_api_name(name) class_eval <<-EOF, __FILE__, __LINE__ def #{attr_name}#{'?' if is_bool} @#{api_name} end def #{attr_name}=(value) @#{api_name} = value end EOF end
has_fields(*names)
click to toggle source
# File lib/ssllabs/api_object.rb, line 43 def self.has_fields(*names) names.each do |name| @all_attributes << to_api_name(name) @fields << to_api_name(name) field_methods(name) end end
has_object_ref(name, klass)
click to toggle source
# File lib/ssllabs/api_object.rb, line 57 def self.has_object_ref(name, klass) @all_attributes << to_api_name(name) @refs[to_api_name(name)] = klass field_methods(name) end
has_objects_list(name, klass)
click to toggle source
# File lib/ssllabs/api_object.rb, line 51 def self.has_objects_list(name, klass) @all_attributes << to_api_name(name) @lists[to_api_name(name)] = klass field_methods(name) end
inherited(base)
click to toggle source
# File lib/ssllabs/api_object.rb, line 14 def self.inherited(base) base.all_attributes = [] base.fields = [] base.lists = {} base.refs = {} end
load(attributes = {})
click to toggle source
# File lib/ssllabs/api_object.rb, line 63 def self.load(attributes = {}) obj = self.new attributes.each do |name,value| if @fields.include?(name) obj.instance_variable_set("@#{name}", value) elsif @lists.key?(name) obj.instance_variable_set("@#{name}", value.map { |v| @lists[name].load(v) }) unless value.nil? elsif @refs.key?(name) obj.instance_variable_set("@#{name}", @refs[name].load(value)) unless value.nil? end end obj end
to_api_name(name)
click to toggle source
# File lib/ssllabs/api_object.rb, line 21 def self.to_api_name(name) name.to_s.gsub(/\?$/,'').camelize(:lower) end
to_attr_name(name)
click to toggle source
# File lib/ssllabs/api_object.rb, line 25 def self.to_attr_name(name) name.to_s.gsub(/\?$/,'').gsub(/URI/,'Uri').underscore end
Public Instance Methods
to_api_hash(with_api_names: false)
click to toggle source
# File lib/ssllabs/api_object.rb, line 77 def to_api_hash(with_api_names: false) obj = {} self.class.all_attributes.each do |api_name| v = instance_variable_get("@#{api_name}") key_name = with_api_names ? api_name : self.class.to_attr_name(api_name) obj[key_name] = to_hash_value(v, with_api_names) end obj end
to_hash_value(entry, with_api_names)
click to toggle source
# File lib/ssllabs/api_object.rb, line 87 def to_hash_value(entry, with_api_names) if entry.respond_to?(:to_api_hash) entry.to_api_hash(with_api_names: with_api_names) elsif entry.is_a?(Array) entry.map { |entry| to_hash_value(entry, with_api_names) } else entry end end
to_json(opts={})
click to toggle source
# File lib/ssllabs/api_object.rb, line 97 def to_json(opts={}) to_api_hash(with_api_names: true).to_json end