Skip to content

Commit e81821f

Browse files
stevejgordongithub-actions[bot]
authored andcommitted
Add registered domain processor (#5616)
1 parent dee7e74 commit e81821f

File tree

5 files changed

+108
-2
lines changed

5 files changed

+108
-2
lines changed

src/Nest/Ingest/ProcessorFormatter.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ internal class ProcessorFormatter : IJsonFormatter<IProcessor>
4545
{ "uri_parts", 33 },
4646
{ "fingerprint", 34 },
4747
{ "community_id", 35 },
48-
{ "network_direction", 36 }
48+
{ "network_direction", 36 },
49+
{ "registered_domain", 37 }
4950
};
5051

5152
public IProcessor Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
@@ -177,6 +178,9 @@ public IProcessor Deserialize(ref JsonReader reader, IJsonFormatterResolver form
177178
case 36:
178179
processor = Deserialize<NetworkDirectionProcessor>(ref reader, formatterResolver);
179180
break;
181+
case 37:
182+
processor = Deserialize<RegisteredDomainProcessor>(ref reader, formatterResolver);
183+
break;
180184
}
181185
}
182186
else
@@ -309,6 +313,9 @@ public void Serialize(ref JsonWriter writer, IProcessor value, IJsonFormatterRes
309313
case "network_direction":
310314
Serialize<INetworkDirectionProcessor>(ref writer, value, formatterResolver);
311315
break;
316+
case "registered_domain":
317+
Serialize<IRegisteredDomainProcessor>(ref writer, value, formatterResolver);
318+
break;
312319
default:
313320
var formatter = DynamicObjectResolver.ExcludeNullCamelCase.GetFormatter<IProcessor>();
314321
formatter.Serialize(ref writer, value, formatterResolver);

src/Nest/Ingest/Processors/NetworkDirectionProcessor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
using System;
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information
4+
5+
using System;
26
using System.Collections.Generic;
37
using System.Linq.Expressions;
48
using System.Runtime.Serialization;
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information
4+
5+
using System;
6+
using System.Linq.Expressions;
7+
using System.Runtime.Serialization;
8+
using Elasticsearch.Net.Utf8Json;
9+
10+
namespace Nest
11+
{
12+
[InterfaceDataContract]
13+
public interface IRegisteredDomainProcessor : IProcessor
14+
{
15+
[DataMember(Name = "field")]
16+
Field Field { get; set; }
17+
18+
[DataMember(Name = "ignore_missing")]
19+
bool? IgnoreMissing { get; set; }
20+
21+
[DataMember(Name = "target_field")]
22+
Field TargetField { get; set; }
23+
}
24+
25+
public class RegisteredDomainProcessor : ProcessorBase, IRegisteredDomainProcessor
26+
{
27+
protected override string Name => "registered_domain";
28+
29+
/// <inheritdoc />
30+
public Field Field { get; set; }
31+
/// <inheritdoc />
32+
public bool? IgnoreMissing { get; set; }
33+
/// <inheritdoc />
34+
public Field TargetField { get; set; }
35+
}
36+
37+
/// <inheritdoc cref="IFingerprintProcessor" />
38+
public class RegisteredDomainProcessorDescriptor<T>
39+
: ProcessorDescriptorBase<RegisteredDomainProcessorDescriptor<T>, IRegisteredDomainProcessor>, IRegisteredDomainProcessor
40+
where T : class
41+
{
42+
protected override string Name => "registered_domain";
43+
44+
Field IRegisteredDomainProcessor.Field { get; set; }
45+
bool? IRegisteredDomainProcessor.IgnoreMissing { get; set; }
46+
Field IRegisteredDomainProcessor.TargetField { get; set; }
47+
48+
/// <inheritdoc cref="IRegisteredDomainProcessor.Field" />
49+
public RegisteredDomainProcessorDescriptor<T> Field(Field field) => Assign(field, (a, v) => a.Field = v);
50+
51+
/// <inheritdoc cref="IRegisteredDomainProcessor.Field" />
52+
public RegisteredDomainProcessorDescriptor<T> Field<TValue>(Expression<Func<T, TValue>> objectPath) =>
53+
Assign(objectPath, (a, v) => a.Field = v);
54+
55+
/// <inheritdoc cref="IRegisteredDomainProcessor.IgnoreMissing" />
56+
public RegisteredDomainProcessorDescriptor<T> IgnoreMissing(bool? ignoreMissing = true) => Assign(ignoreMissing, (a, v) => a.IgnoreMissing = v);
57+
58+
/// <inheritdoc cref="IRegisteredDomainProcessor.TargetField" />
59+
public RegisteredDomainProcessorDescriptor<T> TargetField(Field field) => Assign(field, (a, v) => a.TargetField = v);
60+
61+
/// <inheritdoc cref="IRegisteredDomainProcessor.TargetField" />
62+
public RegisteredDomainProcessorDescriptor<T> TargetField<TValue>(Expression<Func<T, TValue>> objectPath) =>
63+
Assign(objectPath, (a, v) => a.TargetField = v);
64+
}
65+
}

src/Nest/Ingest/ProcessorsDescriptor.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,5 +193,9 @@ public ProcessorsDescriptor NetworkCommunityId<T>(Func<NetworkCommunityIdProcess
193193
/// <inheritdoc cref="INetworkDirectionProcessor"/>
194194
public ProcessorsDescriptor NetworkDirection<T>(Func<NetworkDirectionProcessorDescriptor<T>, INetworkDirectionProcessor> selector) where T : class =>
195195
Assign(selector, (a, v) => a.AddIfNotNull(v?.Invoke(new NetworkDirectionProcessorDescriptor<T>())));
196+
197+
/// <inheritdoc cref="IRegisteredDomainProcessor"/>
198+
public ProcessorsDescriptor RegisteredDomain<T>(Func<RegisteredDomainProcessorDescriptor<T>, IRegisteredDomainProcessor> selector) where T : class =>
199+
Assign(selector, (a, v) => a.AddIfNotNull(v?.Invoke(new RegisteredDomainProcessorDescriptor<T>())));
196200
}
197201
}

tests/Tests/Ingest/ProcessorAssertions.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,5 +850,31 @@ public class NetworkDirectionWithField : ProcessorAssertion
850850

851851
public override string Key => "network_direction";
852852
}
853+
854+
[SkipVersion("<7.13.0", "Register_domain processor added in 7.13.0")]
855+
public class RegisteredDomain : ProcessorAssertion
856+
{
857+
public override ProcFunc Fluent => d => d
858+
.RegisteredDomain<Project>(ud => ud
859+
.Field(f => f.Name)
860+
.TargetField("domain")
861+
.IgnoreMissing());
862+
863+
public override IProcessor Initializer => new RegisteredDomainProcessor
864+
{
865+
Field = Field<Project>(f => f.Name),
866+
TargetField = "domain",
867+
IgnoreMissing = true
868+
};
869+
870+
public override object Json => new
871+
{
872+
field = "name",
873+
target_field = "domain",
874+
ignore_missing = true
875+
};
876+
877+
public override string Key => "registered_domain";
878+
}
853879
}
854880
}

0 commit comments

Comments
 (0)