@@ -16,8 +16,8 @@ def __init__(self, api_key: Optional[str] = None):
1616 if self .api_key :
1717 self ._session .headers .update ({"Authorization" : f"Bearer { self .api_key } " })
1818
19- def get (self , url : str ):
20- return self ._get (f"{ self .url } /{ url .lstrip ('/' )} " )
19+ def get (self , url : str , params : Optional [ dict ] = None ):
20+ return self ._get (f"{ self .url } /{ url .lstrip ('/' )} " , params )
2121
2222 def post (self , url : str , ** kwargs ):
2323 return self ._post (f"{ self .url } /{ url .lstrip ('/' )} " , kwargs )
@@ -28,29 +28,31 @@ def patch(self, url: str, **kwargs):
2828 def delete (self , url : str ):
2929 return self ._delete (f"{ self .url } /{ url .lstrip ('/' )} " )
3030
31- def list_os (self ):
31+ def list_os (self , params : Optional [ dict ] = None ):
3232 url = f"{ self .url } /os"
33- return self ._get (url )["os" ]
33+ return self ._get (url , params )["os" ]
3434
35- def list_plans (self ):
35+ def list_plans (self , params : Optional [ dict ] = None ):
3636 url = f"{ self .url } /plans"
37- return self ._get (url )["plans" ]
37+ return self ._get (url , params )["plans" ]
3838
39- def list_regions (self ):
39+ def list_regions (self , params : Optional [ dict ] = None ):
4040 url = f"{ self .url } /regions"
41- return self ._get (url )["regions" ]
41+ return self ._get (url , params )["regions" ]
4242
43- def list_instances (self ):
43+ def list_instances (self , params : Optional [ dict ] = None ):
4444 url = f"{ self .url } /instances"
45- return self ._get (url )["instances" ]
45+ return self ._get (url , params )["instances" ]
4646
47- def get_instance (self , instance : Union [str , dict ]):
47+ def get_instance (self , instance : Union [str , dict ], params : Optional [ dict ] = None ):
4848 instance_id = self ._get_obj_key (instance )
4949 url = f"{ self .url } /instances/{ instance_id } "
50- return self ._get (url )["instance" ]
50+ return self ._get (url , params )["instance" ]
5151
52- def create_instance (self , region : str , plan : str , ** kwargs ):
53- data = {"region" : region , "plan" : plan }
52+ def create_instance (
53+ self , region : Union [str , dict ], plan : Union [str , dict ], ** kwargs
54+ ):
55+ data = {"region" : self ._get_obj_key (region ), "plan" : self ._get_obj_key (plan )}
5456 data .update (kwargs )
5557 url = f"{ self .url } /instances"
5658 return self ._post (url , data )["instance" ]
@@ -65,14 +67,14 @@ def delete_instance(self, instance: Union[str, dict]):
6567 url = f"{ self .url } /instances/{ instance_id } "
6668 return self ._delete (url )
6769
68- def list_keys (self ):
70+ def list_keys (self , params : Optional [ dict ] = None ):
6971 url = f"{ self .url } /ssh-keys"
70- return self ._get (url )["ssh_keys" ]
72+ return self ._get (url , params )["ssh_keys" ]
7173
72- def get_key (self , key : Union [str , dict ]):
74+ def get_key (self , key : Union [str , dict ], params : Optional [ dict ] = None ):
7375 key_id = self ._get_obj_key (key )
7476 url = f"{ self .url } /ssh-keys/{ key_id } "
75- return self ._get (url )["ssh_key" ]
77+ return self ._get (url , params )["ssh_key" ]
7678
7779 def create_key (self , name : str , key : str , ** kwargs ):
7880 data = {"name" : name , "ssh_key" : key }
@@ -90,14 +92,14 @@ def delete_key(self, key: Union[str, dict]):
9092 url = f"{ self .url } /ssh-keys/{ key_id } "
9193 return self ._delete (url )
9294
93- def list_scripts (self ):
95+ def list_scripts (self , params : Optional [ dict ] = None ):
9496 url = f"{ self .url } /startup-scripts"
95- return self ._get (url )["startup_scripts" ]
97+ return self ._get (url , params )["startup_scripts" ]
9698
97- def get_script (self , script : Union [str , dict ]):
99+ def get_script (self , script : Union [str , dict ], params : Optional [ dict ] = None ):
98100 script_id = self ._get_obj_key (script )
99101 url = f"{ self .url } /startup-scripts/{ script_id } "
100- return self ._get (url )["startup_script" ]
102+ return self ._get (url , params )["startup_script" ]
101103
102104 def create_script (self , name : str , script : str , ** kwargs ):
103105 data = {"name" : name , "script" : script }
@@ -115,10 +117,10 @@ def delete_script(self, script: Union[str, dict]):
115117 url = f"{ self .url } /startup-scripts/{ script_id } "
116118 return self ._delete (url )
117119
118- def list_ipv4 (self , instance : Union [str , dict ]):
120+ def list_ipv4 (self , instance : Union [str , dict ], params : Optional [ dict ] = None ):
119121 instance_id = self ._get_obj_key (instance )
120122 url = f"{ self .url } /instances/{ instance_id } /ipv4"
121- return self ._get (url )["ipv4s" ]
123+ return self ._get (url , params )["ipv4s" ]
122124
123125 def create_ipv4 (self , instance : Union [str , dict ], ** kwargs ):
124126 instance_id = self ._get_obj_key (instance )
@@ -155,8 +157,8 @@ def filter_scripts(scripts: list, name: str) -> dict:
155157 def filter_regions (regions : list , locations : list ) -> list :
156158 return [d for d in regions if d ["id" ] in locations ]
157159
158- def _get (self , url ):
159- r = self ._session .get (url , timeout = 10 )
160+ def _get (self , url , params : Optional [ dict ] = None ):
161+ r = self ._session .get (url , params = params , timeout = 10 )
160162 if not r .ok :
161163 r .raise_for_status ()
162164 return r .json ()
0 commit comments