54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
|
require 'hubspot/events_api'
|
||
|
require 'carto/tracking/services/pubsub_tracker'
|
||
|
|
||
|
module Resque
|
||
|
module TrackingJobs
|
||
|
module SendPubSubEvent
|
||
|
include Carto::Common::JobLogger
|
||
|
|
||
|
@queue = :tracker
|
||
|
|
||
|
def self.perform(user_id, name, properties)
|
||
|
PubSubTracker.instance.send_event(:metrics, user_id, name, properties)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
module SendSegmentEvent
|
||
|
include Carto::Common::JobLogger
|
||
|
extend ::LoggerHelper
|
||
|
|
||
|
ANONYMOUS_SEGMENT_USER_ID = '00000000-0000-0000-0000-000000000000'.freeze
|
||
|
|
||
|
@queue = :tracker
|
||
|
|
||
|
def self.perform(user_id, name, properties)
|
||
|
return unless segment_api_key = Cartodb.get_config(:segment, 'api_key')
|
||
|
|
||
|
segment = Segment::Analytics.new(write_key: segment_api_key)
|
||
|
segment.track(user_id: user_id || ANONYMOUS_SEGMENT_USER_ID, event: name, properties: properties)
|
||
|
segment.flush
|
||
|
rescue StandardError => e
|
||
|
log_warning(message: "Can't report to Segment", exception: e, event: { name: name }, properties: properties)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
module SendHubspotEvent
|
||
|
include Carto::Common::JobLogger
|
||
|
extend ::LoggerHelper
|
||
|
|
||
|
@queue = :tracker
|
||
|
|
||
|
def self.perform(id, params)
|
||
|
events_api = ::Hubspot::EventsAPI.instance
|
||
|
return unless events_api.enabled?
|
||
|
|
||
|
code, body = events_api.report(id, params: params)
|
||
|
|
||
|
if code != '200' || body.blank?
|
||
|
log_error(message: 'Carto::Tracking: Hubspot service error', event: { id: id }, params: params)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|