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