diff --git a/lib/qiniu/rs.rb b/lib/qiniu/rs.rb index d248d15..fda7d68 100755 --- a/lib/qiniu/rs.rb +++ b/lib/qiniu/rs.rb @@ -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 diff --git a/lib/qiniu/rs/auth.rb b/lib/qiniu/rs/auth.rb index bd93a79..9c688c6 100755 --- a/lib/qiniu/rs/auth.rb +++ b/lib/qiniu/rs/auth.rb @@ -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