diff --git a/app.py b/app.py index 64370f8..249caf8 100644 --- a/app.py +++ b/app.py @@ -59,12 +59,26 @@ class UnifiAPI: def get_all_devices(self): url = f"{self.base_url}/v1/sites/{self.site_id}/devices" response = self.session.get(url, headers=self.headers) + response.raise_for_status() return response.json()['data'] def get_device_details(self, device_id): url = f"{self.base_url}/v1/sites/{self.site_id}/devices/{device_id}" response = self.session.get(url, headers=self.headers) - return response.json() + response.raise_for_status() + data = response.json() + return { + 'state': data['state'], + 'firmware': { + 'version': data['firmwareVersion'], + 'updatable': data.get('firmwareUpdatable', False) + }, + 'network': { + 'ip': data['ipAddress'], + 'mac': data['macAddress'] + }, + 'interfaces': self._parse_interfaces(data.get('interfaces', {})) + } def get_device_diagnostics(self, device): details = self.get_device_details(device['ip']) @@ -73,24 +87,15 @@ class UnifiAPI: diagnostics = { 'state': details['state'], - 'firmware': { - 'version': details['firmwareVersion'], - 'updatable': details.get('firmwareUpdatable', False) - }, - 'network': { - 'ip': details['ipAddress'], - 'mac': details['macAddress'] - }, + 'firmware': details['firmware'], + 'network': details['network'], 'uptime': { - 'adopted_at': details['adoptedAt'], - 'provisioned_at': details['provisionedAt'] + 'adopted_at': details.get('adoptedAt'), + 'provisioned_at': details.get('provisionedAt') }, - 'interfaces': {} + 'interfaces': details['interfaces'] } - if 'interfaces' in details: - diagnostics['interfaces'] = self._parse_interfaces(details['interfaces']) - return diagnostics def _parse_interfaces(self, interfaces): @@ -117,7 +122,6 @@ class UnifiAPI: } return result - # Monitoring functions def run_diagnostics(device): try: