mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-07-31 17:28:49 +02:00
GuidWildcardMatcher to match on GUIDs #386
Closed
opened 2025-12-29 15:22:27 +01:00 by adam
·
14 comments
No Branch/Tag Specified
master
1341-mapping-json
stef-aspire-tests-updates
bug/973-TinyMapper
bug/1149-AppendGuidToSavedMappingFile
feature/1150-DockerImageVersion
61
stef-1108
stef-1097
stef-1083-MessageOptions_Type_Conflict
stef-1062-logger
stef-IgnoreOpenApiErrors
stef-928-TypeLoadException-FluentAssertions-net472
nunit
stef-849
stef-847-regex-questionmark
http_verb
WireMockServerContext
webapp
ai
CommandLineArgumentsParser
2.13.0
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.25.0
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.2
1.11.0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.18
1.8.17
1.8.16
1.8.15
1.8.14
1.8.13
1.8.12
1.8.11
1.8.10
1.8.9
1.8.8
1.8.7
1.8.6
1.8.5
1.8.3
1.8.2
1.8.1
1.8.0
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.62
1.5.61
1.5.60
1.5.59
1.5.58
1.5.57
1.5.56
1.5.55
1.5.54
1.5.53
1.5.52
1.5.51
1.5.50
1.5.49
1.5.48
1.5.47
1.5.46
1.5.45
1.5.44
1.5.43
1.5.42
1.5.41
1.5.40
1.5.39
1.5.38
1.5.37
1.5.36
1.5.35
1.5.34
1.5.33
1.5.32
1.5.31
1.5.30
1.5.29
1.5.28
1.5.27
1.5.26
1.5.25
1.5.24
1.5.23
1.5.22
1.5.21
1.5.20
1.5.19
1.5.18
1.5.17
1.5.16
1.5.15
1.5.14
1.5.13
1.5.12
1.5.11
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.43
1.4.42
1.4.41
1.4.40
1.4.39
1.4.38
1.4.37
1.4.36
1.4.35
1.4.34
1.4.33
1.4.32
1.4.31
1.4.30
1.4.29
1.4.28
1.4.27
1.4.26
1.4.25
1.4.24
1.4.23
1.4.22
1.4.21
1.4.20
1.4.19
1.4.18
1.4.17
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.10
1.3.9
1.3.8
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.18
1.2.17
1.2.16
1.2.15
1.2.14
1.2.13
1.2.12
1.2.11.0
1.2.10
1.2.9.0
1.2.8.0
1.2.7.0
1.2.6.0
1.2.5.0
1.2.4.0
1.2.3.0
1.2.2.0
1.2.1.0
1.2.0.0
1.1.10
1.1.9.0
1.1.8.0
1.1.7.0
1.1.6.0
1.1.5.0
1.1.3.0
1.1.2.0
1.1.1.0
1.1.0.0
1.0.43.0
1.0.42.0
1.0.41.0
1.0.40.0
1.0.39.0
1.0.38.0
1.0.37.0
1.0.36.0
1.0.35.0
1.0.34.0
1.0.33.0
1.0.32.0
1.0.31.0
1.0.29.0
1.0.28.0
1.0.25.0
1.0.24.0
1.0.23.0
1.0.22.0
1.0.21.0
1.0.20.0
1.0.19.0
1.0.18.0
1.0.17.0
1.0.16.0
1.0.15.0
1.0.14.0
1.0.13.0
1.0.12.0
1.0.11.0
1.0.10.0
1.0.9.0
1.0.8.0
1.0.7.0
1.0.6.1
1.0.6
1.0.5
1.0.4.21
1.0.4.20
1.0.4.19
1.0.4.18
1.0.4.17
1.0.4.16
1.0.4.15
1.0.4.14
1.0.4.13
1.0.4.12
1.0.4.11
1.0.4.10
1.0.4.9
1.0.4.8
1.0.4.7
1.0.4.6
1.0.4.5
1.0.4.4
1.0.4.3
1.0.4.2
1.0.4.1
1.0.4.0
1.0.3.20
1.0.3.19
1.0.3.18
1.0.3.17
1.0.3.16
1.0.3.15
1.0.3.14
1.0.3.13
1.0.3.12
1.0.3.11
1.0.3.10
1.0.3.9
1.0.3.8
1.0.3.7
1.0.3.6
1.0.3.5
1.0.3.4
1.0.3.3
1.0.3.2
1.0.3.1
1.0.3.0
1.0.2.13
1.0.2.12
1.0.2.11
1.0.2.10
1.0.2.9
1.0.2.8
1.0.2.7
1.0.2.6
1.0.2.5
1.0.2.4
1.0.2.1
1.0.2.0
1.0.1.5
1.0.1.3
1.0.1.2
1.0.1.1
1.0.0.0
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/WireMock.Net-wiremock#386
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @brogdogg on GitHub (Nov 17, 2021).
Is your feature request related to a problem? Please describe.
I have been using the
RegexMatcherto do matches for paths with GUIDs, but after a while thePatternin the JSON mappings becomes unwieldly long in length when a few GUIDs are used.Describe the solution you'd like
Would like a matcher to allow for matching a GUID (mostly in the
Path). For example:Path-http://localhost/v1.0/4a7eaad5-bbe7-4579-bb0b-7c85352fe1b6/task/edef5b4a-33bb-4920-bb42-1d5e6283984eJSON mapping:
Where the tokens used in the pattern match up with the
GUID.ToString(string? format)method as described here.Describe alternatives you've considered
None - I can use the
RegexMatcherif the feature is not accepted.Is your feature request supported by WireMock (java version)? Please provide details.
I do not believe this is supported in the java version (I did a search and couldn't find anything that I could see)
@StefH commented on GitHub (Nov 17, 2021):
It would also be an option to update the wildcard matcher.
Currently the wildcard matcher supports a
*. Maybe when adding logic to understand alsoGUID(D)could be an option...Just thinking....
@brogdogg commented on GitHub (Nov 17, 2021):
True, I mean could it be a more general matcher available in JSON as well? I forked and trying to play with it to see.
@brogdogg commented on GitHub (Nov 17, 2021):
OK, after playing I see what you mean by updating the wildcard matcher, since it extends
RegexMatcher. I was trying something like this:and was able to get things working.
My only thought about putting it in the
WildcardMatcheris I would not think to look there for a GUID matcher. But I'm honestly having a difficult time thinking of a better solution. Creating a newGuidMatcherand extendingRegexMatcheris where I first went, which would work but it ain't immediately clear you have fullRegexcapabilities on the matcher.Anyways, thanks for the consideration.
@StefH commented on GitHub (Nov 17, 2021):
What we also could do is 'extending' the RegEx specification by adding GUID, GUIDN or GUIDP.
So like
\dmatches a digit, the\GUIDshould match a Guid.So maybe new logic should be moved to a separate helper NuGet / project / class and then replace all logic in WireMock.Net which uses Regex, by this new "RegexExtended".
?
@brogdogg commented on GitHub (Nov 18, 2021):
I like the idea. I took a look at the RegexParser. ScanBackslash method and it is quite involved and isn't really built for extensibility, which would result in divergent code paths. So doesn't feel like a longterm solution? Unless could be added to the main library.
Anyways, if it were to be done maybe something similar to the
\p{}, could do something like\g{}(\Gis already used).@StefH commented on GitHub (Nov 18, 2021):
I just meant that we don't need to write parser code, just use your replace logic, like:
@brogdogg commented on GitHub (Nov 18, 2021):
I see what you mean.
@brogdogg commented on GitHub (Nov 18, 2021):
OK, I got a library where I have most of the work done. Will try to package into a nuget later and publish.
@StefH commented on GitHub (Nov 18, 2021):
Cool.
However, if it's only a single class file, maybe it's better to just include it in this project first.
@brogdogg commented on GitHub (Nov 18, 2021):
Meh... it could be useful for others too I suppose.
@brogdogg commented on GitHub (Nov 18, 2021):
I could try to integrate it on my fork as a single class integrated and put up a PR. Would that be helpful?
@StefH commented on GitHub (Nov 28, 2021):
Hello @brogdogg;
Did you achieve any progress on this?
@brogdogg commented on GitHub (Nov 29, 2021):
@StefH I had it done and then realized my line endings got jacked... and then Thanksgiving happened, so took a break. Will try to figure out my line endings and get it ready.
@brogdogg commented on GitHub (Dec 13, 2021):
Thanks @StefH , I was able to pull the latest version and use this feature. Thanks again for being so open to my feature suggestion.