import 'accountData.dart'; enum EndpointMode { live, stage, } class EndpointOptions { Endpoint live; Endpoint? staged; EndpointOptions({required this.live, required this.staged}); Endpoint get(EndpointMode mode) { if(staged == null || mode == EndpointMode.live) return live; return staged!; } } class Endpoint { String domain; String path; Endpoint({required this.domain, this.path = ''}); String full() { return domain + path; } } class EndpointData { static final EndpointData _instance = EndpointData._construct(); factory EndpointData() { return _instance; } EndpointData._construct(); EndpointMode getEndpointMode() { late String existingName; existingName = AccountData().getUsername(); return existingName.startsWith('google') ? EndpointMode.stage : EndpointMode.live; } Endpoint webuntis() { return EndpointOptions( live: Endpoint( domain: 'peleus.webuntis.com', ), staged: Endpoint( domain: 'mhsl.eu', path: '/marianum/marianummobile/webuntis/public/index.php/api' ), ).get(getEndpointMode()); } Endpoint nextcloud() { return EndpointOptions( live: Endpoint( domain: 'cloud.marianum-fulda.de', ), staged: Endpoint( domain: 'mhsl.eu', path: '/marianum/marianummobile/cloud', ) ).get(getEndpointMode()); } }