import json, urllib.parse, urllib.request, urllib.error
class LeasvioClient:
    def __init__(self,key,base="https://api.leasv.io/v1"): self.key,self.base=key,base.rstrip("/")
    def request(self,path,method="GET",body=None,headers=None):
        h={"Authorization":f"Bearer {self.key}","Content-Type":"application/json",**(headers or {})}
        req=urllib.request.Request(self.base+path,data=None if body is None else json.dumps(body).encode(),headers=h,method=method)
        try:
            with urllib.request.urlopen(req) as response:return json.load(response)
        except urllib.error.HTTPError as error: raise RuntimeError(json.load(error)) from error
    def list(self,resource,**params): return self.request("/"+resource+"?"+urllib.parse.urlencode(params))
    def get(self,resource,id): return self.request(f"/{resource}/{id}")
