diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-09-26 17:36:30 +0200 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-09-27 10:53:37 +0200 |
| commit | 09ec69dfdef409868f1cb39cb8cc4b33c8690c9f (patch) | |
| tree | 109925dbbee4a9120211897582760f96010ae8f2 /wrappers/python/eduvpn_common/main.py | |
| parent | 0a19c2dedcaaa177b420eac99149515d84508204 (diff) | |
Python: Reformat and move most loading out of __init__
Diffstat (limited to 'wrappers/python/eduvpn_common/main.py')
| -rw-r--r-- | wrappers/python/eduvpn_common/main.py | 73 |
1 files changed, 42 insertions, 31 deletions
diff --git a/wrappers/python/eduvpn_common/main.py b/wrappers/python/eduvpn_common/main.py index 3875ad9..1b18fb0 100644 --- a/wrappers/python/eduvpn_common/main.py +++ b/wrappers/python/eduvpn_common/main.py @@ -1,13 +1,16 @@ -from eduvpn_common import lib, VPNStateChange, encode_args, decode_res, get_data_error from typing import Optional, Tuple import threading from eduvpn_common.discovery import get_disco_organizations, get_disco_servers from eduvpn_common.event import EventHandler -from eduvpn_common.state import State, StateType +from eduvpn_common.loader import initialize_functions, load_lib +from eduvpn_common.types import VPNStateChange, encode_args, decode_res, get_data_error from eduvpn_common.server import get_servers +from eduvpn_common.state import State, StateType eduvpn_objects = {} +VERSION = "0.1.0" + def add_as_global_object(eduvpn) -> bool: global eduvpn_objects @@ -32,10 +35,15 @@ def state_callback(name, old_state, new_state, data): class EduVPN(object): def __init__(self, name: str, config_directory: str): - self.event_handler = EventHandler() self.name = name self.config_directory = config_directory + # Load the library + self.lib = load_lib(VERSION) + initialize_functions(self.lib) + + self.event_handler = EventHandler(self.lib) + # Callbacks that need to wait for specific events # The ask profile callback needs to wait for the UI thread to select a profile @@ -57,22 +65,22 @@ class EduVPN(object): # The functions all have at least one arg type which is the name of the client args_gen = encode_args(list(args), func.argtypes[1:]) res = func(self.name.encode("utf-8"), *(args_gen)) - return decode_res(func.restype)(res) + return decode_res(func.restype)(self.lib, res) def go_function_custom_decode(self, func, decode_func, *args): # The functions all have at least one arg type which is the name of the client args_gen = encode_args(list(args), func.argtypes[1:]) res = func(self.name.encode("utf-8"), *(args_gen)) - return decode_func(res) + return decode_func(self.lib, res) def cancel_oauth(self) -> None: - cancel_oauth_err = self.go_function(lib.CancelOAuth) + cancel_oauth_err = self.go_function(self.lib.CancelOAuth) if cancel_oauth_err: raise cancel_oauth_err def deregister(self) -> None: - self.go_function(lib.Deregister) + self.go_function(self.lib.Deregister) remove_as_global_object(self) def register(self, debug: bool = False) -> None: @@ -80,7 +88,7 @@ class EduVPN(object): raise Exception("Already registered") register_err = self.go_function( - lib.Register, self.config_directory, state_callback, debug + self.lib.Register, self.config_directory, state_callback, debug ) if register_err: @@ -88,38 +96,40 @@ class EduVPN(object): def get_disco_servers(self) -> str: servers, servers_err = self.go_function_custom_decode( - lib.GetDiscoServers, decode_func=lambda x: get_data_error(x, get_disco_servers) + self.lib.GetDiscoServers, + decode_func=lambda lib, x: get_data_error(lib, x, get_disco_servers), ) if servers_err: - raise servers_err + raise servers_err return servers def get_disco_organizations(self) -> str: organizations, organizations_err = self.go_function_custom_decode( - lib.GetDiscoOrganizations, decode_func=lambda x: get_data_error(x, get_disco_organizations) + self.lib.GetDiscoOrganizations, + decode_func=lambda lib, x: get_data_error(lib, x, get_disco_organizations), ) if organizations_err: - raise organizations_err + raise organizations_err return organizations def remove_secure_internet(self): - remove_err = self.go_function(lib.RemoveSecureInternet) + remove_err = self.go_function(self.lib.RemoveSecureInternet) if remove_err: raise remove_err def remove_institute_access(self, url: str): - remove_err = self.go_function(lib.RemoveInstituteAccess, url) + remove_err = self.go_function(self.lib.RemoveInstituteAccess, url) if remove_err: raise remove_err def remove_custom_server(self, url: str): - remove_err = self.go_function(lib.RemoveCustomServer, url) + remove_err = self.go_function(self.lib.RemoveCustomServer, url) if remove_err: raise remove_err @@ -143,49 +153,49 @@ class EduVPN(object): def get_config_custom_server( self, url: str, force_tcp: bool = False ) -> Tuple[str, str]: - return self.get_config(url, lib.GetConfigCustomServer, force_tcp) + return self.get_config(url, self.lib.GetConfigCustomServer, force_tcp) def get_config_institute_access( self, url: str, force_tcp: bool = False ) -> Tuple[str, str]: - return self.get_config(url, lib.GetConfigInstituteAccess, force_tcp) + return self.get_config(url, self.lib.GetConfigInstituteAccess, force_tcp) def get_config_secure_internet( self, url: str, force_tcp: bool = False ) -> Tuple[str, str]: self.location_event = threading.Event() - return self.get_config(url, lib.GetConfigSecureInternet, force_tcp) + return self.get_config(url, self.lib.GetConfigSecureInternet, force_tcp) def go_back(self) -> None: # Ignore the error - self.go_function(lib.GoBack) + self.go_function(self.lib.GoBack) def set_connected(self) -> None: - connect_err = self.go_function(lib.SetConnected) + connect_err = self.go_function(self.lib.SetConnected) if connect_err: raise connect_err def set_disconnecting(self) -> None: - disconnecting_err = self.go_function(lib.SetDisconnecting) + disconnecting_err = self.go_function(self.lib.SetDisconnecting) if disconnecting_err: raise disconnecting_err def set_connecting(self) -> None: - connecting_err = self.go_function(lib.SetConnecting) + connecting_err = self.go_function(self.lib.SetConnecting) if connecting_err: raise connecting_err def set_disconnected(self, cleanup=True) -> None: - disconnect_err = self.go_function(lib.SetDisconnected, cleanup) + disconnect_err = self.go_function(self.lib.SetDisconnected, cleanup) if disconnect_err: raise disconnect_err def set_search_server(self) -> None: - search_err = self.go_function(lib.SetSearchServer) + search_err = self.go_function(self.lib.SetSearchServer) if search_err: raise search_err @@ -205,7 +215,7 @@ class EduVPN(object): def set_profile(self, profile_id: str) -> None: # Set the profile id - profile_err = self.go_function(lib.SetProfileID, profile_id) + profile_err = self.go_function(self.lib.SetProfileID, profile_id) # If there is a profile event, set it so that the wait callback finishes # And so that the Go code can move to the next state @@ -218,14 +228,14 @@ class EduVPN(object): def change_secure_location(self) -> None: # Set the location by country code self.location_event = threading.Event() - location_err = self.go_function(lib.ChangeSecureLocation) + location_err = self.go_function(self.lib.ChangeSecureLocation) if location_err: raise location_err def set_secure_location(self, country_code: str) -> None: # Set the location by country code - location_err = self.go_function(lib.SetSecureLocation, country_code) + location_err = self.go_function(self.lib.SetSecureLocation, country_code) # If there is a location event, set it so that the wait callback finishes # And so that the Go code can move to the next state @@ -236,18 +246,19 @@ class EduVPN(object): raise location_err def renew_session(self) -> None: - renew_err = self.go_function(lib.RenewSession) + renew_err = self.go_function(self.lib.RenewSession) if renew_err: raise renew_err def should_renew_button(self) -> bool: - return self.go_function(lib.ShouldRenewButton) + return self.go_function(self.lib.ShouldRenewButton) def in_fsm_state(self, state_id: State) -> bool: - return self.go_function(lib.InFSMState, state_id) + return self.go_function(self.lib.InFSMState, state_id) def get_saved_servers(self) -> str: return self.go_function_custom_decode( - lib.GetSavedServers, decode_func=lambda x: get_data_error(x, get_servers) + self.lib.GetSavedServers, + decode_func=lambda lib, x: get_data_error(lib, x, get_servers), ) |
