class GiantBombApi::Resource::Factory
Public Class Methods
constant_for(resource_name)
click to toggle source
# File lib/giant_bomb_api/resource/factory.rb, line 31 def self.constant_for(resource_name) "GiantBombApi::Resource::#{resource_name.to_s.classify}" end
discover_resource_name(string)
click to toggle source
# File lib/giant_bomb_api/resource/factory.rb, line 19 def self.discover_resource_name(string) return unless string match_data = string.match("/api/(?<resource_name>[a-z_]*)/") return if match_data.nil? return match_data["resource_name"] end
init_object(resource_name, json)
click to toggle source
# File lib/giant_bomb_api/resource/factory.rb, line 13 def self.init_object(resource_name, json) if resource_exists? resource_name constant_for(resource_name).constantize.new(json) end end
init_resource_from(json, attribute_name: nil, resource_name: nil)
click to toggle source
# File lib/giant_bomb_api/resource/factory.rb, line 4 def self.init_resource_from(json, attribute_name: nil, resource_name: nil) resource_name ||= discover_resource_name(json["api_detail_url"]) resource_name ||= attribute_name if resource_exists?(attribute_name) resource_name ||= attribute_name.to_s.singularize if resource_exists?(attribute_name.to_s.singularize) return if resource_name.nil? init_object(resource_name, json) end
resource_exists?(resource_name)
click to toggle source
# File lib/giant_bomb_api/resource/factory.rb, line 26 def self.resource_exists?(resource_name) return false unless resource_name.present? Object.const_defined? constant_for(resource_name) end