diff --git a/README.md b/README.md index b7078c8..c6380c5 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,13 @@ a.node(name="dal1") print(a) """ -{'city': 'Dallas, TX, US', 'flag': '🇺🇸', 'fqdn': 'router.dal1.routedbits.com', 'hostname': 'router.dal1', 'name': 'dal1', 'tunnel_ipv4_address': '172.20.19.68', 'tunnel_ipv6_address': {'link_local': 'fe80::207', 'ula': 'fdb1:e72a:343d::5'}, 'wireguard_public_key': '8clbJPxK5ylOhFDNGdn/CL5zRWQdf7rXbLeF7j8czFI='} +namespace(city='Dallas, TX, US', region='US Central', flag='🇺🇸', fqdn='router.dal1.routedbits.com', hostname='router.dal1', latitude='32.818072', longitude='-97.061721', tunnel_ipv4_address='172.20.19.68', tunnel_ipv6_address={'link_local': 'fe80::207', 'ula': 'fdb1:e72a:343d::5'}, type='dual-stack', wireguard_public_key='8clbJPxK5ylOhFDNGdn/CL5zRWQdf7rXbLeF7j8czFI=', name='dal1') +""" + +print(a.fqdn) + +""" +'router.dal1.routedbits.com' """ ``` diff --git a/pyproject.toml b/pyproject.toml index 60b2320..42d5779 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "routedbits" description = "RoutedBits Python Library" -version = "1.0.0" +version = "2.0.0" authors = [ { name = "RoutedBits", email = "noc@routedbits.com" } ] diff --git a/routedbits/routedbits.py b/routedbits/routedbits.py index a69320e..e39f25e 100644 --- a/routedbits/routedbits.py +++ b/routedbits/routedbits.py @@ -3,12 +3,13 @@ # from requests import Session +from types import SimpleNamespace from routedbits.exceptions import NotFound, TooManyArguments class RoutedBits(object): - BASE = "https://dn42.routedbits.com" + BASE = "https://dn42.routedbits.io/api" def __init__(self): self._session = Session() @@ -21,31 +22,28 @@ def _request(self, method, path, params=None, data=None): resp.raise_for_status() return resp - def nodes(self, minimal=False, sort_by="city"): - path = "/nodes.json" - resp = self._request("GET", path).json()["regions"] + def nodes(self, sort_by="city"): + path = "/routers.json" + nodes = [] - nodes = resp - if minimal: - nodes = [] - for region in resp: - nodes.extend(region["sites"]) - nodes = sorted(nodes, key=lambda node: node[sort_by]) + for name, router in self._request("GET", path).json().items(): + router["name"] = name + nodes.append(SimpleNamespace(**router)) - return nodes + return sorted(nodes, key=lambda node: node.__dict__[sort_by]) def node(self, hostname=None, name=None): if hostname and name: raise TooManyArguments() - nodes = self.nodes(minimal=True) + nodes = self.nodes() for node in nodes: if hostname: - if node["hostname"] == hostname: + if node.hostname == hostname: return node if name: - if node["name"] == name: + if node.name == name: return node raise NotFound()