58 lines
1.5 KiB
Ruby
58 lines
1.5 KiB
Ruby
require 'oauth2'
|
|
|
|
module Ci4s::Service
|
|
module_function
|
|
|
|
def client_id
|
|
config = Rails.application.config_for(:configuration)
|
|
config.dig("oauth", "ci4s", "appid")
|
|
end
|
|
|
|
def client_secret
|
|
config = Rails.application.config_for(:configuration)
|
|
config.dig("oauth", "ci4s", "appid")
|
|
end
|
|
|
|
def base_url
|
|
config = Rails.application.config_for(:configuration)
|
|
config.dig("oauth", "ci4s", "base_url")
|
|
end
|
|
|
|
def redirect_uri
|
|
config = Rails.application.config_for(:configuration)
|
|
config.dig("oauth", "ci4s", "redirect_uri")
|
|
end
|
|
|
|
|
|
def request(method, url, params)
|
|
begin
|
|
Rails.logger.info("[Ci4sOauth] [#{method.to_s.upcase}] #{url} || #{params}")
|
|
|
|
client = Faraday.new(url: base_url)
|
|
response = client.public_send(method, url, params)
|
|
result = JSON.parse(response.body)
|
|
|
|
Rails.logger.info("[Ci4sOauth] [#{response.status}] #{result}")
|
|
|
|
result
|
|
rescue Exception => e
|
|
raise Gitlink::TipException.new(e.message)
|
|
end
|
|
end
|
|
|
|
def access_token(code)
|
|
begin
|
|
Rails.logger.info("[Ci4sOauth] [code] #{code} ")
|
|
Rails.logger.info("[Ci4sOauth] [redirect_uri] #{redirect_uri} ")
|
|
client = OAuth2::Client.new(client_id, client_secret, site: base_url)
|
|
result = client.auth_code.get_token(code, redirect_uri: redirect_uri).to_hash
|
|
return result
|
|
rescue Exception => e
|
|
raise Gitlink::TipException.new(e.message)
|
|
end
|
|
end
|
|
|
|
def user_info(access_token)
|
|
request(:get, '/user/info', {access_token: access_token})
|
|
end
|
|
end |