# # campaign_tracking_service.rb # ConstantContact # # Copyright (c) 2013 Constant Contact. All rights reserved. module ConstantContact module Services class CampaignTrackingService < BaseService # Get bounces for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity def get_bounces(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_bounces'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) bounces = [] body['results'].each do |bounce_activity| bounces << Components::BounceActivity.create(bounce_activity) end Components::ResultSet.new(bounces, body['meta']) end # Get clicks for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity def get_clicks(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_clicks'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) clicks = [] body['results'].each do |click_activity| clicks << Components::ClickActivity.create(click_activity) end Components::ResultSet.new(clicks, body['meta']) end # Get forwards for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity def get_forwards(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_forwards'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) forwards = [] body['results'].each do |forward_activity| forwards << Components::ForwardActivity.create(forward_activity) end Components::ResultSet.new(forwards, body['meta']) end # Get opens for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity def get_opens(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_opens'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) opens = [] body['results'].each do |open_activity| opens << Components::OpenActivity.create(open_activity) end Components::ResultSet.new(opens, body['meta']) end # Get sends for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity def get_sends(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_sends'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) sends = [] body['results'].each do |send_activity| sends << Components::SendActivity.create(send_activity) end Components::ResultSet.new(sends, body['meta']) end # Get unsubscribes for a given campaign # @param [String] campaign_id - Campaign id # @param [Hash] params - query params to be appended to request # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity def get_unsubscribes(campaign_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_unsubscribes'), campaign_id) url = build_url(url, params) response = RestClient.get(url, get_headers()) body = JSON.parse(response.body) unsubscribes = [] body['results'].each do |unsubscribe_activity| unsubscribes << Components::UnsubscribeActivity.create(unsubscribe_activity) end Components::ResultSet.new(unsubscribes, body['meta']) end # Get a summary of reporting data for a given campaign # @param [Integer] campaign_id - Campaign id # @return [TrackingSummary] def get_summary(campaign_id) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.campaign_tracking_summary'), campaign_id) url = build_url(url) response = RestClient.get(url, get_headers()) Components::TrackingSummary.create(JSON.parse(response.body)) end end end end