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 )