@@ -14,7 +14,6 @@ public class Router : IRouter
14
14
{
15
15
private readonly JsonApiModelConfiguration _jsonApiModelConfiguration ;
16
16
private IServiceProvider _serviceProvider ;
17
- private JsonApiContext _jsonApiContext ;
18
17
private IRouteBuilder _routeBuilder ;
19
18
private IControllerBuilder _controllerBuilder ;
20
19
@@ -32,50 +31,51 @@ public async Task<bool> HandleJsonApiRouteAsync(HttpContext context, IServicePro
32
31
var route = _routeBuilder . BuildFromRequest ( context . Request ) ;
33
32
if ( route == null ) return false ;
34
33
35
- InitializeContext ( context , route ) ;
36
- await CallController ( context ) ;
34
+ var jsonApiContext = InitializeContext ( context , route ) ;
35
+ await CallController ( jsonApiContext ) ;
37
36
38
37
return true ;
39
38
}
40
39
41
- private void InitializeContext ( HttpContext context , Route route )
40
+ private JsonApiContext InitializeContext ( HttpContext context , Route route )
42
41
{
43
42
var dbContext = _serviceProvider . GetService ( _jsonApiModelConfiguration . ContextType ) ;
44
- _jsonApiContext = new JsonApiContext ( context , route , dbContext , _jsonApiModelConfiguration ) ;
43
+ Console . WriteLine ( "InitializingContext" ) ;
44
+ return new JsonApiContext ( context , route , dbContext , _jsonApiModelConfiguration ) ;
45
45
}
46
46
47
- private async Task CallController ( HttpContext context )
47
+ private async Task CallController ( JsonApiContext jsonApiContext )
48
48
{
49
- var controller = _controllerBuilder . BuildController ( _jsonApiContext ) ;
49
+ var controller = _controllerBuilder . BuildController ( jsonApiContext ) ;
50
50
51
- var result = ActivateControllerMethod ( controller ) ;
51
+ var result = ActivateControllerMethod ( controller , jsonApiContext ) ;
52
52
53
- result . Value = SerializeResult ( result . Value ) ;
53
+ result . Value = SerializeResult ( result . Value , jsonApiContext ) ;
54
54
55
- await SendResponse ( context , result ) ;
55
+ await SendResponse ( jsonApiContext . HttpContext , result ) ;
56
56
}
57
57
58
- private ObjectResult ActivateControllerMethod ( IJsonApiController controller )
58
+ private ObjectResult ActivateControllerMethod ( IJsonApiController controller , JsonApiContext jsonApiContext )
59
59
{
60
- var route = _jsonApiContext . Route ;
60
+ var route = jsonApiContext . Route ;
61
61
switch ( route . RequestMethod )
62
62
{
63
63
case "GET" :
64
64
return string . IsNullOrEmpty ( route . ResourceId ) ? controller . Get ( ) : controller . Get ( route . ResourceId ) ;
65
65
case "POST" :
66
- return controller . Post ( new JsonApiDeserializer ( _jsonApiContext ) . GetEntityFromRequest ( ) ) ;
66
+ return controller . Post ( new JsonApiDeserializer ( jsonApiContext ) . GetEntityFromRequest ( ) ) ;
67
67
case "PATCH" :
68
- return controller . Patch ( route . ResourceId , new JsonApiDeserializer ( _jsonApiContext ) . GetEntityPatch ( ) ) ;
68
+ return controller . Patch ( route . ResourceId , new JsonApiDeserializer ( jsonApiContext ) . GetEntityPatch ( ) ) ;
69
69
case "DELETE" :
70
70
return controller . Delete ( route . ResourceId ) ;
71
71
default :
72
72
throw new ArgumentException ( "Request method not supported" , nameof ( route ) ) ;
73
73
}
74
74
}
75
75
76
- private object SerializeResult ( object result )
76
+ private object SerializeResult ( object result , JsonApiContext jsonApiContext )
77
77
{
78
- return result == null ? null : new JsonApiSerializer ( _jsonApiContext ) . ToJsonApiDocument ( result ) ;
78
+ return result == null ? null : new JsonApiSerializer ( jsonApiContext ) . ToJsonApiDocument ( result ) ;
79
79
}
80
80
81
81
private async Task SendResponse ( HttpContext context , ObjectResult result )
0 commit comments