lib/sem4r/ad_group/ad_group.rb in sem4r-0.1.2 vs lib/sem4r/ad_group/ad_group.rb in sem4r-0.1.3
- old
+ new
@@ -63,17 +63,27 @@
def to_s
"#{@id ? @id : 'unsaved'} '#{@name}' (#{@status}) - #{@bid}"
end
+ # Build xml into Builder
+ #
+ # @param [Builder::XmlMarkup]
+ #
def xml(t)
t.campaignId campaign.id
t.name name
t.status "ENABLED"
@bids.to_xml(t) if @bids
end
+ #
+ # Marshall this object to xml
+ #
+ # @param [String] top level tag
+ # @return [Builder::XmlMarkup]
+ #
def to_xml(tag)
builder = Builder::XmlMarkup.new
builder.tag!(tag) { |t|
xml(t)
# xml.campaignId campaign.id
@@ -92,10 +102,15 @@
def self.create(campaign, &block)
new(campaign, &block).save
end
+ #
+ # Unmarshal this object from xml
+ #
+ # @param [Nokogiri::Element] xml element
+ #
def self.from_element(campaign, el)
new(campaign) do
@id = el.at_xpath("id").text.strip.to_i
name el.at_xpath("name").text.strip
status el.at_xpath("status").text.strip
@@ -113,22 +128,22 @@
private
def _save
unless @id
- soap_message = service.ad_group.create(credentials, to_xml("operand"))
+ soap_message = service.ad_group.create( credentials, to_xml("operand") )
add_counters( soap_message.counters )
rval = soap_message.response.xpath("//mutateResponse/rval").first
id = rval.xpath("value/id").first
@id = id.text.strip.to_i
end
end
public
def delete
- soap_message = service.ad_group.delete(credentials, @id)
+ soap_message = service.ad_group.delete( credentials, @id )
add_counters( soap_message.counters )
@id = -1 # logical delete
end
###########################################################################
@@ -177,11 +192,11 @@
end
private
def _ads
- soap_message = service.ad_group_ad.all(credentials, id)
+ soap_message = service.ad_group_ad.all( credentials, id )
add_counters( soap_message.counters )
rval = soap_message.response.xpath("//getResponse/rval").first
els = rval.xpath( "entries/ad" )
@ads = els.map do |el|
AdGroupAd.from_element( self, el )
@@ -197,11 +212,11 @@
xml = unsaved_ads.inject('') do |xml,ad|
o = AdGroupAdOperation.new.add(ad)
xml + o.to_xml("operations")
end
- soap_message = service.ad_group_ad.mutate(credentials, xml)
+ soap_message = service.ad_group_ad.mutate( credentials, xml )
add_counters( soap_message.counters )
els = soap_message.response.xpath("//mutateResponse/rval/value/ad/id")
els.each_with_index do |e,index|
id = e.text.strip.to_i
@@ -264,11 +279,11 @@
end
private
def _criterions
- soap_message = service.ad_group_criterion.all(credentials, id)
+ soap_message = service.ad_group_criterion.all( credentials, id )
add_counters( soap_message.counters )
rval = soap_message.response.xpath("//getResponse/rval").first
els = rval.xpath( "entries/criterion" )
@criterions = els.map do |el|
Criterion.from_element( self, el )
@@ -285,11 +300,11 @@
xml = unsaved_criterions.inject('') do |xml,ad|
o = AdGroupCriterionOperation.new.add(ad)
xml + o.to_xml("operations")
end
- soap_message = service.ad_group_criterion.mutate(credentials, xml)
+ soap_message = service.ad_group_criterion.mutate( credentials, xml )
add_counters( soap_message.counters )
els = soap_message.response.xpath("//mutateResponse/rval/value/criterion/id")
els.each_with_index do |e,index|
id = e.text.strip.to_i
unsaved_criterions[index].criterion.instance_eval{ @id = id }
@@ -322,10 +337,10 @@
end
private
def _ad_params
- soap_message = service.ad_param.all(credentials, id)
+ soap_message = service.ad_param.all( credentials, id )
add_counters( soap_message.counters )
rval = soap_message.response.xpath("//getResponse/rval").first
els = rval.xpath( "entries" )
@ad_params = els.map do |el|
AdParam.from_element( self, el )