lib/actv/asset.rb in actv-1.3.11 vs lib/actv/asset.rb in actv-1.4.0

- old
+ new

@@ -2,20 +2,22 @@ require 'actv/asset_component' require 'actv/asset_description' require 'actv/asset_image' require 'actv/asset_legacy_data' require 'actv/asset_price' +require 'actv/asset_reference' require 'actv/asset_status' require 'actv/asset_tag' require 'actv/asset_topic' require 'actv/asset_seo_url' require 'actv/identity' require 'actv/place' require 'actv/recurrence' module ACTV class Asset < ACTV::Identity + @types = [] attr_reader :assetGuid, :assetName, :assetDsc, :activityStartDate, :activityStartTime, :activityEndDate, :activityEndTime, :homePageUrlAdr, :isRecurring, :contactName, :contactEmailAdr, :contactPhone, :showContact, :publishDate, :createdDate, :modifiedDate, :authorName, :is_event, :is_article, :currencyCd, :contactTxt, :regReqMinAge, :regReqMaxAge, :regReqGenderCd @@ -41,10 +43,26 @@ alias currency_code currencyCd alias minimum_age regReqMinAge alias maximum_age regReqMaxAge alias required_gender regReqGenderCd + def self.inherited base + @types << base + end + + def self.types + @types + Array(self) + end + + def self.from_response response={} + AssetFactory.new(response[:body]).asset + end + + def self.valid? response + AssetValidator.new(response).valid? + end + def endurance_id if self.awendurance? query_values = Addressable::URI.parse(registrationUrlAdr.to_s).query_values query_values ||= {} query_values.fetch 'e', nil @@ -179,32 +197,15 @@ asset_tag = self.tags.find { |at| at.tag.description.downcase == description.downcase } asset_tag.tag.name if asset_tag end def is_event? - self.assetCategories.each do |category| - if category[:category][:categoryTaxonomy].downcase.start_with?('event') - return true - end - end false end def is_article? - is_article = false - if self.assetCategories.any? - self.assetCategories.each do |category| - if category[:category][:categoryName].downcase == 'articles' - is_article = true - end - end - else - # no categories so check the sourceSystem - is_article = articles_source? - end - - is_article + false end def has_location? self.place && place.has_lat_long? end @@ -247,10 +248,14 @@ def researched? self.sourceSystem[:legacyGuid].upcase == "B47B0828-23ED-4D85-BDF0-B22819F53332" rescue false end + def acm? + self.sourceSystem[:legacyGuid].upcase == "CA4EA0B1-7377-470D-B20D-BF6BEA23F040" rescue false + end + def kids? kids_friendly_source_system? && kids_interest? end def registration_status @@ -346,11 +351,11 @@ def image_path default_image = 'http://www.active.com/images/events/hotrace.gif' image = image_without_placeholder.imageUrlAdr rescue "" if image.empty? and (logoUrlAdr && logoUrlAdr != default_image && !(logoUrlAdr =~ URI::regexp).nil?) - image = logoUrlAdr + image = logoUrlAdr end image end @@ -360,10 +365,16 @@ def image image_without_placeholder end + def references + @references ||= Array(@attrs[:assetReferences]).map do |reference| + ACTV::AssetReference.new reference + end + end + private def image_without_placeholder default_image = 'http://www.active.com/images/events/hotrace.gif' current_image = nil @@ -393,23 +404,16 @@ else "" end end -private - def kids_interest? interests = meta_interests.to_a.map(&:downcase) ['kids', 'family'].any? { |tag| interests.include? tag } end def kids_friendly_source_system? - activenet? || awcamps30? || articles_source? || researched? - end - - def articles_source? - # this guid is equal to the Active.com Articles - self.sourceSystem.fetch(:legacyGuid, "").upcase == "CA4EA0B1-7377-470D-B20D-BF6BEA23F040" + activenet? || awcamps30? || acm? || researched? end end end