Class: TrafficMansion::Queue
- Inherits:
-
Object
- Object
- TrafficMansion::Queue
- Includes:
- Mongoid::Document, Mongoid::Timestamps
- Defined in:
- lib/traffic_mansion/queue.rb
Class Method Summary collapse
- .add(type, parent_event_id = nil, data = {}) ⇒ Object
- .add_rebill(user_id, payment_id, amount, product_code, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
- .add_refund(user_id, payment_id, amount, product_code, transaction_type, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
- .add_sale(user_id, payment_id, amount, product_code, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
- .add_signup(parent_event_id, user_id, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
- .add_unique_visit(campaign_id, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
- .find_parent_by_user(user_id) ⇒ Object
Instance Method Summary collapse
- #parent? ⇒ Boolean
- #process ⇒ Object
- #track ⇒ Object
- #update_from_parent ⇒ Object
- #update_parent_event_id ⇒ Object
Class Method Details
.add(type, parent_event_id = nil, data = {}) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/traffic_mansion/queue.rb', line 82 def self.add type, parent_event_id = nil, data = {} user_id = data["user_id"] event = TrafficMansion::Queue.create :type => type, :parent_event_id => parent_event_id, :user_id => user_id, :data => data TrafficMansion::QueueProcessor.perform_async event.id event end |
.add_rebill(user_id, payment_id, amount, product_code, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/traffic_mansion/queue.rb', line 53 def self.add_rebill user_id, payment_id, amount, product_code, remote_ip, referer, = Time.now.to_i event_data = { "user_id" => user_id, "timestamp" => , "transaction" => payment_id, "amount" => amount, "product_code" => product_code, "remote_addr" => remote_ip, "http_referer" => referer } TrafficMansion::Queue::add "rebill", nil, event_data end |
.add_refund(user_id, payment_id, amount, product_code, transaction_type, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/traffic_mansion/queue.rb', line 66 def self.add_refund user_id, payment_id, amount, product_code, transaction_type, remote_ip, referer, = Time.now.to_i event_data = { "user_id" => user_id, "timestamp" => , "transaction" => payment_id, "amount" => amount, "product_code" => product_code, "remote_addr" => remote_ip, "http_referer" => referer, "is_rebill" => transaction_type.to_s == "rebill" ? 1 : 0, "refund_transid" => payment_id, "penalty" => 0, # normally it's not used anymore, but, who knows?... } TrafficMansion::Queue::add "refund", nil, event_data end |
.add_sale(user_id, payment_id, amount, product_code, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/traffic_mansion/queue.rb', line 40 def self.add_sale user_id, payment_id, amount, product_code, remote_ip, referer, = Time.now.to_i event_data = { "user_id" => user_id, "timestamp" => , "transaction" => payment_id, "amount" => amount, "product_code" => product_code, "remote_addr" => remote_ip, "http_referer" => referer } TrafficMansion::Queue::add "sale", nil, event_data end |
.add_signup(parent_event_id, user_id, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/traffic_mansion/queue.rb', line 30 def self.add_signup parent_event_id, user_id, remote_ip, referer, = Time.now.to_i event_data = { "user_id" => user_id, "timestamp" => , "remote_addr" => remote_ip, "http_referer" => referer } TrafficMansion::Queue::add "signup", parent_event_id, event_data end |
.add_unique_visit(campaign_id, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/traffic_mansion/queue.rb', line 20 def self.add_unique_visit campaign_id, remote_ip, referer, = Time.now.to_i event_data = { "campaign_id" => campaign_id, "timestamp" => , "remote_addr" => remote_ip, "http_referer" => referer } TrafficMansion::Queue::add "visit", nil, event_data end |
.find_parent_by_user(user_id) ⇒ Object
89 90 91 |
# File 'lib/traffic_mansion/queue.rb', line 89 def self.find_parent_by_user user_id TrafficMansion::Queue.where(:user_id => user_id, :type => "signup").first end |
Instance Method Details
#parent? ⇒ Boolean
103 104 105 |
# File 'lib/traffic_mansion/queue.rb', line 103 def parent? self.type == "visit" end |
#process ⇒ Object
93 94 95 96 97 98 99 100 101 |
# File 'lib/traffic_mansion/queue.rb', line 93 def process if !parent? && parent_event_id.nil? update_parent_event_id end if parent_event_id.present? update_from_parent end track end |
#track ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/traffic_mansion/queue.rb', line 127 def track tracker = TrafficMansion::Tracker.new data res = tracker.send type, data if res.success? self.result = res.get_response self.processed = true save! else raise "Tracking failed with result: #{res.get_error}" end end |
#update_from_parent ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'lib/traffic_mansion/queue.rb', line 117 def update_from_parent parent_event = TrafficMansion::Queue.find_by_id parent_event_id if parent_event && parent_event.processed self.data["visit_id"] = parent_event.data["visit_id"].present? ? parent_event.data["visit_id"] : parent_event.result["visit_id"] save! else raise "Parent was not processed yet!" end end |
#update_parent_event_id ⇒ Object
107 108 109 110 111 112 113 114 115 |
# File 'lib/traffic_mansion/queue.rb', line 107 def update_parent_event_id parent_event = TrafficMansion::Queue.find_parent_by_user self.user_id if parent_event self.parent_event_id = parent_event.id save! else raise "Could not find a parent event!" end end |