@@ -243,25 +243,11 @@ class GatewayReleasedResourcePagination(BoundedLimitOffsetPagination):
243243 max_limit = INNER_BOUNDED_LIST_MAX_LIMIT
244244
245245
246- @method_decorator (
247- name = "get" ,
248- decorator = swagger_auto_schema (
249- operation_description = "获取指定网关当前已发布资源" ,
250- query_serializer = serializers .GatewayReleasedResourceListInputSLZ ,
251- responses = {status .HTTP_200_OK : serializers .GatewayReleasedResourceOutputSLZ (many = True )},
252- tags = ["OpenAPI.V2.Inner" ],
253- ),
254- )
255- class GatewayReleasedResourceListApi (generics .ListAPIView ):
246+ class _GatewayReleasedResourceApiMixin :
256247 serializer_class = serializers .GatewayReleasedResourceOutputSLZ
257248 permission_classes = [OpenAPIV2GatewayNamePermission ]
258- pagination_class = GatewayReleasedResourcePagination
259-
260- def list (self , request , gateway_name , * args , ** kwargs ):
261- input_slz = serializers .GatewayReleasedResourceListInputSLZ (data = request .query_params )
262- input_slz .is_valid (raise_exception = True )
263- data = input_slz .validated_data
264249
250+ def get_released_resources (self , request , resource_names = None ):
265251 tenant_id = get_request_tenant_id (request )
266252 if tenant_id :
267253 visible = gateway_filter_by_app_tenant_id (
@@ -270,28 +256,64 @@ def list(self, request, gateway_name, *args, **kwargs):
270256 ).exists ()
271257 if not visible :
272258 raise Http404
273- gateway = request .gateway
274259
275- queryset = get_gateway_released_resources (
276- gateway_id = gateway .id ,
277- resource_names = data . get ( " resource_names" ) ,
260+ return get_gateway_released_resources (
261+ gateway_id = request . gateway .id ,
262+ resource_names = resource_names ,
278263 )
279- page = self .paginate_queryset (queryset )
264+
265+ def serialize_released_resources (self , resources , fields ):
280266 items = [
281267 {
282268 "id" : resource .resource_id ,
283269 "name" : resource .resource_name ,
284270 "description" : (resource .data or {}).get ("description" , "" ),
285271 "description_en" : (resource .data or {}).get ("description_en" ),
286272 }
287- for resource in page
273+ for resource in resources
288274 ]
289- output_slz = self .get_serializer (
290- items ,
291- many = True ,
292- fields = data .get ("fields" ),
293- )
294- return self .get_paginated_response (output_slz .data )
275+ return self .get_serializer (items , many = True , fields = fields ).data
276+
277+
278+ @method_decorator (
279+ name = "get" ,
280+ decorator = swagger_auto_schema (
281+ operation_description = "获取指定网关当前已发布资源" ,
282+ query_serializer = serializers .GatewayReleasedResourceListInputSLZ ,
283+ responses = {status .HTTP_200_OK : serializers .GatewayReleasedResourceOutputSLZ (many = True )},
284+ tags = ["OpenAPI.V2.Inner" ],
285+ ),
286+ )
287+ class GatewayReleasedResourceListApi (_GatewayReleasedResourceApiMixin , generics .ListAPIView ):
288+ pagination_class = GatewayReleasedResourcePagination
289+
290+ def list (self , request , gateway_name , * args , ** kwargs ):
291+ input_slz = serializers .GatewayReleasedResourceListInputSLZ (data = request .query_params )
292+ input_slz .is_valid (raise_exception = True )
293+ data = input_slz .validated_data
294+
295+ queryset = self .get_released_resources (request )
296+ page = self .paginate_queryset (queryset )
297+ return self .get_paginated_response (self .serialize_released_resources (page , data .get ("fields" )))
298+
299+
300+ @method_decorator (
301+ name = "get" ,
302+ decorator = swagger_auto_schema (
303+ operation_description = "按名称查询指定网关当前已发布资源" ,
304+ query_serializer = serializers .GatewayReleasedResourceLookupInputSLZ ,
305+ responses = {status .HTTP_200_OK : serializers .GatewayReleasedResourceOutputSLZ (many = True )},
306+ tags = ["OpenAPI.V2.Inner" ],
307+ ),
308+ )
309+ class GatewayReleasedResourceLookupApi (_GatewayReleasedResourceApiMixin , generics .ListAPIView ):
310+ def list (self , request , gateway_name , * args , ** kwargs ):
311+ input_slz = serializers .GatewayReleasedResourceLookupInputSLZ (data = request .query_params )
312+ input_slz .is_valid (raise_exception = True )
313+ data = input_slz .validated_data
314+
315+ resources = self .get_released_resources (request , resource_names = data ["names" ])
316+ return OKJsonResponse (data = self .serialize_released_resources (resources , data .get ("fields" )))
295317
296318
297319@method_decorator (
0 commit comments