summaryrefslogtreecommitdiff
path: root/libs/samba/src/main/java/org
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2024-09-25 22:16:26 +0200
committerJoel Klinghed <the_jk@spawned.biz>2024-09-25 22:16:26 +0200
commitf03c738a9e39053ad185084bf83bf6e526011b71 (patch)
tree86baa67bb76e7e7f2f12a41afd8ddc8ea3506164 /libs/samba/src/main/java/org
parent2d8949a0d9333bfda2385e3eab124581704286bf (diff)
samba & sftp: Share path utils methods
Add tests for them, and add basename, currently unused, for completeness
Diffstat (limited to 'libs/samba/src/main/java/org')
-rw-r--r--libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt22
-rw-r--r--libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt17
2 files changed, 17 insertions, 22 deletions
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)