registerBackupMethod

Registers a storage implementation for a specific backup method.

You can provide the backup methods when initializing the Portal main object.

Function Signature

public func registerBackupMethod(
    _ method: BackupMethods, 
    withStorage: PortalStorage
)

Parameters

  • method: The backup method to register. Supported methods:

    • .GoogleDrive: Google Drive storage

    • .iCloud: iCloud storage

    • .Password: Password-protected storage

    • .Passkey: Passkey authentication storage

    • .local: Local storage

    • .Unknown: Can be used for custom storage

  • withStorage: A custom implementation of PortalStorage protocol that handles the storage operations for the specified backup method

Notes

  • Each backup method must have a registered storage implementation before it can be used for backup or recovery operations

  • This method should be called before attempting any backup or recovery operations with the corresponding method

Example Usage

// Example 1: Registering a custom password storage
class MyCustomPasswordStorage: PortalStorage {
    // Custom implementation of PortalStorage protocol
}

do {
    let customStorage = MyCustomPasswordStorage()
    portal.registerBackupMethod(.Password, withStorage: customStorage)
} catch {
    print("Error registering backup method: \(error)")
}

// Example 2: Registering iCloud storage
do {
    let iCloudStorage = ICloudStorage(mobile: binaryWrapper)
    portal.registerBackupMethod(.iCloud, withStorage: iCloudStorage)
} catch {
    print("Error registering iCloud storage: \(error)")
}

Custom Storage Implementation

When implementing a custom storage solution, your class must conform to the PortalStorage protocol:

protocol PortalStorage {
  var api: PortalApiProtocol? { get set }
  var encryption: PortalEncryptionProtocol { get }

  func decrypt(_ value: String, withKey: String) async throws -> String
  func delete() async throws -> Bool
  func encrypt(_ value: String) async throws -> EncryptData
  func read() async throws -> String
  func validateOperations() async throws -> Bool
  func write(_ value: String) async throws -> Bool
}

Related Documentation

For more information about backup methods, see:

Last updated

Was this helpful?