@@ -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
1719type 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 {
197203func (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