Update and refactor existing codebase
This commit is contained in:
		
							parent
							
								
									41988fc491
								
							
						
					
					
						commit
						06769eac62
					
				
					 5 changed files with 22 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -29,7 +29,7 @@ class ApplicationVersionController:
 | 
			
		|||
        if not application_version.is_supported():
 | 
			
		||||
            raise UnsupportedApplicationVersionError('The application version in question is not supported.')
 | 
			
		||||
 | 
			
		||||
        if reinstall is True:
 | 
			
		||||
        if reinstall:
 | 
			
		||||
            ApplicationVersionController.uninstall(application_version)
 | 
			
		||||
 | 
			
		||||
        if application_version.is_installed():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ from core.controllers.ClientVersionController import ClientVersionController
 | 
			
		|||
from core.controllers.ConfigurationController import ConfigurationController
 | 
			
		||||
from core.controllers.LocationController import LocationController
 | 
			
		||||
from core.controllers.SubscriptionPlanController import SubscriptionPlanController
 | 
			
		||||
from core.observers import ClientObserver
 | 
			
		||||
from core.observers.ClientObserver import ClientObserver
 | 
			
		||||
from core.observers.ConnectionObserver import ConnectionObserver
 | 
			
		||||
from typing import Optional
 | 
			
		||||
import os
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
from collections.abc import Callable
 | 
			
		||||
from core.Constants import Constants
 | 
			
		||||
from core.Errors import InvalidSubscriptionError, MissingSubscriptionError, ConnectionUnprotectedError, ConnectionTerminationError, CommandNotFoundError
 | 
			
		||||
from core.controllers.ConfigurationController import ConfigurationController
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +11,7 @@ from core.models.system.SystemState import SystemState
 | 
			
		|||
from core.observers import ConnectionObserver
 | 
			
		||||
from core.services.WebServiceApiService import WebServiceApiService
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
from typing import Union, Optional
 | 
			
		||||
from typing import Union, Optional, Any
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import requests
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +25,7 @@ import time
 | 
			
		|||
class ConnectionController:
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def with_preferred_connection(*args, task: callable, connection_observer: Optional[ConnectionObserver] = None, **kwargs):
 | 
			
		||||
    def with_preferred_connection(*args, task: Callable[..., Any], connection_observer: Optional[ConnectionObserver] = None, **kwargs):
 | 
			
		||||
 | 
			
		||||
        connection = ConfigurationController.get_connection()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +35,9 @@ class ConnectionController:
 | 
			
		|||
        elif connection == 'tor':
 | 
			
		||||
            return ConnectionController.__with_tor_connection(*args, task=task, connection_observer=connection_observer, **kwargs)
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def establish_connection(profile: Union[SessionProfile, SystemProfile], force: bool = False, connection_observer: Optional[ConnectionObserver] = None):
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -110,6 +114,8 @@ class ConnectionController:
 | 
			
		|||
                else:
 | 
			
		||||
                    raise ConnectionError('The connection could not be established.')
 | 
			
		||||
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def establish_session_connection(profile: SessionProfile, force: Optional[bool] = False, connection_observer: Optional[ConnectionObserver] = None):
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -360,7 +366,7 @@ class ConnectionController:
 | 
			
		|||
            network_interface_is_activated = ConnectionController.system_uses_wireguard_interface()
 | 
			
		||||
            attempt += 1
 | 
			
		||||
 | 
			
		||||
        if network_interface_is_activated is False:
 | 
			
		||||
        if not network_interface_is_activated:
 | 
			
		||||
            raise ConnectionError('The network interface could not be activated.')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
| 
						 | 
				
			
			@ -375,7 +381,7 @@ class ConnectionController:
 | 
			
		|||
        return bool(re.search('dev wg', str(process_output)))
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def __with_tor_connection(*args, task: callable, connection_observer: Optional[ConnectionObserver] = None, **kwargs):
 | 
			
		||||
    def __with_tor_connection(*args, task: Callable[..., Any], connection_observer: Optional[ConnectionObserver] = None, **kwargs):
 | 
			
		||||
 | 
			
		||||
        session_directory = tempfile.mkdtemp(prefix='hv-')
 | 
			
		||||
        port_number = ConnectionController.get_random_available_port_number()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
from core.models.invoice import PaymentMethod
 | 
			
		||||
from core.models.invoice.PaymentMethod import PaymentMethod
 | 
			
		||||
from dataclasses import dataclass
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,6 +86,9 @@ class WebServiceApiService:
 | 
			
		|||
        if response.status_code == requests.codes.created:
 | 
			
		||||
            return Subscription(response.headers['X-Billing-Code'])
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_subscription(billing_code: str, proxies: Optional[dict] = None):
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +103,9 @@ class WebServiceApiService:
 | 
			
		|||
            subscription = response.json()['data']
 | 
			
		||||
            return Subscription(billing_code, Subscription.from_iso_format(subscription['expires_at']))
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_invoice(billing_code: str, proxies: Optional[dict] = None):
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +127,9 @@ class WebServiceApiService:
 | 
			
		|||
 | 
			
		||||
            return Invoice(billing_code, invoice['status'], invoice['expires_at'], tuple[PaymentMethod](payment_methods))
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_proxy_configuration(billing_code: str, proxies: Optional[dict] = None):
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue