private void Initialize() { CustomXamlResourceLoader.Current = new LocalizingResourceLoader(); LocalizationHelper.Initialize(); DataViewModelOptions.AddNetworkExceptionType( typeof( WebException ) ); DataViewModelOptions.AddNetworkExceptionType( typeof( OperationCanceledException ) ); // ThinMVVM types Container.Bind<ISettingsStorage, WindowsRuntimeSettingsStorage>(); Container.Bind<IDataCache, WindowsRuntimeDataCache>(); _navigationService = Container.Bind<IWindowsRuntimeNavigationService, WindowsRuntimeNavigationService>(); // Basic types _pluginLoader = Container.Bind<IPluginLoader, PluginLoader>(); _settings = Container.Bind<IMainSettings, MainSettings>(); Container.Bind<IHttpClient, HttpClient>(); Container.Bind<IHttpHeaders, HttpHeaders>(); Container.Bind<IBrowserService, BrowserService>(); Container.Bind<IEmailService, EmailService>(); Container.Bind<IPhoneService, PhoneService>(); Container.Bind<ILocationService, LocationService>(); Container.Bind<ITileService, TileService>(); Container.Bind<IDeviceIdentifier, DeviceIdentifier>(); Container.Bind<IAppRatingService, AppRatingService>(); Container.Bind<ICredentialsStorage, CredentialsStorage>(); // Logger Container.Bind<Logger, GoogleAnalyticsLogger>().Start(); // Types dependent on one of the above types _serverAccess = Container.Bind<IServerAccess, ServerAccess>(); _protocolHandler = new ProtocolHandler( _pluginLoader, _navigationService ); // Views from Main _navigationService.Bind<AboutViewModel, AboutView>(); _navigationService.Bind<MainViewModel, MainView>(); _navigationService.Bind<SettingsViewModel, SettingsView>(); // Register pocketcampus:// URIs to avoid going to the system and back when they're used inside of the app LauncherEx.RegisterProtocol( ProtocolHandler.PocketCampusProtocol, _protocolHandler.NavigateToCustomUri ); // Initialize plugins, both their common part and their WinRT part foreach ( var plugin in _pluginLoader.GetPlugins().Cast<IWindowsRuntimePlugin>() ) { plugin.Initialize( (INavigationService) _navigationService ); plugin.Initialize( _navigationService ); } // Handle the back button, since Windows Phone doesn't do it for us any more (unlike WP8 "Silverlight") HardwareButtons.BackPressed += ( _, e ) => { e.Handled = true; _navigationService.NavigateBack(); }; }
/// <summary> /// Creates a new MainViewModel. /// </summary> public MainViewModel(INavigationService navigationService, IServerAccess serverAccess, IPluginLoader pluginLoader, IMainSettings settings, ITileService tileCreator, ViewPluginRequest request) { _navigationService = navigationService; _pluginLoader = pluginLoader; _serverAccess = serverAccess; _settings = settings; _tileCreator = tileCreator; _request = request; }
/// <summary> /// Creates a new AuthenticationViewModel. /// </summary> public AuthenticationViewModel(IAuthenticationService authenticationService, IAuthenticator authenticator, IServerAccess serverAccess, INavigationService navigationService, IServerSettings settings, ICredentialsStorage credentials, AuthenticationRequest request) { _authenticationService = authenticationService; _authenticator = authenticator; _serverAccess = serverAccess; _navigationService = navigationService; _settings = settings; _credentials = credentials; _request = request; SaveCredentials = true; }
public TransportService(IServerAccess access) : base(access.CreateCommunication("transport")) { }
public SatelliteService(IServerAccess access) : base(access.CreateCommunication("satellite")) { }
public int Process(SyncSettings settings) { int nbUploaded = 0; _currentAction = "Starting..."; IServerAccess source = null; IServerAccess destinationClient = null; string currentFile = null; string originalFile = null; try { var result = settings.Validate(); if (result.Any()) { foreach (var error in result) { _logger.Error(error.ErrorMessage); } return(0); } SetCurrentAction("Connecting to Source " + settings.sourceFTP.address); source = ServerAccess.CreateAccessTo(settings.sourceFTP); List <string> sourceList = source.GetFileList(settings.changeFileNamePrepend); _logger.Info($"{sourceList.Count} files found to transfer"); if (sourceList.Count == 0) { return(0); } if (Directory.Exists(_pathTemp)) { Directory.CreateDirectory(_pathTemp); } string prepend = settings.changeFileNamePrepend; foreach (string sourceFile in sourceList) { originalFile = sourceFile; currentFile = sourceFile; if (!string.IsNullOrWhiteSpace(prepend)) { currentFile = prepend + currentFile; SetCurrentAction($"Renaming {originalFile} => {currentFile}"); source.RenameFile(originalFile, currentFile); } string localFile = Path.Combine(_pathTemp, currentFile); SetCurrentAction("Downloading " + currentFile); source.DownloadFile(currentFile, localFile); source.Disconnect(); source = null; SetCurrentAction("Uploading " + localFile); destinationClient = ServerAccess.CreateAccessTo(settings.destinationFTP); if (destinationClient.UploadFile(localFile, currentFile, settings.destinationFTP, settings.changeFileNamePrepend)) { nbUploaded++; } SetCurrentAction("Connecting to Source " + settings.sourceFTP.address); // Reconnect to source do delete and do next download source = ServerAccess.CreateAccessTo(settings.sourceFTP); if (settings.sourceFTP.deleteFileAfterTransfer) { SetCurrentAction($"Delete {currentFile} on source {settings.sourceFTP.address} "); source.DeleteFile(currentFile); } else { if (currentFile != originalFile) { SetCurrentAction($"Renaming {currentFile} => {originalFile}"); source.RenameFile(currentFile, originalFile); } } currentFile = null; } _logger.Info( $"Done ! {sourceList.Count} file{(sourceList.Count > 1 ? "s" : "")} on source, {nbUploaded} file{(nbUploaded > 1 ? "s" : "")} uploaded"); } catch (Exception e) { LogExceptionCleanly(e); if (currentFile != null && originalFile != null && currentFile != originalFile) { //Need to rename the original file try { if (source == null) { SetCurrentAction("AFTER EXCEPTION Connecting to Source " + settings.sourceFTP.address); source = ServerAccess.CreateAccessTo(settings.sourceFTP); } SetCurrentAction($"AFTER EXCEPTION Renaming {currentFile} => {originalFile}"); source.RenameFile(currentFile, originalFile); } catch (Exception exception) { LogExceptionCleanly(exception); } finally { source?.Disconnect(); } } return(nbUploaded); } finally { EmptyTmpFolder(); source?.Disconnect(); destinationClient?.Disconnect(); } return(nbUploaded); }
public NewsService(IServerAccess access) : base(access.CreateCommunication("news")) { }
public EventsService(IServerAccess access) : base(access.CreateCommunication("events")) { }
public AuthenticationService(IServerAccess access) : base(access.CreateCommunication("authentication")) { }
public DirectoryService(IServerAccess access) : base(access.CreateCommunication("directory")) { }
public MoodleService(IServerAccess access) : base(access.CreateCommunication("moodle")) { }
public CamiproService(IServerAccess config) : base(config.CreateCommunication("camipro")) { }
public MapService(IServerAccess access) : base(access.CreateCommunication("map")) { }
public IsAcademiaService(IServerAccess access) : base(access.CreateCommunication("isacademia")) { }
public FoodService(IServerAccess access) : base(access.CreateCommunication("food")) { }