1- using System . Collections . Generic ;
1+ using System ;
2+ using System . Collections . Generic ;
23using Elasticsearch . Net ;
34
45namespace Nest
56{
6- public class RouteValues
7+ public class RouteValues : Dictionary < string , IUrlParameter >
78 {
8- private readonly Dictionary < string , string > _resolved = new Dictionary < string , string > ( ) ;
9- private readonly Dictionary < string , IUrlParameter > _routeValues = new Dictionary < string , IUrlParameter > ( ) ;
10- public string ActionId => GetResolved ( "action_id" ) ;
11- public string Alias => GetResolved ( "alias" ) ;
12- public string CategoryId => GetResolved ( "category_id" ) ;
13- public string ForecastId => GetResolved ( "forecast_id" ) ;
14- public string Context => GetResolved ( "context" ) ;
15- public string DatafeedId => GetResolved ( "datafeed_id" ) ;
16- public string Feature => GetResolved ( "feature" ) ;
17- public string Field => GetResolved ( "field" ) ;
18- public string Fields => GetResolved ( "fields" ) ;
19- public string FilterId => GetResolved ( "filter_id" ) ;
20- public string Id => GetResolved ( "id" ) ;
21- public string CalendarId => GetResolved ( "calendar_id" ) ;
22- public string EventId => GetResolved ( "event_id" ) ;
23-
24- public string Index => GetResolved ( "index" ) ;
25- public string IndexMetric => GetResolved ( "index_metric" ) ;
26- public string JobId => GetResolved ( "job_id" ) ;
27- public string Lang => GetResolved ( "lang" ) ;
28- public string Metric => GetResolved ( "metric" ) ;
29- public string Name => GetResolved ( "name" ) ;
30- public string NewIndex => GetResolved ( "new_index" ) ;
31- public string NodeId => GetResolved ( "node_id" ) ;
32- public string Realms => GetResolved ( "realms" ) ;
33- public string Repository => GetResolved ( "repository" ) ;
34- public string ScrollId => GetResolved ( "scroll_id" ) ;
35- public string Snapshot => GetResolved ( "snapshot" ) ;
36- public string SnapshotId => GetResolved ( "snapshot_id" ) ;
37- public string Target => GetResolved ( "target" ) ;
38- public string TaskId => GetResolved ( "task_id" ) ;
39- public string ThreadPoolPatterns => GetResolved ( "thread_pool_patterns" ) ;
40- public string Timestamp => GetResolved ( "timestamp" ) ;
41- public string Type => GetResolved ( "type" ) ;
42- public string Application => GetResolved ( "application" ) ;
43- public string User => GetResolved ( "user" ) ;
44- public string Username => GetResolved ( "username" ) ;
45- public WatcherStatsMetric ? WatcherStatsMetric => GetResolved ( "watcher_stats_metric" ) . ToEnum < WatcherStatsMetric > ( ) ;
46- public string WatchId => GetResolved ( "watch_id" ) ;
47-
48- private string GetResolved ( string route ) => _resolved . TryGetValue ( route , out var resolved ) ? resolved : null ;
9+ // TODO Remove
10+ public string Id => throw new Exception ( "need to be refactored out" ) ;
4911
5012 private RouteValues Route ( string name , IUrlParameter routeValue , bool required = true )
5113 {
52- if ( routeValue == null && ! required )
53- {
54- if ( _routeValues . ContainsKey ( name ) )
55- _routeValues . Remove ( name ) ;
56- return this ;
57- }
58- if ( routeValue == null ) return this ;
59-
60- _routeValues [ name ] = routeValue ;
61- return this ;
62- }
63-
64- public void Resolve ( IConnectionSettingsValues settings )
65- {
66- foreach ( var kv in _routeValues )
67- {
68- var key = kv . Value . GetString ( settings ) ;
69- _resolved [ kv . Key ] = key . IsNullOrEmpty ( ) ? key : key ;
14+ switch ( routeValue ) {
15+ case null when ! required : {
16+ if ( ContainsKey ( name ) ) Remove ( name ) ;
17+ return this ;
18+ }
19+ case null : throw new ArgumentNullException ( name , $ "{ name } is required to build a url to this API") ;
20+ default :
21+ this [ name ] = routeValue ;
22+ return this ;
7023 }
7124 }
7225
@@ -81,16 +34,10 @@ public void Resolve(IConnectionSettingsValues settings)
8134 internal TActual Get < TActual > ( string route ) where TActual : class , IUrlParameter
8235 {
8336 IUrlParameter actual ;
84- if ( _routeValues . TryGetValue ( route , out actual ) && actual != null )
37+ if ( TryGetValue ( route , out actual ) && actual != null )
8538 return ( TActual ) actual ;
8639
8740 return null ;
8841 }
89-
90- public void Remove ( string route )
91- {
92- _resolved . Remove ( route ) ;
93- _routeValues . Remove ( route ) ;
94- }
9542 }
9643}
0 commit comments