diff --git a/logpush.go b/logpush.go index c7aaeae08a..724cc35e40 100644 --- a/logpush.go +++ b/logpush.go @@ -12,18 +12,18 @@ import ( // LogpushJob describes a Logpush job. type LogpushJob struct { - ID int `json:"id,omitempty"` - Dataset string `json:"dataset"` - Enabled bool `json:"enabled"` - Name string `json:"name"` - LogpullOptions string `json:"logpull_options"` - DestinationConf string `json:"destination_conf"` - OwnershipChallenge string `json:"ownership_challenge,omitempty"` - LastComplete *time.Time `json:"last_complete,omitempty"` - LastError *time.Time `json:"last_error,omitempty"` - ErrorMessage string `json:"error_message,omitempty"` - Frequency string `json:"frequency,omitempty"` - Filter LogpushJobFilters `json:"filter,omitempty"` + ID int `json:"id,omitempty"` + Dataset string `json:"dataset"` + Enabled bool `json:"enabled"` + Name string `json:"name"` + LogpullOptions string `json:"logpull_options"` + DestinationConf string `json:"destination_conf"` + OwnershipChallenge string `json:"ownership_challenge,omitempty"` + LastComplete *time.Time `json:"last_complete,omitempty"` + LastError *time.Time `json:"last_error,omitempty"` + ErrorMessage string `json:"error_message,omitempty"` + Frequency string `json:"frequency,omitempty"` + Filter *LogpushJobFilters `json:"filter,omitempty"` } type LogpushJobFilters struct { @@ -131,17 +131,23 @@ type LogpushDestinationExistsRequest struct { func (f LogpushJob) MarshalJSON() ([]byte, error) { type Alias LogpushJob - filter, err := json.Marshal(f.Filter) + var filter string - if err != nil { - return nil, err + if f.Filter != nil { + b, err := json.Marshal(f.Filter) + + if err != nil { + return nil, err + } + + filter = string(b) } return json.Marshal(&struct { Filter string `json:"filter,omitempty"` Alias }{ - Filter: string(filter), + Filter: filter, Alias: (Alias)(f), }) } @@ -167,7 +173,7 @@ func (f *LogpushJob) UnmarshalJSON(data []byte) error { if err := filter.Where.Validate(); err != nil { return err } - f.Filter = filter + f.Filter = &filter } return nil } diff --git a/logpush_example_test.go b/logpush_example_test.go index db56b82c0c..cfeb0e8682 100644 --- a/logpush_example_test.go +++ b/logpush_example_test.go @@ -180,7 +180,7 @@ func ExampleLogpushJob_MarshalJSON() { LogpullOptions: "fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339&CVE-2021-44228=true", Dataset: "http_requests", DestinationConf: "s3://?region=us-west-2/", - Filter: cloudflare.LogpushJobFilters{ + Filter: &cloudflare.LogpushJobFilters{ Where: cloudflare.LogpushJobFilter{ And: []cloudflare.LogpushJobFilter{ {Key: "ClientRequestPath", Operator: cloudflare.Contains, Value: "/static\\"}, diff --git a/logpush_test.go b/logpush_test.go index 6e2c9feccb..bc96220a16 100644 --- a/logpush_test.go +++ b/logpush_test.go @@ -389,7 +389,7 @@ func TestLogpushJob_Unmarshall(t *testing.T) { LogpullOptions: "fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339&CVE-2021-44228=true", Dataset: "http_requests", DestinationConf: "s3://?region=us-west-2/", - Filter: LogpushJobFilters{ + Filter: &LogpushJobFilters{ Where: LogpushJobFilter{ And: []LogpushJobFilter{ {Key: "ClientRequestPath", Operator: Contains, Value: "/static\\"}, @@ -435,7 +435,7 @@ func TestLogPushJob_Marshall(t *testing.T) { Name: "valid filter", LogpullOptions: "fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339", DestinationConf: "https://example.com", - Filter: LogpushJobFilters{ + Filter: &LogpushJobFilters{ Where: LogpushJobFilter{Key: "ClientRequestHost", Operator: Equal, Value: "example.com"}, }, },