diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-09-25 22:16:26 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-09-25 22:16:26 +0200 |
| commit | f03c738a9e39053ad185084bf83bf6e526011b71 (patch) | |
| tree | 86baa67bb76e7e7f2f12a41afd8ddc8ea3506164 /libs/samba | |
| parent | 2d8949a0d9333bfda2385e3eab124581704286bf (diff) | |
samba & sftp: Share path utils methods
Add tests for them, and add basename, currently unused, for completeness
Diffstat (limited to 'libs/samba')
3 files changed, 18 insertions, 23 deletions
diff --git a/libs/samba/build.gradle.kts b/libs/samba/build.gradle.kts index a86ad39..4926cc4 100644 --- a/libs/samba/build.gradle.kts +++ b/libs/samba/build.gradle.kts @@ -39,7 +39,7 @@ android { dependencies { implementation(project(":libs:io")) - testImplementation(project(":libs:utils")) + implementation(project(":libs:utils")) testImplementation(project(":libs:test-utils")) } diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt index 7378ab5..00a1ba7 100644 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt +++ b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt @@ -1,5 +1,7 @@ package org.the_jk.cleversync.io.samba +import org.the_jk.cleversync.PathUtils + internal class SambaConnection(uri: String, credentials: SambaCredentials) { val description = uri private val context = NativeSamba.newContext() @@ -23,30 +25,22 @@ internal class SambaConnection(uri: String, credentials: SambaCredentials) { } fun openDir(path: String): NativeSamba.Dir? = - if (connected) context.openDir(join(url!!.path(), path)) else null + if (connected) context.openDir(PathUtils.join(url!!.path(), path)) else null fun entry(path: String): NativeSamba.DirEntry? = - if (connected) context.entry(join(url!!.path(), path)) else null + if (connected) context.entry(PathUtils.join(url!!.path(), path)) else null fun makeDir(path: String): Boolean = - connected && context.makeDir(join(url!!.path(), path)) + connected && context.makeDir(PathUtils.join(url!!.path(), path)) fun removeDir(path: String): Boolean = - connected && context.removeDir(join(url!!.path(), path)) + connected && context.removeDir(PathUtils.join(url!!.path(), path)) fun unlink(path: String): Boolean = - connected && context.unlink(join(url!!.path(), path)) + connected && context.unlink(PathUtils.join(url!!.path(), path)) fun openFile(path: String, read: NativeSamba.OpenMode): NativeSamba.File? = - if (connected) context.openFile(join(url!!.path(), path), read) else null + if (connected) context.openFile(PathUtils.join(url!!.path(), path), read) else null override fun toString() = description - - companion object { - fun join(a: String, b: String): String { - if (a.isEmpty() || b.startsWith("/")) return b - if (b.isEmpty()) return a - return if (a.endsWith("/")) a + b else "${a}/${b}" - } - } } diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt index 67228a4..4865d7f 100644 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt +++ b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt @@ -5,6 +5,7 @@ import android.os.Looper import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.map +import org.the_jk.cleversync.PathUtils import org.the_jk.cleversync.io.Directory import org.the_jk.cleversync.io.File import org.the_jk.cleversync.io.ModifiableDirectory @@ -55,14 +56,14 @@ internal open class SambaDirectory( } override fun modifiableOpenDir(name: String): ModifiableDirectory? { - val newPath = SambaConnection.join(path, name) + val newPath = PathUtils.join(path, name) val entry = conn.entry(newPath) ?: return null if (entry.type != NativeSamba.DirEntryType.DIR) return null return SambaDirectory(conn, newPath, name) } override fun modifiableOpenFile(name: String): ModifiableFile? { - val newPath = SambaConnection.join(path, name) + val newPath = PathUtils.join(path, name) val entry = conn.entry(newPath) ?: return null if (entry.type != NativeSamba.DirEntryType.FILE) return null return SambaFile(conn, newPath, name, entry.size, entry.lastModified) @@ -79,7 +80,7 @@ internal open class SambaDirectory( val dir = conn.openDir(path) if (dir != null) { dir.list().forEach { entry -> - val entryPath = SambaConnection.join(path, entry.name) + val entryPath = PathUtils.join(path, entry.name) when (entry.type) { NativeSamba.DirEntryType.DIR -> { directories.add(SambaDirectory(conn, entryPath, entry.name)) @@ -97,13 +98,13 @@ internal open class SambaDirectory( override fun modifiableLiveList() = modifiableLiveContent override fun createDirectory(name: String): ModifiableDirectory { - val newPath = SambaConnection.join(path, name) + val newPath = PathUtils.join(path, name) if (!conn.makeDir(newPath)) throw IOException(conn.error) return SambaDirectory(conn, newPath, name) } override fun createFile(name: String): ModifiableFile { - val newPath = SambaConnection.join(path, name) + val newPath = PathUtils.join(path, name) return SambaFile(conn, newPath, name, 0UL, Instant.EPOCH, Instant.EPOCH) } @@ -120,7 +121,7 @@ internal open class SambaDirectory( } override fun removeDirectory(name: String): Boolean { - val removePath = SambaConnection.join(path, name) + val removePath = PathUtils.join(path, name) val entry = conn.entry(removePath) ?: return false if (entry.type != NativeSamba.DirEntryType.DIR) return false return removeRecursive(removePath) @@ -130,7 +131,7 @@ internal open class SambaDirectory( val dir = conn.openDir(removePath) ?: return false try { dir.list().forEach { entry -> - val entryPath = SambaConnection.join(removePath, entry.name) + val entryPath = PathUtils.join(removePath, entry.name) if (!when (entry.type) { NativeSamba.DirEntryType.FILE -> conn.unlink(entryPath) @@ -147,7 +148,7 @@ internal open class SambaDirectory( } override fun removeFile(name: String): Boolean { - val removePath = SambaConnection.join(path, name) + val removePath = PathUtils.join(path, name) val entry = conn.entry(removePath) ?: return false if (entry.type != NativeSamba.DirEntryType.FILE) return false return conn.unlink(removePath) |
