diff options
Diffstat (limited to 'wrappers/python/src/discovery.py')
| -rw-r--r-- | wrappers/python/src/discovery.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/wrappers/python/src/discovery.py b/wrappers/python/src/discovery.py new file mode 100644 index 0000000..80c08cf --- /dev/null +++ b/wrappers/python/src/discovery.py @@ -0,0 +1,43 @@ +from . import lib, cDiscoveryOrganizations +from ctypes import cast, POINTER + + +class DiscoOrganization: + def __init__(self, display_name, org_id, secure_internet_home, keyword_list): + self.display_name = display_name + self.org_id = org_id + self.secure_internet_home = secure_internet_home + self.keyword_list = keyword_list + + +class DiscoOrganizations: + def __init__(self, version, organizations): + self.version = version + self.organizations = organizations + + +def get_disco_organization(ptr): + if not ptr: + return None + + current_organization = ptr.contents + display_name = current_organization.display_name.decode("utf-8") + org_id = current_organization.org_id.decode("utf-8") + secure_internet_home = current_organization.secure_internet_home.decode("utf-8") + keyword_list = current_organization.keyword_list.decode("utf-8") + return DiscoOrganization(display_name, org_id, secure_internet_home, keyword_list) + + +def get_disco_organizations(ptr): + if ptr: + orgs = cast(ptr, POINTER(cDiscoveryOrganizations)).contents + organizations = [] + if orgs.organizations: + for i in range(orgs.total_organizations): + current = get_disco_organization(orgs.organizations[i]) + if current is None: + continue + organizations.append(current) + lib.FreeDiscoOrganizations(ptr) + return DiscoOrganizations(orgs.version, organizations) + return None |
