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_error(error) ⇒ Object
- #update_from_parent ⇒ Object
- #update_parent_event_id ⇒ Object
Class Method Details
.add(type, parent_event_id = nil, data = {}) ⇒ Object
83 84 85 86 87 88 |
# File 'lib/traffic_mansion/queue.rb', line 83 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
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/traffic_mansion/queue.rb', line 54 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
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/traffic_mansion/queue.rb', line 67 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
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/traffic_mansion/queue.rb', line 41 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 |
# 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 } TrafficMansion::Queue::add "signup", parent_event_id, event_data 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_parent_by_user(user_id) ⇒ Object
90 91 92 |
# File 'lib/traffic_mansion/queue.rb', line 90 def self.find_parent_by_user user_id TrafficMansion::Queue.where(:user_id => user_id, :type => "signup").first end |
Instance Method Details
#parent? ⇒ Boolean
104 105 106 |
# File 'lib/traffic_mansion/queue.rb', line 104 def parent? self.type == "visit" end |
#process ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/traffic_mansion/queue.rb', line 94 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
136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/traffic_mansion/queue.rb', line 136 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
149 150 151 |
# File 'lib/traffic_mansion/queue.rb', line 149 def update_error error self.set :last_error, error.to_s end |
#update_from_parent ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/traffic_mansion/queue.rb', line 120 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
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/traffic_mansion/queue.rb', line 108 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 |