Factor out a Customer object

Stephen Paul Weber created

Change summary

config.ru       | 26 +++-----------------------
lib/customer.rb | 32 ++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 23 deletions(-)

Detailed changes

config.ru 🔗

@@ -16,6 +16,7 @@ if ENV["RACK_ENV"] == "development"
 end
 
 require_relative "lib/auto_top_up_repo"
+require_relative "lib/customer"
 require_relative "lib/three_d_secure_repo"
 require_relative "lib/electrum"
 
@@ -70,25 +71,14 @@ class CreditCardGateway
 	end
 
 	def customer_id
-		customer_id = REDIS.get(redis_key_jid)
+		customer_id = Customer.new(nil, @jid).customer_id
 		return customer_id if check_customer_id(customer_id)
 
 		result = @gateway.customer.create
 		raise "Braintree customer create failed" unless result.success?
 
 		@customer_id = result.customer.id
-		save_customer_id!
-	end
-
-	def save_customer_id!
-		unless REDIS.set(redis_key_jid, @customer_id) == "OK"
-			raise "Saving new jid,customer to redis failed"
-		end
-
-		unless REDIS.set(redis_key_customer_id, @jid) == "OK"
-			raise "Saving new customer,jid to redis failed"
-		end
-
+		Customer.new(@customer_id, @jid).save!
 		@customer_id
 	end
 
@@ -157,16 +147,6 @@ class CreditCardGateway
 	def remove_method(token)
 		@gateway.payment_method.delete(token)
 	end
-
-protected
-
-	def redis_key_jid
-		"jmp_customer_id-#{@jid}"
-	end
-
-	def redis_key_customer_id
-		"jmp_customer_jid-#{@customer_id}"
-	end
 end
 
 class UnknownTransactions

lib/customer.rb 🔗

@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class Customer
+	def initialize(customer_id, jid)
+		@customer_id = customer_id
+		@jid = jid
+	end
+
+	def customer_id
+		@customer_id = REDIS.get(redis_key_jid)
+	end
+
+	def save!
+		unless REDIS.set(redis_key_jid, @customer_id) == "OK"
+			raise "Saving new jid,customer to redis failed"
+		end
+
+		return if REDIS.set(redis_key_customer_id, @jid) == "OK"
+
+		raise "Saving new customer,jid to redis failed"
+	end
+
+protected
+
+	def redis_key_jid
+		"jmp_customer_id-#{@jid}"
+	end
+
+	def redis_key_customer_id
+		"jmp_customer_jid-#{@customer_id}"
+	end
+end