diff --git a/api_logs/api-logs.go b/api_logs/api-logs.go index 91d04220559ba059938dff2af85a135b32eaf190..ce1cc05825934fbfbb60ef352feb76ea43cac137 100644 --- a/api_logs/api-logs.go +++ b/api_logs/api-logs.go @@ -2,8 +2,8 @@ package api_logs import ( "github.com/thoas/go-funk" + "gitlab.com/uafrica/go-utils/string_utils" "net/url" - "strconv" "strings" "time" @@ -37,14 +37,24 @@ func GenerateIncomingAPILog(startTime time.Time, requestID *string, claim map[st userID, _ := claim["UserID"].(int64) username, _ := claim["Username"].(string) accountID, _ := claim["AccountID"].(int64) + providerID, _ := claim["ProviderID"].(int64) + if accountID == 0 { if accountIDParam, ok := req.QueryStringParameters["account_id"]; ok { - if i64, err := strconv.ParseInt(accountIDParam, 10, 64); err == nil && i64 > 0 { + if i64, err := string_utils.StringToInt64(accountIDParam); err == nil && i64 > 0 { accountID = i64 } } } + if providerID == 0 { + if providerIDParam, ok := req.QueryStringParameters["provider_id"]; ok { + if i64, err := string_utils.StringToInt64(providerIDParam); err == nil && i64 > 0 { + providerID = i64 + } + } + } + typeString := "api-incoming" if funk.Contains(req.Path, "webhook") { typeString = "webhook-incoming" @@ -67,6 +77,7 @@ func GenerateIncomingAPILog(startTime time.Time, requestID *string, claim map[st UserID: userID, Username: username, AccountID: accountID, + ProviderID: providerID, Request: ApiLogRequest{ Headers: req.Headers, QueryParameters: req.QueryStringParameters, @@ -99,6 +110,8 @@ func GenerateOutgoingAPILog(startTime time.Time, requestID *string, claim map[st userID, _ := claim["UserID"].(int64) username, _ := claim["Username"].(string) accountID, _ := claim["AccountID"].(int64) + providerID, _ := claim["ProviderID"].(int64) + params := map[string]string{} parsedURL, err := url.Parse(urlString) if err == nil { @@ -125,6 +138,7 @@ func GenerateOutgoingAPILog(startTime time.Time, requestID *string, claim map[st UserID: userID, Username: username, AccountID: accountID, + ProviderID: providerID, Request: ApiLogRequest{ Headers: requestHeaders, QueryParameters: params, @@ -155,6 +169,7 @@ type ApiLog struct { InitialAuthUsername string `json:"initial_auth_username,omitempty"` InitialAuthType string `json:"initial_auth_type,omitempty"` AccountID int64 `json:"account_id,omitempty"` + ProviderID int64 `json:"provider_id,omitempty"` UserID int64 `json:"user_id,omitempty"` Username string `json:"username,omitempty"` SourceIP string `json:"source_ip,omitempty"` //only logged for incoming API