Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zoholib
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gems
zoholib
Commits
942c68d5
Commit
942c68d5
authored
Jul 05, 2020
by
Jose Ernesto Suarez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MEchanism for renew tokens
parent
4c8c8e07
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
5 deletions
+31
-5
zoho_basic_client.rb
lib/zoholib/zoho_basic_client.rb
+31
-5
No files found.
lib/zoholib/zoho_basic_client.rb
View file @
942c68d5
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment