7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/mangadex/auth.rb', line 7
def self.login(username: nil, email: nil, password: nil)
args = { password: password }
args.merge!(email: email) if email
args.merge!(username: username) if username
response = Mangadex::Internal::Request.post(
'/auth/login',
payload: Mangadex::Internal::Definition.validate(args, {
username: { accepts: String },
email: { accepts: String },
password: { accepts: String, required: true },
}),
)
session = response.dig('token', 'session')
refresh = response.dig('token', 'refresh')
mangadex_user = Mangadex::Internal::Request.get('/user/me', headers: { Authorization: session })
user = Mangadex::Api::User.new(
mangadex_user_id: mangadex_user.data.id,
session: session,
refresh: refresh,
data: mangadex_user.data,
)
return if user.session_expired?
Mangadex.context.user = user
user.persist
user
rescue Errors::UnauthorizedError => error
raise Errors::AuthenticationError.new(error.response)
end
|