summaryrefslogtreecommitdiff
path: root/wrappers/python/src/discovery.py
diff options
context:
space:
mode:
Diffstat (limited to 'wrappers/python/src/discovery.py')
-rw-r--r--wrappers/python/src/discovery.py43
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