Skip to content

Commit 2782efb

Browse files
committed
Add write access to 'url.value' from 'request.transforms'.
1 parent 4fbd87e commit 2782efb

7 files changed

Lines changed: 19 additions & 70 deletions

File tree

CHANGELOG.next.asciidoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d
756756
- Improve memory usage of line reader of `log` and `filestream` input. {pull}27782[27782]
757757
- Add `ignore_empty_value` flag to `httpjson` `split` processor. {pull}27880[27880]
758758
- Update Cisco ASA/FTD ingest pipeline grok/dissect patterns for multiple message IDs. {issue}26869[26869] {pull}26879[26879]
759+
- Add write access to `url.value` from `request.transforms` in `httpjson` input. {pull}27937[27937]
759760

760761
*Heartbeat*
761762

x-pack/filebeat/docs/inputs/input-httpjson.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ Available transforms for request: [`append`, `delete`, `set`].
466466

467467
Can read state from: [`.last_response.*`, `.last_event.*`, `.cursor.*`, `.header.*`, `.url.*`, `.body.*`].
468468

469-
Can write state to: [`header.*`, `url.params.*`, `body.*`].
469+
Can write state to: [`body.*`, `header.*`, `url.*`].
470470

471471
["source","yaml",subs="attributes"]
472472
----

x-pack/filebeat/input/httpjson/internal/v2/pagination.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const paginationNamespace = "pagination"
1919
func registerPaginationTransforms() {
2020
registerTransform(paginationNamespace, appendName, newAppendPagination)
2121
registerTransform(paginationNamespace, deleteName, newDeletePagination)
22-
registerTransform(paginationNamespace, setName, newSetPagination)
22+
registerTransform(paginationNamespace, setName, newSetRequestPagination)
2323
}
2424

2525
type pagination struct {

x-pack/filebeat/input/httpjson/internal/v2/request.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const requestNamespace = "request"
2222
func registerRequestTransforms() {
2323
registerTransform(requestNamespace, appendName, newAppendRequest)
2424
registerTransform(requestNamespace, deleteName, newDeleteRequest)
25-
registerTransform(requestNamespace, setName, newSetRequest)
25+
registerTransform(requestNamespace, setName, newSetRequestPagination)
2626
}
2727

2828
type httpClient struct {

x-pack/filebeat/input/httpjson/internal/v2/transform_set.go

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type set struct {
3939

4040
func (set) transformName() string { return setName }
4141

42-
func newSetRequest(cfg *common.Config, log *logp.Logger) (transform, error) {
42+
func newSetRequestPagination(cfg *common.Config, log *logp.Logger) (transform, error) {
4343
set, err := newSet(cfg, log)
4444
if err != nil {
4545
return nil, err
@@ -52,6 +52,8 @@ func newSetRequest(cfg *common.Config, log *logp.Logger) (transform, error) {
5252
set.runFunc = setHeader
5353
case targetURLParams:
5454
set.runFunc = setURLParams
55+
case targetURLValue:
56+
set.runFunc = setURLValue
5557
default:
5658
return nil, fmt.Errorf("invalid target type: %s", set.targetInfo.Type)
5759
}
@@ -75,28 +77,6 @@ func newSetResponse(cfg *common.Config, log *logp.Logger) (transform, error) {
7577
return &set, nil
7678
}
7779

78-
func newSetPagination(cfg *common.Config, log *logp.Logger) (transform, error) {
79-
set, err := newSet(cfg, log)
80-
if err != nil {
81-
return nil, err
82-
}
83-
84-
switch set.targetInfo.Type {
85-
case targetBody:
86-
set.runFunc = setBody
87-
case targetHeader:
88-
set.runFunc = setHeader
89-
case targetURLParams:
90-
set.runFunc = setURLParams
91-
case targetURLValue:
92-
set.runFunc = setURLValue
93-
default:
94-
return nil, fmt.Errorf("invalid target type: %s", set.targetInfo.Type)
95-
}
96-
97-
return &set, nil
98-
}
99-
10080
func newSet(cfg *common.Config, log *logp.Logger) (set, error) {
10181
c := &setConfig{}
10282
if err := cfg.Unpack(c); err != nil {

x-pack/filebeat/input/httpjson/internal/v2/transform_set_test.go

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -41,72 +41,40 @@ func TestNewSet(t *testing.T) {
4141
expectedErr: "invalid target: cursor.foo",
4242
},
4343
{
44-
name: "newSetRequest targets body",
45-
constructor: newSetRequest,
44+
name: "newSetRequestPagination targets body",
45+
constructor: newSetRequestPagination,
4646
config: map[string]interface{}{
4747
"target": "body.foo",
4848
},
4949
expectedTarget: targetInfo{Name: "foo", Type: "body"},
5050
},
5151
{
52-
name: "newSetRequest targets header",
53-
constructor: newSetRequest,
52+
name: "newSetRequestPagination targets header",
53+
constructor: newSetRequestPagination,
5454
config: map[string]interface{}{
5555
"target": "header.foo",
5656
},
5757
expectedTarget: targetInfo{Name: "foo", Type: "header"},
5858
},
5959
{
60-
name: "newSetRequest targets url param",
61-
constructor: newSetRequest,
60+
name: "newSetRequestPagination targets url param",
61+
constructor: newSetRequestPagination,
6262
config: map[string]interface{}{
6363
"target": "url.params.foo",
6464
},
6565
expectedTarget: targetInfo{Name: "foo", Type: "url.params"},
6666
},
6767
{
68-
name: "newSetRequest targets something else",
69-
constructor: newSetRequest,
70-
config: map[string]interface{}{
71-
"target": "cursor.foo",
72-
},
73-
expectedErr: "invalid target: cursor.foo",
74-
},
75-
{
76-
name: "newSetPagination targets body",
77-
constructor: newSetPagination,
78-
config: map[string]interface{}{
79-
"target": "body.foo",
80-
},
81-
expectedTarget: targetInfo{Name: "foo", Type: "body"},
82-
},
83-
{
84-
name: "newSetPagination targets header",
85-
constructor: newSetPagination,
86-
config: map[string]interface{}{
87-
"target": "header.foo",
88-
},
89-
expectedTarget: targetInfo{Name: "foo", Type: "header"},
90-
},
91-
{
92-
name: "newSetPagination targets url param",
93-
constructor: newSetPagination,
94-
config: map[string]interface{}{
95-
"target": "url.params.foo",
96-
},
97-
expectedTarget: targetInfo{Name: "foo", Type: "url.params"},
98-
},
99-
{
100-
name: "newSetPagination targets url value",
101-
constructor: newSetPagination,
68+
name: "newSetRequestPagination targets url value",
69+
constructor: newSetRequestPagination,
10270
config: map[string]interface{}{
10371
"target": "url.value",
10472
},
10573
expectedTarget: targetInfo{Type: "url.value"},
10674
},
10775
{
108-
name: "newSetPagination targets something else",
109-
constructor: newSetPagination,
76+
name: "newSetRequestPagination targets something else",
77+
constructor: newSetRequestPagination,
11078
config: map[string]interface{}{
11179
"target": "cursor.foo",
11280
},

x-pack/filebeat/input/httpjson/internal/v2/transform_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestTransformableClone(t *testing.T) {
4646
}
4747

4848
func TestNewTransformsFromConfig(t *testing.T) {
49-
registerTransform("test", setName, newSetRequest)
49+
registerTransform("test", setName, newSetRequestPagination)
5050
t.Cleanup(func() { registeredTransforms = newRegistry() })
5151

5252
cases := []struct {
@@ -126,7 +126,7 @@ func TestNewBasicTransformsFromConfig(t *testing.T) {
126126
return fakeTransform{}, nil
127127
}
128128

129-
registerTransform("test", setName, newSetRequest)
129+
registerTransform("test", setName, newSetRequestPagination)
130130
registerTransform("test", "fake", fakeConstr)
131131
t.Cleanup(func() { registeredTransforms = newRegistry() })
132132

0 commit comments

Comments
 (0)