Introduce constant for files snapshot file extension
This commit is contained in:
parent
2f6edf6b4b
commit
1931024a10
5 changed files with 12 additions and 7 deletions
|
@ -10,6 +10,7 @@ import com.stevesoltys.seedvault.plugins.EncryptedMetadata
|
||||||
import com.stevesoltys.seedvault.plugins.StoragePlugin
|
import com.stevesoltys.seedvault.plugins.StoragePlugin
|
||||||
import com.stevesoltys.seedvault.plugins.chunkFolderRegex
|
import com.stevesoltys.seedvault.plugins.chunkFolderRegex
|
||||||
import com.stevesoltys.seedvault.plugins.tokenRegex
|
import com.stevesoltys.seedvault.plugins.tokenRegex
|
||||||
|
import org.calyxos.backup.storage.plugin.PluginConstants.SNAPSHOT_EXT
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
@ -149,5 +150,5 @@ private fun DocumentFile.getTokenOrNull(name: String?): Long? {
|
||||||
private fun isUnexpectedFile(name: String): Boolean {
|
private fun isUnexpectedFile(name: String): Boolean {
|
||||||
return name != FILE_NO_MEDIA &&
|
return name != FILE_NO_MEDIA &&
|
||||||
!chunkFolderRegex.matches(name) &&
|
!chunkFolderRegex.matches(name) &&
|
||||||
!name.endsWith(".SeedSnap")
|
!name.endsWith(SNAPSHOT_EXT)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.stevesoltys.seedvault.plugins.saf.FILE_BACKUP_METADATA
|
||||||
import com.stevesoltys.seedvault.plugins.saf.FILE_NO_MEDIA
|
import com.stevesoltys.seedvault.plugins.saf.FILE_NO_MEDIA
|
||||||
import com.stevesoltys.seedvault.plugins.tokenRegex
|
import com.stevesoltys.seedvault.plugins.tokenRegex
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
|
import org.calyxos.backup.storage.plugin.PluginConstants.SNAPSHOT_EXT
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
@ -191,7 +192,7 @@ internal class WebDavStoragePlugin(
|
||||||
private fun isUnexpectedFile(name: String): Boolean {
|
private fun isUnexpectedFile(name: String): Boolean {
|
||||||
return name != FILE_NO_MEDIA &&
|
return name != FILE_NO_MEDIA &&
|
||||||
!chunkFolderRegex.matches(name) &&
|
!chunkFolderRegex.matches(name) &&
|
||||||
!name.endsWith(".SeedSnap")
|
!name.endsWith(SNAPSHOT_EXT)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val providerPackageName: String = context.packageName // 100% built-in plugin
|
override val providerPackageName: String = context.packageName // 100% built-in plugin
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.stevesoltys.seedvault.plugins.webdav.WebDavStorage
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import org.calyxos.backup.storage.api.StoragePlugin
|
import org.calyxos.backup.storage.api.StoragePlugin
|
||||||
import org.calyxos.backup.storage.api.StoredSnapshot
|
import org.calyxos.backup.storage.api.StoredSnapshot
|
||||||
|
import org.calyxos.backup.storage.plugin.PluginConstants.SNAPSHOT_EXT
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.chunkRegex
|
import org.calyxos.backup.storage.plugin.PluginConstants.chunkRegex
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.snapshotRegex
|
import org.calyxos.backup.storage.plugin.PluginConstants.snapshotRegex
|
||||||
import org.koin.core.time.measureDuration
|
import org.koin.core.time.measureDuration
|
||||||
|
@ -136,13 +137,13 @@ internal class WebDavStoragePlugin(
|
||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override suspend fun getBackupSnapshotOutputStream(timestamp: Long): OutputStream {
|
override suspend fun getBackupSnapshotOutputStream(timestamp: Long): OutputStream {
|
||||||
val location = "$url/$folder/$timestamp.SeedSnap".toHttpUrl()
|
val location = "$url/$folder/$timestamp$SNAPSHOT_EXT".toHttpUrl()
|
||||||
debugLog { "getBackupSnapshotOutputStream($location)" }
|
debugLog { "getBackupSnapshotOutputStream($location)" }
|
||||||
return try {
|
return try {
|
||||||
getOutputStream(location)
|
getOutputStream(location)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
if (e is IOException) throw e
|
if (e is IOException) throw e
|
||||||
else throw IOException("Error getting OutputStream for $timestamp.SeedSnap: ", e)
|
else throw IOException("Error getting OutputStream for $timestamp$SNAPSHOT_EXT: ", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +185,7 @@ internal class WebDavStoragePlugin(
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override suspend fun getBackupSnapshotInputStream(storedSnapshot: StoredSnapshot): InputStream {
|
override suspend fun getBackupSnapshotInputStream(storedSnapshot: StoredSnapshot): InputStream {
|
||||||
val timestamp = storedSnapshot.timestamp
|
val timestamp = storedSnapshot.timestamp
|
||||||
val location = "$url/${storedSnapshot.userId}/$timestamp.SeedSnap".toHttpUrl()
|
val location = "$url/${storedSnapshot.userId}/$timestamp$SNAPSHOT_EXT".toHttpUrl()
|
||||||
debugLog { "getBackupSnapshotInputStream($location)" }
|
debugLog { "getBackupSnapshotInputStream($location)" }
|
||||||
return try {
|
return try {
|
||||||
getInputStream(location)
|
getInputStream(location)
|
||||||
|
@ -251,7 +252,7 @@ internal class WebDavStoragePlugin(
|
||||||
val timestamp = storedSnapshot.timestamp
|
val timestamp = storedSnapshot.timestamp
|
||||||
Log.d(TAG, "Deleting snapshot $timestamp")
|
Log.d(TAG, "Deleting snapshot $timestamp")
|
||||||
|
|
||||||
val location = "$url/${storedSnapshot.userId}/$timestamp.SeedSnap".toHttpUrl()
|
val location = "$url/${storedSnapshot.userId}/$timestamp$SNAPSHOT_EXT".toHttpUrl()
|
||||||
val davCollection = DavCollection(okHttpClient, location)
|
val davCollection = DavCollection(okHttpClient, location)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -7,6 +7,7 @@ package org.calyxos.backup.storage.plugin
|
||||||
|
|
||||||
public object PluginConstants {
|
public object PluginConstants {
|
||||||
|
|
||||||
|
public const val SNAPSHOT_EXT: String = ".SeedSnap"
|
||||||
public val folderRegex: Regex = Regex("^[a-f0-9]{16}\\.sv$")
|
public val folderRegex: Regex = Regex("^[a-f0-9]{16}\\.sv$")
|
||||||
public val chunkFolderRegex: Regex = Regex("[a-f0-9]{2}")
|
public val chunkFolderRegex: Regex = Regex("[a-f0-9]{2}")
|
||||||
public val chunkRegex: Regex = Regex("[a-f0-9]{64}")
|
public val chunkRegex: Regex = Regex("[a-f0-9]{64}")
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.calyxos.backup.storage.api.StoredSnapshot
|
||||||
import org.calyxos.backup.storage.measure
|
import org.calyxos.backup.storage.measure
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.CHUNK_FOLDER_COUNT
|
import org.calyxos.backup.storage.plugin.PluginConstants.CHUNK_FOLDER_COUNT
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.MIME_TYPE
|
import org.calyxos.backup.storage.plugin.PluginConstants.MIME_TYPE
|
||||||
|
import org.calyxos.backup.storage.plugin.PluginConstants.SNAPSHOT_EXT
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.chunkFolderRegex
|
import org.calyxos.backup.storage.plugin.PluginConstants.chunkFolderRegex
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.chunkRegex
|
import org.calyxos.backup.storage.plugin.PluginConstants.chunkRegex
|
||||||
import org.calyxos.backup.storage.plugin.PluginConstants.folderRegex
|
import org.calyxos.backup.storage.plugin.PluginConstants.folderRegex
|
||||||
|
@ -72,7 +73,7 @@ public abstract class SafStoragePlugin(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun timestampToSnapshot(timestamp: Long): String {
|
private fun timestampToSnapshot(timestamp: Long): String {
|
||||||
return "$timestamp.SeedSnap"
|
return "$timestamp$SNAPSHOT_EXT"
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun init() {
|
override suspend fun init() {
|
||||||
|
|
Loading…
Reference in a new issue