1515 ActionFormValuesSerializer ,
1616 ActionResultSerializer ,
1717)
18- from forestadmin .rpc_common .serializers .aes import aes_decrypt , aes_encrypt
1918from forestadmin .rpc_common .serializers .collection .aggregation import AggregationSerializer
2019from forestadmin .rpc_common .serializers .collection .filter import (
2120 FilterSerializer ,
@@ -42,6 +41,7 @@ def __init__(self, options: RpcOptions):
4241
4342 @web .middleware
4443 async def hmac_middleware (self , request : web .Request , handler ):
44+ # TODO: handle HMAC like ruby agent
4545 if request .method == "POST" :
4646 body = await request .read ()
4747 if not is_valid_hmac (
@@ -51,20 +51,21 @@ async def hmac_middleware(self, request: web.Request, handler):
5151 return await handler (request )
5252
5353 def setup_routes (self ):
54+ self .app .router .add_route ("GET" , "/" , lambda _ : web .Response (text = "OK" )) # type: ignore
5455 self .app .router .add_route ("GET" , "/sse" , self .sse_handler )
5556 self .app .router .add_route ("GET" , "/schema" , self .schema )
56- self . app . router . add_route ( "POST" , "/collection/list" , self . collection_list )
57- self .app .router .add_route ("POST" , "/collection/create " , self .collection_create )
58- self .app .router .add_route ("POST" , "/collection/update " , self .collection_update )
59- self . app . router . add_route ( "POST" , "/collection/delete" , self . collection_delete )
60- self .app .router .add_route ("POST" , "/collection/aggregate " , self .collection_aggregate )
61- self .app .router .add_route ("POST" , "/collection/get-form " , self .collection_get_form )
62- self .app .router .add_route ("POST" , "/collection/execute " , self .collection_execute )
63- self .app .router .add_route ("POST" , "/collection/render-chart " , self .collection_render_chart )
64-
65- self .app .router .add_route ("POST" , "/execute-native-query " , self .native_query )
66- self .app .router .add_route ("POST" , "/render-chart " , self .render_chart )
67- self .app .router .add_route ("GET " , "/" , lambda _ : web . Response ( text = "OK" )) # type: ignore
57+
58+ # self.app.router.add_route("POST", "/execute-native-query ", self.native_query )
59+ self .app .router .add_route ("POST" , "/forest/rpc/datasource-chart " , self .render_chart )
60+
61+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/list " , self .collection_list )
62+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/create " , self .collection_create )
63+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/update " , self .collection_update )
64+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/delete " , self .collection_delete )
65+ self . app . router . add_route ( "POST" , "/forest/rpc/{collection_name}/aggregate" , self . collection_aggregate )
66+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/action-form " , self .collection_get_form )
67+ self .app .router .add_route ("POST" , "/forest/rpc/{collection_name}/action-execute " , self .collection_execute )
68+ self .app .router .add_route ("POST " , "/forest/rpc/{collection_name}/chart " , self . collection_render_chart )
6869
6970 async def sse_handler (self , request : web .Request ) -> web .StreamResponse :
7071 async with sse_response (request ) as resp :
@@ -83,7 +84,7 @@ async def schema(self, request):
8384 async def collection_list (self , request : web .Request ):
8485 body_params = await request .json ()
8586 ds = await self .customizer .get_datasource ()
86- collection = ds .get_collection (body_params [ "collectionName " ])
87+ collection = ds .get_collection (request . match_info [ "collection_name " ])
8788 caller = CallerSerializer .deserialize (body_params ["caller" ])
8889 filter_ = PaginatedFilterSerializer .deserialize (body_params ["filter" ], collection ) # type:ignore
8990 projection = ProjectionSerializer .deserialize (body_params ["projection" ])
@@ -97,7 +98,7 @@ async def collection_create(self, request: web.Request):
9798 body_params = json .loads (body_params )
9899 ds = await self .customizer .get_datasource ()
99100
100- collection = ds .get_collection (body_params [ "collectionName " ])
101+ collection = ds .get_collection (request . match_info [ "collection_name " ])
101102 caller = CallerSerializer .deserialize (body_params ["caller" ])
102103 data = [RecordSerializer .deserialize (r , collection ) for r in body_params ["data" ]] # type:ignore
103104
@@ -110,7 +111,7 @@ async def collection_update(self, request: web.Request):
110111 body_params = json .loads (body_params )
111112
112113 ds = await self .customizer .get_datasource ()
113- collection = ds .get_collection (body_params [ "collectionName " ])
114+ collection = ds .get_collection (request . match_info [ "collection_name " ])
114115 caller = CallerSerializer .deserialize (body_params ["caller" ])
115116 filter_ = FilterSerializer .deserialize (body_params ["filter" ], collection ) # type:ignore
116117 patch = RecordSerializer .deserialize (body_params ["patch" ], collection ) # type:ignore
@@ -121,7 +122,7 @@ async def collection_update(self, request: web.Request):
121122 async def collection_delete (self , request : web .Request ):
122123 body_params = await request .json ()
123124 ds = await self .customizer .get_datasource ()
124- collection = ds .get_collection (body_params [ "collectionName " ])
125+ collection = ds .get_collection (request . match_info [ "collection_name " ])
125126 caller = CallerSerializer .deserialize (body_params ["caller" ])
126127 filter_ = FilterSerializer .deserialize (body_params ["filter" ], collection ) # type:ignore
127128
@@ -131,7 +132,7 @@ async def collection_delete(self, request: web.Request):
131132 async def collection_aggregate (self , request : web .Request ):
132133 body_params = await request .json ()
133134 ds = await self .customizer .get_datasource ()
134- collection = ds .get_collection (body_params [ "collectionName " ])
135+ collection = ds .get_collection (request . match_info [ "collection_name " ])
135136 caller = CallerSerializer .deserialize (body_params ["caller" ])
136137 filter_ = FilterSerializer .deserialize (body_params ["filter" ], collection ) # type:ignore
137138 aggregation = AggregationSerializer .deserialize (body_params ["aggregation" ])
@@ -144,7 +145,7 @@ async def collection_get_form(self, request: web.Request):
144145 body_params = json .loads (body_params )
145146
146147 ds = await self .customizer .get_datasource ()
147- collection = ds .get_collection (body_params [ "collectionName " ])
148+ collection = ds .get_collection (request . match_info [ "collection_name " ])
148149
149150 caller = CallerSerializer .deserialize (body_params ["caller" ])
150151 action_name = body_params ["actionName" ]
@@ -163,7 +164,7 @@ async def collection_execute(self, request: web.Request):
163164 body_params = json .loads (body_params )
164165
165166 ds = await self .customizer .get_datasource ()
166- collection = ds .get_collection (body_params [ "collectionName " ])
167+ collection = ds .get_collection (request . match_info [ "collection_name " ])
167168
168169 caller = CallerSerializer .deserialize (body_params ["caller" ])
169170 action_name = body_params ["actionName" ]
@@ -181,7 +182,7 @@ async def collection_render_chart(self, request: web.Request):
181182 body_params = json .loads (body_params )
182183
183184 ds = await self .customizer .get_datasource ()
184- collection = ds .get_collection (body_params [ "collectionName " ])
185+ collection = ds .get_collection (request . match_info [ "collection_name " ])
185186
186187 caller = CallerSerializer .deserialize (body_params ["caller" ])
187188 name = body_params ["name" ]
@@ -220,17 +221,18 @@ async def render_chart(self, request: web.Request):
220221 result = await ds .render_chart (caller , name )
221222 return web .json_response (result )
222223
223- async def native_query (self , request : web .Request ):
224- body_params = await request .text ()
225- body_params = json .loads (body_params )
224+ # TODO: speak about; it's currently not implemented in ruby
225+ # async def native_query(self, request: web.Request):
226+ # body_params = await request.text()
227+ # body_params = json.loads(body_params)
226228
227- ds = await self .customizer .get_datasource ()
228- connection_name = body_params ["connectionName" ]
229- native_query = body_params ["nativeQuery" ]
230- parameters = body_params ["parameters" ]
229+ # ds = await self.customizer.get_datasource()
230+ # connection_name = body_params["connectionName"]
231+ # native_query = body_params["nativeQuery"]
232+ # parameters = body_params["parameters"]
231233
232- result = await ds .execute_native_query (connection_name , native_query , parameters )
233- return web .json_response (result )
234+ # result = await ds.execute_native_query(connection_name, native_query, parameters)
235+ # return web.json_response(result)
234236
235237 def start (self ):
236238 web .run_app (self .app , host = self .listen_addr , port = int (self .listen_port ))
0 commit comments