# # contact_tracking_service.rb # ConstantContact # # Copyright (c) 2013 Constant Contact. All rights reserved. module ConstantContact module Services class ContactTrackingService < BaseService class << self # Get bounces for a given contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<BounceActivity>] - Containing a results array of BounceActivity def get_bounces(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_bounces'), contact_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 contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<ClickActivity>] - Containing a results array of ClickActivity def get_clicks(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_clicks'), contact_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 contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<ForwardActivity>] - Containing a results array of ForwardActivity def get_forwards(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_forwards'), contact_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 contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<OpenActivity>] - Containing a results array of OpenActivity def get_opens(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_opens'), contact_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 contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<SendActivity>] - Containing a results array of SendActivity def get_sends(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_sends'), contact_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 contact # @param [String] contact_id - Contact id # @param [Hash] params - query parameters to be appended to request # @return [ResultSet<UnsubscribeActivity>] - Containing a results array of UnsubscribeActivity def get_unsubscribes(contact_id, params = {}) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_unsubscribes'), contact_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 contact # @param [String] contact_id - Contact id # @return [TrackingSummary] def get_summary(contact_id) url = Util::Config.get('endpoints.base_url') + sprintf(Util::Config.get('endpoints.contact_tracking_summary'), contact_id) url = build_url(url) response = RestClient.get(url, get_headers()) Components::TrackingSummary.create(JSON.parse(response.body)) end end end end end