Skip to content

Commit

Permalink
[feat] reauth before make request to avoid receiving 401 error code
Browse files Browse the repository at this point in the history
  • Loading branch information
cuongpiger committed Jan 13, 2025
1 parent b7394bd commit 4f07914
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 16 deletions.
3 changes: 3 additions & 0 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type (
userId string
httpClient lsclient.IHttpClient
userAgent string
authOpt lsclient.AuthOpts

iamGateway lsgateway.IIamGateway
vserverGateway lsgateway.IVServerGateway
Expand Down Expand Up @@ -57,6 +58,8 @@ func (s *client) WithAuthOption(pauthOpts lsclient.AuthOpts, pauthConfig ISdkCon
s.httpClient = lsclient.NewHttpClient(s.context)
}

s.authOpt = pauthOpts // Assign the auth option to the client

switch pauthOpts {
case lsclient.IamOauth2:
s.httpClient.WithReauthFunc(lsclient.IamOauth2, s.usingIamOauth2AsAuthOption(pauthConfig)).
Expand Down
41 changes: 26 additions & 15 deletions vngcloud/client/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,22 +111,33 @@ func (s *httpClient) DoRequest(purl string, preq IRequest) (*lreq.Response, lser
}

var resp *lreq.Response
var err error
switch lstr.ToUpper(preq.GetRequestMethod()) {
case "POST":
resp, err = req.Post(purl)
case "GET":
resp, err = req.Get(purl)
case "DELETE":
resp, err = req.Delete(purl)
case "PUT":
resp, err = req.Put(purl)
case "PATCH":
resp, err = req.Patch(purl)
}
if !s.needReauth(preq) {
var err error

switch lstr.ToUpper(preq.GetRequestMethod()) {
case "POST":
resp, err = req.Post(purl)
case "GET":
resp, err = req.Get(purl)
case "DELETE":
resp, err = req.Delete(purl)
case "PUT":
resp, err = req.Put(purl)
case "PATCH":
resp, err = req.Patch(purl)
}

if err != nil && resp == nil {
return resp, lserr.ErrorHandler(err)
}
} else {
if !preq.SkipAuthentication() && s.reauthFunc != nil {
if sdkErr := s.reauthenticate(); sdkErr != nil {
return nil, sdkErr
}

if err != nil && resp == nil {
return resp, lserr.ErrorHandler(err)
return s.DoRequest(purl, preq)
}
}

if resp.Response != nil {
Expand Down
4 changes: 3 additions & 1 deletion vngcloud/entity/identity.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ type AccessToken struct {
}

func (s *AccessToken) ToSdkAuthentication() lsvcClient.ISdkAuthentication {
return new(lsvcClient.SdkAuthentication).WithAccessToken(s.Token)
return new(lsvcClient.SdkAuthentication).
WithAccessToken(s.Token).
WithExpiresAt(s.ExpiresAt)
}

0 comments on commit 4f07914

Please sign in to comment.