diff --git a/client.go b/client.go index e036a4e..52b1b94 100644 --- a/client.go +++ b/client.go @@ -8,7 +8,6 @@ import ( "fmt" "io" "net/http" - "time" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" @@ -72,7 +71,7 @@ func (c *Castle) Filter(ctx context.Context, req *Request) (RecommendedAction, e if req.Context == nil { return RecommendedActionNone, errors.New("request.Context cannot be nil") } - user_params := UserParams{ + params := Params{ Email: req.User.Email, Username: req.User.Name, } @@ -81,10 +80,10 @@ func (c *Castle) Filter(ctx context.Context, req *Request) (RecommendedAction, e Name: req.Event.Name, Status: req.Event.EventStatus, RequestToken: req.Context.RequestToken, - Params: user_params, + Params: params, Context: req.Context, Properties: req.Properties, - CreatedAt: time.Now(), + CreatedAt: req.CreatedAt, } return c.sendCall(ctx, r, FilterEndpoint) } @@ -106,7 +105,7 @@ func (c *Castle) Risk(ctx context.Context, req *Request) (RecommendedAction, err User: req.User, Context: req.Context, Properties: req.Properties, - CreatedAt: time.Now(), + CreatedAt: req.CreatedAt, } return c.sendCall(ctx, r, RiskEndpoint) } @@ -127,9 +126,7 @@ func (c *Castle) sendCall(ctx context.Context, r castleAPIRequest, url string) ( b := new(bytes.Buffer) switch request := r.(type) { - case *castleRiskAPIRequest: - err = json.NewEncoder(b).Encode(request) - case *castleFilterAPIRequest: + case *castleFilterAPIRequest, *castleRiskAPIRequest: err = json.NewEncoder(b).Encode(request) } if err != nil { diff --git a/client_test.go b/client_test.go index 9154bdc..e32dfaa 100644 --- a/client_test.go +++ b/client_test.go @@ -6,6 +6,7 @@ import ( "net/http" "net/http/httptest" "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -36,6 +37,7 @@ func configureRequest(httpReq *http.Request) *castle.Request { Traits: map[string]string{"trait1": "traitValue1"}, }, Properties: map[string]string{"prop1": "propValue1"}, + CreatedAt: time.Now(), } } @@ -151,7 +153,7 @@ func TestCastle_Filter(t *testing.T) { Type castle.EventType `json:"type"` Status castle.EventStatus `json:"status"` RequestToken string `json:"request_token"` - Params castle.UserParams `json:"params"` + Params castle.Params `json:"params"` Context *castle.Context `json:"context"` Properties map[string]string `json:"properties"` } diff --git a/model.go b/model.go index 6fdafed..962ca14 100644 --- a/model.go +++ b/model.go @@ -52,6 +52,7 @@ type Request struct { Event Event User User Properties map[string]string + CreatedAt time.Time } // Context captures data from HTTP request. @@ -70,7 +71,7 @@ type User struct { Traits map[string]string `json:"traits,omitempty"` } -type UserParams struct { +type Params struct { Email string `json:"email,omitempty"` Phone string `json:"phone,omitempty"` Username string `json:"username,omitempty"` @@ -85,7 +86,7 @@ type castleFilterAPIRequest struct { Name string `json:"name,omitempty"` Status EventStatus `json:"status"` RequestToken string `json:"request_token"` - Params UserParams `json:"params"` + Params Params `json:"params"` Context *Context `json:"context"` Properties map[string]string `json:"properties,omitempty"` CreatedAt time.Time `json:"created_at"`