diff options
-rwxr-xr-x | ejabberdrpc.py | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/ejabberdrpc.py b/ejabberdrpc.py index e89c14a..7de19e6 100755 --- a/ejabberdrpc.py +++ b/ejabberdrpc.py @@ -20,7 +20,10 @@ class EjabberdMetrics: self.url = url self._cmd = self._rpc else: + import requests + self._url = url + self.session = requests.Session() self._cmd = self._rest @property @@ -43,15 +46,19 @@ class EjabberdMetrics: return None - def _rest(self, command: str, data): - import requests + def _rest(self, command: str, data) -> dict: + # add authentication header to the session obj + if self.session.auth is None: + self.session.auth = self._auth + + # post + r = self.session.post('/'.join([self._url, command]), json=data) - with requests.Session() as s: - r = s.post(f'{self._url}/{command}', auth=self._auth, json=data) + # proceed if response is ok + if r.ok: + return r.json() - if r.status_code == 200: - return r.json() - return{} + return {} def _rpc(self, command: str, data): from xmlrpc import client |