Client: do not raise exceptions on expected possible errors.
This commit is contained in:
parent
a3368d0228
commit
d790caa4e1
@ -20,7 +20,8 @@ module AuthD
|
||||
m.not_nil!
|
||||
end
|
||||
|
||||
# TODO: parse_message should raise exception if response not anticipated
|
||||
# `parse_message` only raises exception in case the response could not be anticipated.
|
||||
# Any possibly expected error for a request should be in `expected_messages`.
|
||||
def parse_message(expected_messages, message)
|
||||
em = Array(IPC::JSON.class).new
|
||||
expected_messages.each do |e|
|
||||
@ -32,17 +33,16 @@ module AuthD
|
||||
|
||||
def login?(login : String, password : String)
|
||||
send_now Request::Login.new login, password
|
||||
parse_message [Response::Login], read
|
||||
end
|
||||
|
||||
def get_user?(login : String, password : String)
|
||||
send_now Request::GetUserByCredentials.new login, password
|
||||
parse_message [Response::User], read
|
||||
parse_message [Response::Login, Response::ErrorInvalidCredentials], read
|
||||
end
|
||||
|
||||
def get_user?(uid_or_login : UserID)
|
||||
send_now Request::GetUser.new uid_or_login
|
||||
parse_message [Response::User], read
|
||||
parse_message [
|
||||
Response::User,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound
|
||||
], read
|
||||
end
|
||||
|
||||
def send_now(msg : IPC::JSON)
|
||||
@ -62,7 +62,12 @@ module AuthD
|
||||
profile : Hash(String, ::JSON::Any)?)
|
||||
|
||||
send_now Request::AddUser.new login, password, admin, email, profile
|
||||
parse_message [Response::UserAdded], read
|
||||
parse_message [
|
||||
Response::UserAdded,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorAlreadyUsedLogin,
|
||||
Response::ErrorMailRequired
|
||||
], read
|
||||
end
|
||||
|
||||
def bootstrap(login : String,
|
||||
@ -71,27 +76,40 @@ module AuthD
|
||||
profile : Hash(String, ::JSON::Any)? = nil)
|
||||
|
||||
send_now Request::BootstrapFirstAdmin.new login, password, email, profile
|
||||
parse_message [Response::UserAdded], read
|
||||
parse_message [Response::UserAdded,Response::ErrorAlreadyUsersInDB], read
|
||||
end
|
||||
|
||||
def decode_token(token)
|
||||
send_now Request::DecodeToken.new token
|
||||
parse_message [Response::User], read
|
||||
parse_message [
|
||||
Response::User,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound
|
||||
], read
|
||||
end
|
||||
|
||||
def validate_user(login : String, activation_key : String)
|
||||
send_now Request::ValidateUser.new login, activation_key
|
||||
parse_message [Response::UserValidated], read
|
||||
parse_message [
|
||||
Response::UserValidated,
|
||||
Response::ErrorUserNotFound,
|
||||
Response::ErrorUserAlreadyValidated,
|
||||
Response::ErrorInvalidActivationKey
|
||||
], read
|
||||
end
|
||||
|
||||
def ask_password_recovery(uid_or_login : UserID)
|
||||
send_now Request::AskPasswordRecovery.new uid_or_login
|
||||
parse_message [Response::PasswordRecoverySent], read
|
||||
parse_message [Response::PasswordRecoverySent, Response::ErrorUserNotFound], read
|
||||
end
|
||||
|
||||
def change_password(uid_or_login : UserID, new_pass : String, renew_key : String)
|
||||
send_now Request::PasswordRecovery.new uid_or_login, renew_key, new_pass
|
||||
parse_message [Response::PasswordRecovered], read
|
||||
parse_message [
|
||||
Response::PasswordRecovered,
|
||||
Response::ErrorUserNotFound,
|
||||
Response::ErrorInvalidRenewKey
|
||||
], read
|
||||
end
|
||||
|
||||
def register(login : String,
|
||||
@ -100,14 +118,17 @@ module AuthD
|
||||
profile : Hash(String, ::JSON::Any)?)
|
||||
|
||||
send_now Request::Register.new login, password, email, profile
|
||||
parse_message [Response::UserAdded,
|
||||
Response::ErrorRegistrationsClosed,
|
||||
Response::ErrorAlreadyUsedLogin,
|
||||
Response::ErrorInvalidLoginFormat,
|
||||
Response::ErrorMailRequired,
|
||||
Response::ErrorInvalidEmailFormat,
|
||||
Response::ErrorCannotContactUser,
|
||||
Response::ErrorPasswordTooShort], read
|
||||
parse_message [
|
||||
Response::UserAdded,
|
||||
Response::ErrorRegistrationsClosed,
|
||||
Response::ErrorAlreadyUsedLogin,
|
||||
Response::ErrorInvalidLoginFormat,
|
||||
Response::ErrorMailRequired,
|
||||
Response::ErrorInvalidEmailFormat,
|
||||
Response::ErrorPasswordTooShort,
|
||||
Response::ErrorPasswordTooLong,
|
||||
Response::ErrorCannotContactUser
|
||||
], read
|
||||
end
|
||||
|
||||
def mod_user(uid_or_login : UserID, password : String? = nil, email : String? = nil)
|
||||
@ -117,34 +138,55 @@ module AuthD
|
||||
request.email = email if email
|
||||
|
||||
send_now request
|
||||
parse_message [Response::UserEdited], read
|
||||
parse_message [
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound,
|
||||
Response::UserEdited
|
||||
], read
|
||||
end
|
||||
|
||||
def check_permission(user : UserID, service_name : String, resource_name : String)
|
||||
request = Request::CheckPermission.new user, service_name, resource_name
|
||||
send_now request
|
||||
parse_message [Response::PermissionCheck], read
|
||||
parse_message [
|
||||
Response::PermissionCheck,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound
|
||||
], read
|
||||
end
|
||||
|
||||
def set_permission(user : UserID, service : String, resource : String, permission : User::PermissionLevel)
|
||||
request = Request::SetPermission.new user, service, resource, permission
|
||||
send_now request
|
||||
parse_message [Response::PermissionSet], read
|
||||
parse_message [
|
||||
Response::PermissionSet,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound
|
||||
], read
|
||||
end
|
||||
|
||||
def search_user(user_login : String)
|
||||
send_now Request::SearchUser.new user_login
|
||||
parse_message [Response::MatchingUsers], read
|
||||
parse_message [Response::MatchingUsers, Response::ErrorMustBeAuthenticated], read
|
||||
end
|
||||
|
||||
def edit_profile_content(user : UserID, new_values)
|
||||
send_now Request::EditProfileEntries.new user, new_values
|
||||
parse_message [Response::User], read
|
||||
parse_message [
|
||||
Response::User,
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound,
|
||||
Response::ErrorReadOnlyProfileKeys
|
||||
], read
|
||||
end
|
||||
|
||||
def delete(user : UserID)
|
||||
send_now Request::Delete.new user
|
||||
parse_message [Response::UserDeleted], read
|
||||
parse_message [
|
||||
Response::ErrorMustBeAuthenticated,
|
||||
Response::ErrorUserNotFound,
|
||||
Response::UserDeleted
|
||||
], read
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user