"""AGNT Search client. Supply explicit idempotency keys for recoverable calls."""
import json,uuid,urllib.request,urllib.error
class SearchClient:
    def __init__(self,key,origin='https://search.agnt.gg'):
        self.key,self.origin=key,origin
    def request(self,path,body=None,idempotency_key=None):
        key=idempotency_key or str(uuid.uuid4())
        request=urllib.request.Request(self.origin+'/search/v1'+path,data=json.dumps(body).encode() if body is not None else None,headers={'Authorization':'Bearer '+self.key,'Content-Type':'application/json','Idempotency-Key':key})
        try:
            with urllib.request.urlopen(request,timeout=210) as response:return json.load(response)
        except urllib.error.HTTPError as error:
            result=json.load(error)
            raise RuntimeError({'status':error.code,'result':result,'idempotencyKey':key}) from None
    def search(self,query,idempotency_key=None,**options):
        return self.request('/search',dict(query=query,**options),idempotency_key)
    def scrape(self,url,idempotency_key=None,**options):
        return self.request('/scrape',dict(url=url,**options),idempotency_key)
