from core.Constants import Constants from core.models.BaseProfile import BaseProfile from core.models.session.ApplicationVersion import ApplicationVersion from core.models.session.ProxyConfiguration import ProxyConfiguration from core.models.session.SessionConnection import SessionConnection from dataclasses import dataclass from json import JSONDecodeError from typing import Optional import json import os @dataclass class SessionProfile(BaseProfile): resolution: str application_version: Optional[ApplicationVersion] connection: Optional[SessionConnection] def attach_proxy_configuration(self, proxy_configuration): config_file_contents = proxy_configuration.to_json(indent=4) + '\n' os.makedirs(Constants.SP_CONFIG_HOME, exist_ok=True) text_io_wrapper = open(self.get_proxy_configuration_path(), 'w') text_io_wrapper.write(config_file_contents) def get_proxy_configuration_path(self): return self.get_config_path() + '/proxy.json' def get_proxy_configuration(self): try: config_file_contents = open(self.get_proxy_configuration_path(), 'r').read() except FileNotFoundError: return None try: proxy_configuration = json.loads(config_file_contents) except JSONDecodeError: return None proxy_configuration = ProxyConfiguration.from_dict(proxy_configuration) return proxy_configuration def has_proxy_configuration(self): return os.path.exists(self.get_config_path() + '/proxy.json')