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_not_processed ⇒ Object
- .find_parent_by_user(user_id) ⇒ Object
- .find_user_tracked_data(user_id) ⇒ Object
- .update_user_id_for_visit(visit_event_id, user_id) ⇒ Object
Instance Method Summary collapse
- #parent? ⇒ Boolean
- #process ⇒ Object
- #track ⇒ Object
- #update_error(error) ⇒ Object
- #update_from_parent ⇒ Object
- #update_parent_event_id ⇒ Object
Class Method Details
.add(type, parent_event_id = nil, data = {}) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/traffic_mansion/queue.rb', line 85 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
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/traffic_mansion/queue.rb', line 56 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
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/traffic_mansion/queue.rb', line 69 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
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/traffic_mansion/queue.rb', line 43 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
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/traffic_mansion/queue.rb', line 31 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 } event = TrafficMansion::Queue::add "signup", parent_event_id, event_data TrafficMansion::Queue::update_user_id_for_visit parent_event_id, user_id event end |
.add_unique_visit(campaign_id, remote_ip, referer, timestamp = Time.now.to_i) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/traffic_mansion/queue.rb', line 21 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_not_processed ⇒ Object
111 112 113 |
# File 'lib/traffic_mansion/queue.rb', line 111 def self.find_not_processed where(:processed => false) end |
.find_parent_by_user(user_id) ⇒ Object
92 93 94 |
# File 'lib/traffic_mansion/queue.rb', line 92 def self.find_parent_by_user user_id TrafficMansion::Queue.where(:user_id => user_id, :type => "signup").first end |
.find_user_tracked_data(user_id) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/traffic_mansion/queue.rb', line 103 def self.find_user_tracked_data user_id visit = TrafficMansion::Queue.where(:type => "visit", :user_id => user_id, :processed => true).first if visit && visit.result.present? return visit.result end nil end |
.update_user_id_for_visit(visit_event_id, user_id) ⇒ Object
96 97 98 99 100 101 |
# File 'lib/traffic_mansion/queue.rb', line 96 def self.update_user_id_for_visit visit_event_id, user_id visit = TrafficMansion::Queue.where(:id => visit_event_id).first if visit visit.set :user_id, user_id end end |
Instance Method Details
#parent? ⇒ Boolean
125 126 127 |
# File 'lib/traffic_mansion/queue.rb', line 125 def parent? self.type == "visit" end |
#process ⇒ Object
115 116 117 118 119 120 121 122 123 |
# File 'lib/traffic_mansion/queue.rb', line 115 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
157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/traffic_mansion/queue.rb', line 157 def track tracker = TrafficMansion::Tracker.new data res = tracker.send type, data self.set :result, res.get_response if res.success? self.set :processed, true else error = "Tracking failed with result: #{res.get_error}" update_error error raise error end end |
#update_error(error) ⇒ Object
170 171 172 |
# File 'lib/traffic_mansion/queue.rb', line 170 def update_error error self.set :last_error, error.to_s end |
#update_from_parent ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/traffic_mansion/queue.rb', line 141 def update_from_parent parent_event = TrafficMansion::Queue.find_by_id parent_event_id if !parent_event error = "Could not find a parent event!" raise error end if 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 error = "Parent was not processed yet!" update_error error raise error end end |
#update_parent_event_id ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/traffic_mansion/queue.rb', line 129 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 error = "Could not find a parent event!" update_error error raise error end end |