22
33from ...file_utils import open_binary_file
44from ..extension_create_utils import normalize_extension_create_input
5- from ..extension_utils import parse_extension_list_response_data
6- from ..response_utils import parse_response_model
5+ from ..extension_operation_metadata import EXTENSION_OPERATION_METADATA
6+ from ..extension_request_utils import (
7+ create_extension_resource_async ,
8+ list_extension_resources_async ,
9+ )
10+ from ..extension_route_constants import (
11+ EXTENSION_CREATE_ROUTE_PATH ,
12+ EXTENSION_LIST_ROUTE_PATH ,
13+ )
714from hyperbrowser .models .extension import CreateExtensionParams , ExtensionResponse
815
916
1017class ExtensionManager :
18+ _OPERATION_METADATA = EXTENSION_OPERATION_METADATA
19+ _CREATE_ROUTE_PATH = EXTENSION_CREATE_ROUTE_PATH
20+ _LIST_ROUTE_PATH = EXTENSION_LIST_ROUTE_PATH
21+
1122 def __init__ (self , client ):
1223 self ._client = client
1324
@@ -18,19 +29,17 @@ async def create(self, params: CreateExtensionParams) -> ExtensionResponse:
1829 file_path ,
1930 open_error_message = f"Failed to open extension file at path: { file_path } " ,
2031 ) as extension_file :
21- response = await self ._client .transport .post (
22- self ._client ._build_url ("/extensions/add" ),
23- data = payload ,
24- files = {"file" : extension_file },
32+ return await create_extension_resource_async (
33+ client = self ._client ,
34+ route_path = self ._CREATE_ROUTE_PATH ,
35+ payload = payload ,
36+ file_stream = extension_file ,
37+ model = ExtensionResponse ,
38+ operation_name = self ._OPERATION_METADATA .create_operation_name ,
2539 )
26- return parse_response_model (
27- response .data ,
28- model = ExtensionResponse ,
29- operation_name = "create extension" ,
30- )
3140
3241 async def list (self ) -> List [ExtensionResponse ]:
33- response = await self ._client .transport .get (
34- self ._client ._build_url ("/extensions/list" ),
42+ return await list_extension_resources_async (
43+ client = self ._client ,
44+ route_path = self ._LIST_ROUTE_PATH ,
3545 )
36- return parse_extension_list_response_data (response .data )
0 commit comments