@@ -43,7 +43,7 @@ public bool HandleJsonApiRoute(HttpContext context, IServiceProvider serviceProv
4343 private void CallControllerMethod ( Route route , HttpContext context )
4444 {
4545 var dbContext = _serviceProvider . GetService ( _jsonApiModelConfiguration . ContextType ) ;
46- var jsonApiContext = new JsonApiContext ( route , dbContext ) ;
46+ var jsonApiContext = new JsonApiContext ( context , route , dbContext ) ;
4747 var controller = new JsonApiController ( context , jsonApiContext ) ;
4848
4949 switch ( route . RequestMethod )
@@ -52,13 +52,13 @@ private void CallControllerMethod(Route route, HttpContext context)
5252 if ( string . IsNullOrEmpty ( route . ResourceId ) )
5353 {
5454 var result = controller . Get ( ) ;
55- result . Value = SerializeResponse ( context , jsonApiContext , result . Value ) ;
55+ result . Value = SerializeResponse ( jsonApiContext , result . Value ) ;
5656 SendResponse ( context , result ) ;
5757 }
5858 else
5959 {
6060 var result = controller . Get ( route . ResourceId ) ;
61- result . Value = SerializeResponse ( context , jsonApiContext , result . Value ) ;
61+ result . Value = SerializeResponse ( jsonApiContext , result . Value ) ;
6262 SendResponse ( context , result ) ;
6363 }
6464 break ;
@@ -76,11 +76,11 @@ private void CallControllerMethod(Route route, HttpContext context)
7676 }
7777 }
7878
79- private string SerializeResponse ( HttpContext context , JsonApiContext jsonApiContext , object resultValue )
79+ private string SerializeResponse ( JsonApiContext jsonApiContext , object resultValue )
8080 {
8181 var response = new JsonApiDocument
8282 {
83- Links = GetJsonApiDocumentLinks ( context , jsonApiContext ) ,
83+ Links = GetJsonApiDocumentLinks ( jsonApiContext ) ,
8484 Data = GetJsonApiDocumentData ( jsonApiContext , resultValue )
8585 } ;
8686
@@ -114,13 +114,14 @@ private IJsonApiResource EntityToJsonApiResource(object entity)
114114 return ( IJsonApiResource ) _jsonApiModelConfiguration . ResourceMaps . Map ( entity , entity . GetType ( ) , type ) ;
115115 }
116116
117- private static JsonApiDatum ResourceToJsonApiDatum ( JsonApiContext context , IJsonApiResource resource )
117+ private JsonApiDatum ResourceToJsonApiDatum ( JsonApiContext context , IJsonApiResource resource )
118118 {
119119 return new JsonApiDatum
120120 {
121121 Type = context . Route . RouteDefinition . ContextPropertyName . ToCamelCase ( ) ,
122122 Id = resource . Id ,
123- Attributes = GetAttributesFromResource ( resource )
123+ Attributes = GetAttributesFromResource ( resource ) ,
124+ Links = GetJsonApiDatumLinks ( context , resource )
124125 } ;
125126 }
126127
@@ -140,14 +141,30 @@ private static void SendResponse(HttpContext context, ObjectResult result)
140141 context . Response . Body . Flush ( ) ;
141142 }
142143
143- private Dictionary < string , string > GetJsonApiDocumentLinks ( HttpContext context , JsonApiContext jsonApiContext )
144+ private Dictionary < string , string > GetJsonApiDocumentLinks ( JsonApiContext jsonApiContext )
145+ {
146+ var request = jsonApiContext . HttpContext . Request ;
147+ var route = jsonApiContext . Route ;
148+
149+ var links = new Dictionary < string , string >
150+ {
151+ {
152+ "self" ,
153+ RouteBuilder . BuildRoute ( request . Scheme , request . Host . ToString ( ) , _jsonApiModelConfiguration . Namespace ,
154+ route . RouteDefinition . ContextPropertyName . ToCamelCase ( ) , route . ResourceId )
155+ }
156+ } ;
157+ return links ;
158+ }
159+
160+ private Dictionary < string , string > GetJsonApiDatumLinks ( JsonApiContext jsonApiContext , IJsonApiResource resource )
144161 {
145162 var links = new Dictionary < string , string >
146163 {
147164 {
148165 "self" ,
149- RouteBuilder . BuildRoute ( context . Request . Scheme , context . Request . Host . ToString ( ) , _jsonApiModelConfiguration . Namespace ,
150- jsonApiContext . Route . RouteDefinition . ContextPropertyName . ToCamelCase ( ) , jsonApiContext . Route . ResourceId )
166+ RouteBuilder . BuildRoute ( jsonApiContext . HttpContext . Request . Scheme , jsonApiContext . HttpContext . Request . Host . ToString ( ) , _jsonApiModelConfiguration . Namespace ,
167+ jsonApiContext . Route . RouteDefinition . ContextPropertyName . ToCamelCase ( ) , resource . Id )
151168 }
152169 } ;
153170 return links ;
0 commit comments