class Copperegg::Revealmetrics::Tag

Attributes

name[RW]
objects[RW]

Public Instance Methods

delete() click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 64
def delete
  self.class.request_200({:id => name, :request_type => "delete"})
end
load_attributes(attributes) click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 11
def load_attributes(attributes)
  @objects = []
  @objects_original = []

  attributes.each do |name, value|
    if name.to_s == "id"
      @id = value
    elsif !respond_to?("#{name}=")
      next
    elsif name.to_s == "objects"
      @objects = value.map { |object| object["idv"].to_s.gsub(/\|$/, "") }
      @objects_original = @objects.clone
    else
      send "#{name}=", value
    end
  end
end
save() click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 68
def save
  unless valid?
    raise ValidationError.new(@error)
  end

  remove_objects(@objects_original - @objects)
  add_objects(@objects - @objects_original)
  @objects_original = @objects.clone
end
to_hash() click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 82
def to_hash
  {"tag" => name, "ids" => objects}
end
update() click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 78
def update
  save
end
valid?() click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 33
def valid?
  @error = nil

  if self.name.nil? || self.name.to_s.strip.empty?
    @error = "Name can't be blank."
    return false
  end

  if self.name.to_s.match(/[^\w-]/)
    @error = "Name contains invalid characters."
    return false
  end

  if self.objects.nil? || self.objects.empty?
    @error = "You must define at least one object."
    return false
  end

  unless self.objects.kind_of?(Array)
    @error = "Invalid objects field."
    return false
  end

  if self.objects.any? { |object| !object.kind_of?(String) }
    @error = "Invalid object identifier."
    return false
  end

  true
end

Private Instance Methods

add_objects(ids) click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 92
def add_objects(ids)
  self.class.request_200({:tag => name, :ids => ids, :request_type => "post"}) unless ids.empty?
end
remove_objects(ids) click to toggle source
# File lib/copperegg/revealmetrics/tag.rb, line 88
def remove_objects(ids)
  self.class.request_200({:id => name, :ids => ids, :request_type => "delete"}) unless ids.empty?
end