99from httpx import Response as ClientResponse
1010
1111from .components import Callback , HttpComponent , MetablockResponseError
12- from .extensions import Extension , Extensions , Plugin , Plugins
13- from .orgs import Org , Orgs
14- from .spaces import Block , Blocks , Domains , Space , Spaces
12+ from .extensions import Extensions
13+ from .orgs import Orgs
14+ from .spaces import Blocks , Domains , Spaces
1515from .user import User
1616
1717DEFAULT_USER_AGENT = f"Python/{ '.' .join (map (str , sys .version_info [:2 ]))} metablock"
@@ -42,12 +42,11 @@ def __init__(
4242 "user-agent" : user_agent ,
4343 "accept" : "application/json" ,
4444 }
45- self .orgs : Orgs = Orgs (self , Org )
46- self .spaces : Spaces = Spaces (self , Space )
47- self .blocks : Blocks = Blocks (self , Block )
48- self .plugins : Plugins = Plugins (self , Plugin )
49- self .extensions : Extensions = Extensions (self , Extension )
50- self .domains = Domains (self )
45+ self .orgs : Orgs = Orgs (root = self , root_path = "orgs" )
46+ self .spaces : Spaces = Spaces (root = self , root_path = "spaces" )
47+ self .blocks : Blocks = Blocks (root = self , root_path = "blocks" )
48+ self .extensions : Extensions = Extensions (root = self , root_path = "extensions" )
49+ self .domains = Domains (root = self , root_path = "domains" )
5150
5251 @property
5352 def cli (self ) -> Self :
@@ -65,25 +64,31 @@ async def __aexit__(self, exc_type: type, exc_val: Any, exc_tb: Any) -> None:
6564 await self .close ()
6665
6766 async def spec (self ) -> dict :
67+ """Get the OpenAPI specification of the API"""
6868 return await self .request (f"{ self .url } /openapi.json" )
6969
7070 async def get (self , url : str , ** kwargs : Any ) -> Any :
71+ """Make a GET request to the API"""
7172 kwargs ["method" ] = "GET"
7273 return await self .request (url , ** kwargs )
7374
7475 async def patch (self , url : str , ** kwargs : Any ) -> Any :
76+ """Make a PATCH request to the API"""
7577 kwargs ["method" ] = "PATCH"
7678 return await self .request (url , ** kwargs )
7779
7880 async def post (self , url : str , ** kwargs : Any ) -> Any :
81+ """Make a POST request to the API"""
7982 kwargs ["method" ] = "POST"
8083 return await self .request (url , ** kwargs )
8184
8285 async def put (self , url : str , ** kwargs : Any ) -> Any :
86+ """Make a PUT request to the API"""
8387 kwargs ["method" ] = "PUT"
8488 return await self .request (url , ** kwargs )
8589
8690 async def delete (self , url : str , ** kwargs : Any ) -> Any :
91+ """Make a DELETE request to the API"""
8792 kwargs ["method" ] = "DELETE"
8893 return await self .request (url , ** kwargs )
8994
@@ -96,6 +101,7 @@ async def request(
96101 wrap : Any = None ,
97102 ** kw : Any ,
98103 ) -> Any :
104+ """Make a request to the API with the given method, url, headers and body."""
99105 if not self .session :
100106 self .session = AsyncClient ()
101107 method = method or "GET"
@@ -122,22 +128,19 @@ async def handle_response(self, response: ClientResponse, wrap: Any = None) -> A
122128 data = response .json ()
123129 return wrap (data ) if wrap else data
124130
125- async def get_user (self , ** kw : Any ) -> User :
126- kw . setdefault ( "wrap " , self . _user )
127- return await self . get ( f" { self . url } / user" , ** kw )
131+ async def get_user (self , ** kwargs : Any ) -> User :
132+ data = await self . get ( f" { self . url } /user " , ** kwargs )
133+ return User ( root = self , root_path = " user" , ** data )
128134
129- async def update_user (self , ** kw : Any ) -> User :
130- kw . setdefault ( "wrap " , self . _user )
131- return await self . patch ( f" { self . url } / user" , ** kw )
135+ async def update_user (self , ** params : Any ) -> User :
136+ data = await self . patch ( f" { self . url } /user " , ** params )
137+ return User ( root = self , root_path = " user" , ** data )
132138
133- async def delete_user (self , ** kw : Any ) -> None :
134- return await self .delete (f"{ self .url } /user" , ** kw )
139+ async def delete_user (self ) -> None :
140+ return await self .delete (f"{ self .url } /user" )
135141
136142 def get_default_headers (self ) -> dict [str , str ]:
137143 headers = self .default_headers .copy ()
138144 if self .auth_key :
139145 headers [self .auth_key_name ] = self .auth_key
140146 return headers
141-
142- def _user (self , data : dict ) -> User :
143- return User (self , data )
0 commit comments