lib/stealth/services/facebook/client.rb in stealth-facebook-0.11.4 vs lib/stealth/services/facebook/client.rb in stealth-facebook-0.12.0

- old
+ new

@@ -51,9 +51,42 @@ MultiJson.load(response.body) else raise(Stealth::Errors::ServiceError, "Facebook error #{response.status}: #{response.body}") end end + + def self.track(recipient_id:, metric:, value:, options: {}) + metric_values = [{ + '_eventName' => metric, + '_valueToSum' => value + }] + + metric_values.first.merge!(options) + + params = { + event: 'CUSTOM_APP_EVENTS', + custom_events: MultiJson.dump(metric_values), + advertiser_tracking_enabled: 1, + application_tracking_enabled: 1, + extinfo: MultiJson.dump(['mb1']), + page_scoped_user_id: recipient_id, + page_id: Stealth.config.facebook.page_id + } + + uri = URI::HTTPS.build( + host: "graph.facebook.com", + path: "/#{Stealth.config.facebook.app_id}/activities" + ) + + response = Faraday.post(uri.to_s, params) + Stealth::Logger.l(topic: "facebook", message: "Sending custom event for metric: #{metric} and value: #{value}. Response: #{response.status}: #{response.body}") + + if response.status.in?(200..299) + MultiJson.load(response.body) + else + raise(Stealth::Errors::ServiceError, "Facebook error #{response.status}: #{response.body}") + end + end end end end end