From 1309ea63e9f9de56679f7c07027b487f92259a4d Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Wed, 25 May 2016 09:58:14 -0400
Subject: [PATCH] Refactor ESRI lookup's `token` method.

This should improve readability and make testing easier as it separates
the various tasks into separate methods.
---
 lib/geocoder/lookups/esri.rb | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/lib/geocoder/lookups/esri.rb b/lib/geocoder/lookups/esri.rb
index c6562446..08523913 100644
--- a/lib/geocoder/lookups/esri.rb
+++ b/lib/geocoder/lookups/esri.rb
@@ -48,14 +48,17 @@ module Geocoder::Lookup
     end
 
     def token
-      if configuration[:token] && configuration[:token].active? # if we have a token, use it
-        configuration[:token].to_s
-      elsif configuration.api_key # generate a new token if we have credentials
-        token_instance = Geocoder::EsriToken.generate_token(*configuration.api_key)
-        Geocoder.configure(:esri => Geocoder.config[:esri].merge({:token => token_instance}))
-        token_instance.to_s
-      end
+      fetch_and_save_token! if !valid_token_configured? and configuration.api_key
+      configuration[:token].to_s unless configuration[:token].nil?
+    end
+
+    def valid_token_configured?
+      !configuration[:token].nil? and configuration[:token].active?
     end
 
+    def fetch_and_save_token!
+      token_instance = Geocoder::EsriToken.generate_token(*configuration.api_key)
+      Geocoder.configure(:esri => {:token => token_instance})
+    end
   end
 end
-- 
GitLab