66
77namespace JsonApiDotNetCore . Routing
88{
9- public class RouteBuilder
9+ public class RouteBuilder : IRouteBuilder
1010 {
1111 private RouteDefinition _baseRouteDefinition ;
1212 private string _baseResourceId ;
13- private readonly HttpRequest _request ;
1413 private readonly JsonApiModelConfiguration _configuration ;
1514
16- public RouteBuilder ( HttpRequest request , JsonApiModelConfiguration configuration )
15+ public RouteBuilder ( JsonApiModelConfiguration configuration )
1716 {
18- _request = request ;
1917 _configuration = configuration ;
2018 }
2119
22- public Route BuildFromRequest ( )
20+ public Route BuildFromRequest ( HttpRequest request )
2321 {
24- var remainingPathString = SetBaseRouteDefinition ( ) ;
22+ var remainingPathString = SetBaseRouteDefinition ( request . Path ) ;
2523
2624 if ( PathStringIsEmpty ( remainingPathString ) )
2725 { // {baseResource}
28- return new Route ( _baseRouteDefinition . ModelType , _request . Method , null , _baseRouteDefinition ) ;
26+ return new Route ( _baseRouteDefinition . ModelType , request . Method , null , _baseRouteDefinition ) ;
2927 }
3028
3129 remainingPathString = SetBaseResourceId ( remainingPathString ) ;
3230 if ( PathStringIsEmpty ( remainingPathString ) )
3331 { // {baseResource}/{baseResourceId}
34- return new Route ( _baseRouteDefinition . ModelType , _request . Method , _baseResourceId , _baseRouteDefinition ) ;
32+ return new Route ( _baseRouteDefinition . ModelType , request . Method , _baseResourceId , _baseRouteDefinition ) ;
3533 }
3634
3735 // { baseResource}/{ baseResourceId}/{relatedResourceName}
@@ -43,20 +41,20 @@ public Route BuildFromRequest()
4341 }
4442
4543 var relationshipType = GetTypeOfRelatedResource ( relatedResource ) ;
46- return new RelationalRoute ( _baseRouteDefinition . ModelType , _request . Method , _baseResourceId , _baseRouteDefinition , relationshipType , relatedResource ) ;
44+ return new RelationalRoute ( _baseRouteDefinition . ModelType , request . Method , _baseResourceId , _baseRouteDefinition , relationshipType , relatedResource ) ;
4745 }
4846
4947 private bool PathStringIsEmpty ( PathString pathString )
5048 {
5149 return pathString . HasValue ? string . IsNullOrEmpty ( pathString . ToString ( ) . TrimStart ( '/' ) ) : true ;
5250 }
5351
54- private PathString SetBaseRouteDefinition ( )
52+ private PathString SetBaseRouteDefinition ( PathString path )
5553 {
5654 foreach ( var rte in _configuration . Routes )
5755 {
5856 PathString remainingPathString ;
59- if ( _request . Path . StartsWithSegments ( new PathString ( rte . PathString ) , StringComparison . OrdinalIgnoreCase , out remainingPathString ) )
57+ if ( path . StartsWithSegments ( new PathString ( rte . PathString ) , StringComparison . OrdinalIgnoreCase , out remainingPathString ) )
6058 {
6159 _baseRouteDefinition = rte ;
6260 return remainingPathString ;
@@ -76,7 +74,6 @@ private Type GetTypeOfRelatedResource(string relationshipName)
7674 return ModelAccessor . GetTypeFromModelRelationshipName ( _baseRouteDefinition . ModelType , relationshipName ) ;
7775 }
7876
79-
8077 // TODO: Why is this here?
8178 public static string BuildRoute ( string nameSpace , string resourceCollectionName )
8279 {
0 commit comments