private static void SetToken(Dictionary <string, string> args) { Global.Initialize(false); AdapterBase adapter = GetAdapter(args); string file; if (!args.TryGetValue("file", out file)) { throw new Exception("/file is required"); } if (adapter.Configuration.AdapterTypeId == OneDriveAdapter.TargetTypeId) { string tokenContent = File.ReadAllText(file); TokenResponse token = JsonConvert.DeserializeObject <TokenResponse>(tokenContent); // Encrypt the token if not already encrypted token.Protect(); ((OneDriveAdapterConfiguration)adapter.Configuration).CurrentToken = token; adapter.SaveConfiguration(); } else { AdapterRegistration registration = AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId); throw new Exception( string.Format("Cannot set token from adapter with type {0} ({1})", registration.AdapterType.Name, adapter.Configuration.AdapterTypeId)); } }
private static void DumpConfig() { Global.Initialize(false); string localAppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); string appDataRoot = Path.Combine(localAppDataPath, "SyncPro"); DirectoryInfo appDataRootDir = new DirectoryInfo(appDataRoot); foreach (DirectoryInfo relationshipDir in appDataRootDir.GetDirectories()) { Guid guid; if (!Guid.TryParse(relationshipDir.Name, out guid)) { WriteWarning("Failed to parse relationship directory '{0}' as a GUID", relationshipDir.Name); continue; } SyncRelationship relationship = SyncRelationship.Load(guid); //relationship.BeginInitialize(); // TODO: Do we really need to initialize the relationship in order to dump the configuration? //relationship.InitializeAsync().Wait(); Console.WriteLine("---------------------------- [Relationship] ----------------------------"); Console.WriteLine("RelationshipId: " + relationship.Configuration.RelationshipId); Console.WriteLine("Name: " + relationship.Configuration.Name); Console.WriteLine("Description: " + relationship.Configuration.Description); Console.WriteLine("Scope: " + relationship.Configuration.Scope); Console.WriteLine("SyncAttributes: " + relationship.Configuration.SyncAttributes); Console.WriteLine("TriggerType: " + relationship.Configuration.TriggerConfiguration.TriggerType); Console.WriteLine("SourceAdapter: " + relationship.Configuration.SourceAdapterId); Console.WriteLine("DestinationAdapter: " + relationship.Configuration.DestinationAdapterId); Console.WriteLine(); Console.WriteLine("---------- [Adapters] ---------- "); foreach (AdapterBase adapter in relationship.Adapters) { Console.WriteLine("Id: " + adapter.Configuration.Id); Console.WriteLine("AdapterTypeId: " + adapter.Configuration.AdapterTypeId); Console.WriteLine("AdapterTypeName: " + AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId).AdapterType.Name); Console.WriteLine("IsOriginator: " + adapter.Configuration.IsOriginator); Console.WriteLine("Flags: " + string.Join(",", StringExtensions.GetSetFlagNames <Data.AdapterFlags>(adapter.Configuration.Flags))); Console.WriteLine(); } Console.WriteLine(); } }
public static SyncRelationship Load(Guid relationshipId) { string relationshipDir = Path.Combine(Global.AppDataRoot, relationshipId.ToString("N")); RelationshipConfiguration config = RelationshipConfiguration.Load(relationshipDir); Logger.RelationshipLoaded( config.RelationshipId, new Dictionary <string, object>() { { "Name", config.Name }, { "RelationshipId", config.RelationshipId }, { "InitiallyCreatedUtc", config.InitiallyCreatedUtc }, { "Scope", config.Scope } }); SyncRelationship relationship = new SyncRelationship(config); // Get the adapters from the configuration for this relationship foreach (AdapterConfiguration adapterConfig in config.Adapters) { // Get the adapter registration information for this type of adapter AdapterRegistration registration = AdapterRegistry.GetRegistrationByTypeId(adapterConfig.AdapterTypeId); if (registration == null) { throw new Exception("No adapter registration found with TypeId " + adapterConfig.AdapterTypeId); } // Create the adapter object based on its config from the database AdapterBase adapter = (AdapterBase)Activator.CreateInstance( registration.AdapterType, relationship, adapterConfig); relationship.Adapters.Add(adapter); // Load adapter-specific configuration settings adapter.LoadConfiguration(); } return(relationship); }
private static void ExtractToken(Dictionary <string, string> args) { Global.Initialize(false); AdapterBase adapter = GetAdapter(args); bool formatToken = args.ContainsKey("formatToken"); string file; args.TryGetValue("file", out file); if (adapter.Configuration.AdapterTypeId == OneDriveAdapter.TargetTypeId) { TokenResponse token = ((OneDriveAdapterConfiguration)adapter.Configuration).CurrentToken; if (args.ContainsKey("decrypt")) { token.Unprotect(); } string formattedToken = JsonConvert.SerializeObject(token, formatToken ? Formatting.Indented : Formatting.None); if (string.IsNullOrEmpty(file)) { Console.WriteLine(formattedToken); } else { File.WriteAllText(file, formattedToken); } } else { AdapterRegistration registration = AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId); throw new Exception( string.Format("Cannot extract token from adapter with type {0} ({1})", registration.AdapterType.Name, adapter.Configuration.AdapterTypeId)); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jObject = JObject.Load(reader); Guid typeId = Guid.Parse(jObject["AdapterTypeId"].Value <string>()); //if (typeId == OneDriveAdapter.TargetTypeId) //{ // return JsonConvert.DeserializeObject<OneDriveAdapterConfiguration>( // jObject.ToString(), // SerializerSettings); //} //if (typeId == WindowsFileSystemAdapter.TargetTypeId) //{ // return JsonConvert.DeserializeObject<WindowsFileSystemAdapterConfiguration>( // jObject.ToString(), // SerializerSettings); //} //if (typeId == BackblazeB2Adapter.TargetTypeId) //{ // return JsonConvert.DeserializeObject<BackblazeB2AdapterConfiguration>( // jObject.ToString(), // SerializerSettings); //} AdapterRegistration registration = AdapterRegistry.GetRegistrationByTypeId(typeId); if (registration == null) { throw new Exception("No adapter registration found with TypeId " + typeId); } return(JsonConvert.DeserializeObject( jObject.ToString(), registration.AdapterConfigurationType, SerializerSettings)); //throw new NotImplementedException("Cannot read adapter configuration for type ID " + typeId); }