删除废弃的登录方式实现代码。

This commit is contained in:
Liang Tao
2014-02-07 18:06:02 +08:00
parent 3302ecde6a
commit ef9c90c7c5
2 changed files with 8 additions and 77 deletions
-5
View File
@@ -28,11 +28,6 @@ module Qiniu
Config.initialize_connect opts
end
def login!(user, pwd)
code, data = Auth.exchange_by_password!(user, pwd)
code == StatusOK
end
def mkbucket(bucket_name)
code, data = RS.mkbucket(bucket_name)
code == StatusOK
+8 -72
View File
@@ -5,85 +5,21 @@ require 'qiniu/rs/exceptions'
module Qiniu
module RS
module Auth
class << self
include Utils
def exchange_by_password!(username, password)
@username = username
@password = password
post_data = {
:client_id => Config.settings[:client_id],
:grant_type => "password",
:username => username,
:password => password
}
code, data = http_request Config.settings[:auth_url], post_data
reset_token(data["access_token"], data["refresh_token"]) if Utils.is_response_ok?(code)
[code, data]
end
def exchange_by_refresh_token!(refresh_token)
post_data = {
:client_id => Config.settings[:client_id],
:grant_type => "refresh_token",
:refresh_token => refresh_token
}
code, data = http_request Config.settings[:auth_url], post_data
reset_token(data["access_token"], data["refresh_token"]) if Utils.is_response_ok?(code)
[code, data]
end
def reset_token(access_token, refresh_token)
@access_token = access_token
@refresh_token = refresh_token
end
def call_with_logged_in(url, data, retry_times = 0)
raise MissingAccessToken if @access_token.nil?
code, data = http_request url, data, {:access_token => @access_token}
if code == 401
raise MissingRefreshToken if @refresh_token.nil?
code, data = exchange_by_refresh_token!(@refresh_token)
if code == 401
raise MissingUsernameOrPassword if (@username.nil? || @password.nil?)
code, data = exchange_by_password!(@username, @password)
end
if Utils.is_response_ok?(code)
retry_times += 1
if Config.settings[:auto_reconnect] && retry_times < Config.settings[:max_retry_times]
return call_with_logged_in(url, data, retry_times)
end
end
end
[code, data]
end
def call_with_signature(url, data, retry_times = 0, options = {})
code, data = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data)})
[code, data]
http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data)})
end
def request(url, data = nil, options = {})
begin
if Config.settings[:access_key].empty? || Config.settings[:secret_key].empty?
code, data = Auth.call_with_logged_in(url, data)
else
code, data = Auth.call_with_signature(url, data, 0, options)
end
rescue MissingAccessToken => e
Log.logger.error e
code, data = 401, {}
rescue MissingRefreshToken => e
Log.logger.error e
code, data = 401, {}
rescue MissingUsernameOrPassword => e
Log.logger.error e
code, data = 401, {}
end
[code, data]
Auth.call_with_signature(url, data, 0, options)
end
end
end
end
end
end # module Auth
end # module RS
end # module Qiniu