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

MEchanism for renew tokens

parent 4c8c8e07
require 'pp'
require 'json'
require 'logger'
#require 'date'
require 'date'
require 'httparty'
#require './lib/refresh_request'
#require './lib/authorization_request'
......@@ -19,6 +19,17 @@ module Wedoops
@logged_in = false
@options = options
@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
def login
......@@ -37,6 +48,8 @@ module Wedoops
@logger.debug("#{__method__}:#{response.request.last_uri.to_s}")
response = JSON.parse(response.to_s, symbolize_names: true)
@token_payload = response
@token_expires = DateTime.now + Rational(3599, 86400)
unless response[:access_token].nil?
@logged_in = true
@token = response[:access_token]
......@@ -51,6 +64,7 @@ module Wedoops
# ojo, maxrecords no tiene en cuenta cuantos registros se descaargan
# en cada ocasion por lo que puede devolver registros de mas
# como resto de la llamada anterior
self.login?
page=1
maxrecords=-1
result = Hash.new
......@@ -75,7 +89,7 @@ module Wedoops
end
def read(url,params=nil)
self.login unless @logged_in
self.login?
options = {}
options[:query] = params unless params.nil?
options.merge!(build_header)
......@@ -88,7 +102,7 @@ module Wedoops
def write(url,data)
raise "Invalid JSON!" unless valid_json?(data)
self.login unless @logged_in
self.login?
options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body]=data
......@@ -101,7 +115,7 @@ module Wedoops
def update(url,data)
raise "Invalid JSON!" unless valid_json?(data)
self.login unless @logged_in
self.login?
options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body]=data
......@@ -113,7 +127,7 @@ module Wedoops
end
def query(coql)
self.login unless @logged_in
self.login?
options = {}
#Ojo, aqui tal vez deberiamos coprobar que viene con la forma :data => [:coleccion]
options[:body] = {:select_query => coql}.to_json
......@@ -132,6 +146,7 @@ module Wedoops
# como resto de la llamada anterior
#page=1
#maxrecords=-1
self.login?
result = Hash.new
result[:data] = Array.new
params.delete(:page) if params.has_key?(:page)
......@@ -169,6 +184,7 @@ module Wedoops
:info => {:more_records => false}
}
when 401
# To-DO needed fix this point
@logger.debug("401 received! We need to update the token!")
response = JSON.parse(response.to_s, symbolize_names: true)
if response[:code] == "INVALID_TOKEN"
......@@ -211,6 +227,16 @@ module Wedoops
return false
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
\ 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