lib/ecoportal/api/common/graphql/auth_service.rb in ecoportal-api-graphql-0.3.16 vs lib/ecoportal/api/common/graphql/auth_service.rb in ecoportal-api-graphql-0.4.0
- old
+ new
@@ -1,70 +1,80 @@
module Ecoportal
module API
module Common
module GraphQL
module AuthService
- DEFAULT_SERVER = "live.ecoportal.com"
+ DEFAULT_SERVER = "live.ecoportal.com".freeze
TOKEN_AUTORENEW = 90 # minutes
module InstanceMethods
def session_token(host: server, version: nil, auto_renew: true)
- session_token_data(host: host, version: version).yield_self do |body|
- return nil unless body
+ session_token_data(host: host, version: version).then do |body|
+ next unless body
+
if auto_renew && token_renew?(body["expires_in"])
- session_token_renewed(host: host, version: version, refresh_token: body["refresh_token"])
+ session_token_renewed(
+ host: host,
+ version: version,
+ refresh_token: body["refresh_token"]
+ )
else
body["access_token"]
end
end
end
def session_token_renewed(host: server, version: nil, refresh_token: nil)
unless refresh_token
- return nil unless body = session_token_data(host: host, version: version)
- return nil unless refresh_token = body["resfresh_token"]
+ return unless (body = session_token_data(host: host, version: version))
+ return unless (refresh_token = body["resfresh_token"])
end
- session_refresh_token_data(host: host, version: version, refresh_token: refresh_token).yield_self do |body|
- return nil unless body
- body["access_token"] if body
+
+ session_refresh_token_data(
+ host: host,
+ version: version,
+ refresh_token: refresh_token
+ ).then do |bdy|
+ bdy["access_token"] if bdy
end
end
private
def session_token_data(host: server, version: nil)
- http_client(host: host, version: version).post("/oauth/token", data: {
- "grant_type" => "password",
- "email" => user_email,
- "password" => user_pass
- }).yield_self do |response|
- if response.success?
- response.body
- else
- nil
- end
+ http_client(host: host, version: version).post(
+ "/oauth/token",
+ data: {
+ "grant_type" => "password",
+ "email" => user_email,
+ "password" => user_pass
+ }
+ ).then do |response|
+ next response.body if response.success?
end
end
- def session_refresh_token_data(host: server, version: nil, refresh_token:)
- http_client(host: host, version: version).post("/oauth/token", data: {
- "grant_type" => "refresh_token",
- "refresh_token" => refresh_token
- }).yield_self do |response|
- if response.success?
- response.body
- else
- nil
- end
+ def session_refresh_token_data(refresh_token:, host: server, version: nil)
+ http_client(host: host, version: version).post(
+ "/oauth/token",
+ data: {
+ "grant_type" => "refresh_token",
+ "refresh_token" => refresh_token
+ }
+ ).then do |response|
+ next response.body if response.success?
end
end
def token_renew?(seconds)
(TOKEN_AUTORENEW * 60) > seconds
end
def http_client(host: server, version: nil)
- @http_client ||= Ecoportal::API::Common::GraphQL::HttpClient.new(host: host, version: version)
+ @http_client ||= Ecoportal::API::Common::GraphQL::HttpClient.new(
+ host: host,
+ version: version
+ )
end
def user_email
@user_email || fetch_env_required("USER_EMAIL")
end