From b1a5e5a5b9ac96f87602b8631496fc71d53bd2f9 Mon Sep 17 00:00:00 2001 From: Aleksandr Zelenin Date: Mon, 30 Dec 2019 18:52:13 +0300 Subject: [PATCH] authorization fix --- client/authorization.go | 17 ++++++++++++----- client/client.go | 2 -- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/client/authorization.go b/client/authorization.go index 85535f0..05aaded 100644 --- a/client/authorization.go +++ b/client/authorization.go @@ -16,15 +16,16 @@ type AuthorizationStateHandler interface { func Authorize(client *Client, authorizationStateHandler AuthorizationStateHandler) error { defer authorizationStateHandler.Close() + var authorizationError error + for { state, err := client.GetAuthorizationState() if err != nil { return err } - err = authorizationStateHandler.Handle(client, state) - if err != nil { - return err + if state.AuthorizationStateType() == TypeAuthorizationStateClosed { + return authorizationError } if state.AuthorizationStateType() == TypeAuthorizationStateReady { @@ -32,6 +33,12 @@ func Authorize(client *Client, authorizationStateHandler AuthorizationStateHandl time.Sleep(1 * time.Second) return nil } + + err = authorizationStateHandler.Handle(client, state) + if err != nil { + authorizationError = err + client.Close() + } } } @@ -100,10 +107,10 @@ func (stateHandler *clientAuthorizer) Handle(client *Client, state Authorization return ErrNotSupportedAuthorizationState case TypeAuthorizationStateClosing: - return ErrNotSupportedAuthorizationState + return nil case TypeAuthorizationStateClosed: - return ErrNotSupportedAuthorizationState + return nil } return ErrNotSupportedAuthorizationState diff --git a/client/client.go b/client/client.go index 9af7a50..5ef18a7 100644 --- a/client/client.go +++ b/client/client.go @@ -71,8 +71,6 @@ func NewClient(authorizationStateHandler AuthorizationStateHandler, options ...O err := Authorize(client, authorizationStateHandler) if err != nil { - client.Stop() - return nil, err }