Skip to content
This repository was archived by the owner on May 24, 2024. It is now read-only.

Commit 964d468

Browse files
authored
Merge pull request #64 from LF-Engineering/add-sleep
add recursive calls to AddIdentity & GetIdentityByUser
2 parents d848613 + ab8f45b commit 964d468

1 file changed

Lines changed: 53 additions & 35 deletions

File tree

affiliation/identity.go

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import (
55
"errors"
66
"fmt"
77
"log"
8+
httpNative "net/http"
89
"net/url"
910
"strings"
1011
"time"
1112
)
1213

13-
var unknown string = "Unknown"
14-
var genderAcc int64 = 0
14+
var (
15+
unknown = "Unknown"
16+
)
1517

1618
// Affiliations interface
1719
type Affiliations interface {
@@ -57,14 +59,14 @@ func NewAffiliationsClient(affBaseURL string,
5759
projectSlug string,
5860
httpClientProvider HTTPClientProvider,
5961
esClientProvider ESClientProvider,
60-
auth0ClientPrivder Auth0ClientProvider,
62+
auth0ClientProvider Auth0ClientProvider,
6163
slackProvider SlackProvider) (*Affiliation, error) {
6264
aff := &Affiliation{
6365
AffBaseURL: affBaseURL,
6466
ProjectSlug: projectSlug,
6567
httpClientProvider: httpClientProvider,
6668
esClientProvider: esClientProvider,
67-
auth0ClientProvider: auth0ClientPrivder,
69+
auth0ClientProvider: auth0ClientProvider,
6870
slackProvider: slackProvider,
6971
}
7072

@@ -92,16 +94,20 @@ func (a *Affiliation) AddIdentity(identity *Identity) bool {
9294
queryParams["id"] = identity.ID
9395

9496
endpoint := a.AffBaseURL + "/affiliation/" + url.PathEscape(a.ProjectSlug) + "/add_identity/" + url.PathEscape(identity.Source)
95-
_, res, err := a.httpClientProvider.Request(strings.TrimSpace(endpoint), "POST", headers, nil, queryParams)
96-
if err != nil {
97-
log.Println("AddIdentity: Could not insert the identity: ", err)
98-
return false
99-
}
100-
var errMsg AffiliationsResponse
101-
err = json.Unmarshal(res, &errMsg)
102-
if err != nil || errMsg.Message != "" {
103-
log.Println("AddIdentity: failed to add identity: ", errMsg)
104-
return false
97+
statusCode, res, err := a.httpClientProvider.Request(strings.TrimSpace(endpoint), "POST", headers, nil, queryParams)
98+
if statusCode != httpNative.StatusOK {
99+
if err != nil {
100+
log.Println("AddIdentity: Could not insert the identity: ", err)
101+
}
102+
103+
var errMsg AffiliationsResponse
104+
err = json.Unmarshal(res, &errMsg)
105+
if err != nil || errMsg.Message != "" {
106+
log.Println("AddIdentity: failed to add identity: ", errMsg)
107+
}
108+
109+
time.Sleep(5 * time.Minute)
110+
return a.AddIdentity(identity)
105111
}
106112
return true
107113
}
@@ -197,7 +203,6 @@ func (a *Affiliation) GetProfile(uuid, projectSlug string) *ProfileResponse {
197203
func (a *Affiliation) GetIdentityByUser(key string, value string) (*AffIdentity, error) {
198204
if key == "" || value == "" {
199205
nilKeyOrValueErr := "GetIdentityByUser: key or value is null"
200-
log.Println(nilKeyOrValueErr)
201206
return nil, fmt.Errorf(nilKeyOrValueErr)
202207
}
203208
token, err := a.auth0ClientProvider.GetToken()
@@ -209,17 +214,23 @@ func (a *Affiliation) GetIdentityByUser(key string, value string) (*AffIdentity,
209214
headers := make(map[string]string, 0)
210215
headers["Authorization"] = fmt.Sprintf("%s %s", "Bearer", token)
211216
endpoint := a.AffBaseURL + "/affiliation/" + "identity/" + key + "/" + value
212-
_, res, err := a.httpClientProvider.Request(strings.TrimSpace(endpoint), "GET", headers, nil, nil)
213-
if err != nil {
214-
log.Println("GetIdentityByUser: Could not get the identity: ", err)
215-
return nil, err
216-
}
217+
statusCode, res, err := a.httpClientProvider.Request(strings.TrimSpace(endpoint), "GET", headers, nil, nil)
218+
switch statusCode {
219+
case httpNative.StatusOK, httpNative.StatusNotFound:
217220

218-
var errMsg AffiliationsResponse
219-
err = json.Unmarshal(res, &errMsg)
220-
if err != nil || errMsg.Message != "" {
221-
log.Println("GetIdentityByUser: failed to get identity: ", errMsg)
222-
return nil, err
221+
default:
222+
if err != nil {
223+
log.Println("GetIdentityByUser: Could not get the identity: ", err)
224+
}
225+
226+
var errMsg AffiliationsResponse
227+
err = json.Unmarshal(res, &errMsg)
228+
if err != nil || errMsg.Message != "" {
229+
log.Println("GetIdentityByUser: failed to get identity: ", errMsg)
230+
}
231+
232+
time.Sleep(5 * time.Minute)
233+
return a.GetIdentityByUser(key, value)
223234
}
224235

225236
var ident IdentityData
@@ -229,16 +240,23 @@ func (a *Affiliation) GetIdentityByUser(key string, value string) (*AffIdentity,
229240
}
230241

231242
profileEndpoint := a.AffBaseURL + "/affiliation/" + url.PathEscape(a.ProjectSlug) + "/get_profile/" + *ident.UUID
232-
_, profileRes, err := a.httpClientProvider.Request(strings.TrimSpace(profileEndpoint), "GET", headers, nil, nil)
233-
if err != nil {
234-
log.Println("GetIdentityByUser: Could not get the identity: ", err)
235-
return nil, err
236-
}
243+
statusCode, profileRes, err := a.httpClientProvider.Request(strings.TrimSpace(profileEndpoint), "GET", headers, nil, nil)
244+
switch statusCode {
245+
case httpNative.StatusOK, httpNative.StatusNotFound:
237246

238-
err = json.Unmarshal(res, &errMsg)
239-
if err != nil || errMsg.Message != "" {
240-
log.Println("GetIdentityByUser: failed to get identity profile: ", errMsg)
241-
return nil, err
247+
default:
248+
if err != nil {
249+
log.Println("GetIdentityByUser: Could not get the identity: ", err)
250+
}
251+
252+
var errMsg AffiliationsResponse
253+
err = json.Unmarshal(res, &errMsg)
254+
if err != nil || errMsg.Message != "" {
255+
log.Println("GetIdentityByUser: failed to get identity profile: ", errMsg)
256+
}
257+
258+
time.Sleep(5 * time.Minute)
259+
return a.GetIdentityByUser(key, value)
242260
}
243261

244262
var profile UniqueIdentityFullProfile
@@ -304,7 +322,7 @@ func (a *Affiliation) GetProfileByUsername(username string, projectSlug string)
304322
}
305323

306324
if statusCode != 200 {
307-
return nil, errors.New("User not found")
325+
return nil, errors.New("user not found")
308326
}
309327

310328
var profile UniqueIdentityFullProfile

0 commit comments

Comments
 (0)