Commit 942c68d5 authored by Jose Ernesto Suarez's avatar Jose Ernesto Suarez

MEchanism for renew tokens

parent 4c8c8e07
require 'pp' require 'pp'
require 'json' require 'json'
require 'logger' require 'logger'
#require 'date' require 'date'
require 'httparty' require 'httparty'
#require './lib/refresh_request' #require './lib/refresh_request'
#require './lib/authorization_request' #require './lib/authorization_request'
...@@ -19,6 +19,17 @@ module Wedoops ...@@ -19,6 +19,17 @@ module Wedoops
@logged_in = false @logged_in = false
@options = options @options = options
@token = nil @token = nil
@token_payload = nil
@token_expires = DateTime.now
end
def login?
#Check if is necesary login or refresh the toeken
check_token_expiration
unless @logged_in
@logger.debug("Performing the login")
return self.login
end
end end
def login def login
...@@ -37,6 +48,8 @@ module Wedoops ...@@ -37,6 +48,8 @@ module Wedoops
@logger.debug("#{__method__}:#{response.request.last_uri.to_s}") @logger.debug("#{__method__}:#{response.request.last_uri.to_s}")
response = JSON.parse(response.to_s, symbolize_names: true) response = JSON.parse(response.to_s, symbolize_names: true)
@token_payload = response
@token_expires = DateTime.now + Rational(3599, 86400)
unless response[:access_token].nil? unless response[:access_token].nil?
@logged_in = true @logged_in = true
@token = response[:access_token] @token = response[:access_token]
...@@ -51,6 +64,7 @@ module Wedoops ...@@ -51,6 +64,7 @@ module Wedoops
# ojo, maxrecords no tiene en cuenta cuantos registros se descaargan # ojo, maxrecords no tiene en cuenta cuantos registros se descaargan
# en cada ocasion por lo que puede devolver registros de mas # en cada ocasion por lo que puede devolver registros de mas
# como resto de la llamada anterior # como resto de la llamada anterior
self.login?
page=1 page=1
maxrecords=-1 maxrecords=-1
result = Hash.new result = Hash.new
...@@ -75,7 +89,7 @@ module Wedoops ...@@ -75,7 +89,7 @@ module Wedoops
end end
def read(url,params=nil) def read(url,params=nil)
self.login unless @logged_in self.login?
options = {} options = {}
options[:query] = params unless params.nil? options[:query] = params unless params.nil?
options.merge!(build_header) options.merge!(build_header)
...@@ -88,7 +102,7 @@ module Wedoops ...@@ -88,7 +102,7 @@ module Wedoops
def write(url,data) def write(url,data)
raise "Invalid JSON!" unless valid_json?(data) raise "Invalid JSON!" unless valid_json?(data)
self.login unless @logged_in self.login?
options = {} options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion] #Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body]=data options[:body]=data
...@@ -101,7 +115,7 @@ module Wedoops ...@@ -101,7 +115,7 @@ module Wedoops
def update(url,data) def update(url,data)
raise "Invalid JSON!" unless valid_json?(data) raise "Invalid JSON!" unless valid_json?(data)
self.login unless @logged_in self.login?
options = {} options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion] #Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body]=data options[:body]=data
...@@ -113,7 +127,7 @@ module Wedoops ...@@ -113,7 +127,7 @@ module Wedoops
end end
def query(coql) def query(coql)
self.login unless @logged_in self.login?
options = {} options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion] #Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body] = {:select_query => coql}.to_json options[:body] = {:select_query => coql}.to_json
...@@ -132,6 +146,7 @@ module Wedoops ...@@ -132,6 +146,7 @@ module Wedoops
# como resto de la llamada anterior # como resto de la llamada anterior
#page=1 #page=1
#maxrecords=-1 #maxrecords=-1
self.login?
result = Hash.new result = Hash.new
result[:data] = Array.new result[:data] = Array.new
params.delete(:page) if params.has_key?(:page) params.delete(:page) if params.has_key?(:page)
...@@ -169,6 +184,7 @@ module Wedoops ...@@ -169,6 +184,7 @@ module Wedoops
:info => {:more_records => false} :info => {:more_records => false}
} }
when 401 when 401
# To-DO needed fix this point
@logger.debug("401 received! We need to update the token!") @logger.debug("401 received! We need to update the token!")
response = JSON.parse(response.to_s, symbolize_names: true) response = JSON.parse(response.to_s, symbolize_names: true)
if response[:code] == "INVALID_TOKEN" if response[:code] == "INVALID_TOKEN"
...@@ -211,6 +227,16 @@ module Wedoops ...@@ -211,6 +227,16 @@ module Wedoops
return false return false
end end
def check_token_expiration
if DateTime.now > @token_expires
@logger.info("Token expired")
@logged_in = false
else
@logger.debug("Token is still valid")
end
end
end end
end end
end end
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment