Module: Qiniu::S3::Auth
- Extended by:
- Utils
- Defined in:
- lib/qiniu/s3/auth.rb
Class Method Summary
collapse
Methods included from Utils
encode_entry_uri, generate_query_string, http_request, safe_json_parse, send_request_with, upload_multipart_data, urlsafe_base64_decode, urlsafe_base64_encode
Class Method Details
.call(url, data, retry_times = 0) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/qiniu/s3/auth.rb', line 41
def call(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 code == 200
retry_times += 1
if Config.settings[:auto_reconnect] && retry_times < Config.settings[:max_retry_times]
return call(url, data, retry_times)
end
end
end
[code, data]
end
|
.exchange_by_password!(username, password) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/qiniu/s3/auth.rb', line 11
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 code == 200
[code, data]
end
|
.exchange_by_refresh_token!(refresh_token) ⇒ Object
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/qiniu/s3/auth.rb', line 25
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 code == 200
[code, data]
end
|
.request(url, data = nil) ⇒ Object
61
62
63
64
65
66
67
68
69
|
# File 'lib/qiniu/s3/auth.rb', line 61
def request(url, data = nil)
begin
code, data = Auth.call(url, data)
rescue [MissingAccessToken, MissingRefreshToken, MissingUsernameOrPassword] => e
Log.logger.error e
code, data = 401, {}
end
[code, data]
end
|
.reset_token(access_token, refresh_token) ⇒ Object
36
37
38
39
|
# File 'lib/qiniu/s3/auth.rb', line 36
def reset_token(access_token, refresh_token)
@access_token = access_token
@refresh_token = refresh_token
end
|