mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-15 18:02:58 +08:00
chore!: migrate to version 2.x
This commit is contained in:
16
plugins/obs/build.gradle.kts
Normal file
16
plugins/obs/build.gradle.kts
Normal file
@@ -0,0 +1,16 @@
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.jvm)
|
||||
}
|
||||
|
||||
|
||||
project.version = "0.0.1"
|
||||
|
||||
|
||||
dependencies {
|
||||
testImplementation(kotlin("test"))
|
||||
implementation("com.huaweicloud:esdk-obs-java-bundle:3.25.4")
|
||||
compileOnly(project(":"))
|
||||
}
|
||||
|
||||
|
||||
apply(from = "$rootDir/plugins/common.gradle.kts")
|
||||
@@ -0,0 +1,41 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import org.apache.commons.vfs2.Capability
|
||||
import org.apache.commons.vfs2.FileName
|
||||
import org.apache.commons.vfs2.FileSystem
|
||||
import org.apache.commons.vfs2.FileSystemOptions
|
||||
import org.apache.commons.vfs2.provider.AbstractOriginatingFileProvider
|
||||
|
||||
class OBSFileProvider private constructor() : AbstractOriginatingFileProvider() {
|
||||
|
||||
companion object {
|
||||
val instance by lazy { OBSFileProvider() }
|
||||
val capabilities = listOf(
|
||||
Capability.CREATE,
|
||||
Capability.DELETE,
|
||||
Capability.RENAME,
|
||||
Capability.GET_TYPE,
|
||||
Capability.LIST_CHILDREN,
|
||||
Capability.READ_CONTENT,
|
||||
Capability.URI,
|
||||
Capability.WRITE_CONTENT,
|
||||
Capability.GET_LAST_MODIFIED,
|
||||
Capability.SET_LAST_MODIFIED_FILE,
|
||||
Capability.RANDOM_ACCESS_READ,
|
||||
Capability.APPEND_CONTENT
|
||||
)
|
||||
}
|
||||
|
||||
override fun getCapabilities(): Collection<Capability> {
|
||||
return OBSFileProvider.capabilities
|
||||
}
|
||||
|
||||
override fun doCreateFileSystem(
|
||||
rootFileName: FileName,
|
||||
fileSystemOptions: FileSystemOptions
|
||||
): FileSystem? {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import app.termora.DynamicIcon
|
||||
import app.termora.I18n
|
||||
import app.termora.Icons
|
||||
import app.termora.plugin.Extension
|
||||
import app.termora.plugin.ExtensionSupport
|
||||
import app.termora.plugin.PaidPlugin
|
||||
import app.termora.protocol.ProtocolHostPanelExtension
|
||||
import app.termora.protocol.ProtocolProviderExtension
|
||||
|
||||
class OBSPlugin : PaidPlugin {
|
||||
private val support = ExtensionSupport()
|
||||
|
||||
init {
|
||||
support.addExtension(ProtocolProviderExtension::class.java) { OBSProtocolProviderExtension.instance }
|
||||
support.addExtension(ProtocolHostPanelExtension::class.java) { OBSProtocolHostPanelExtension.instance }
|
||||
}
|
||||
|
||||
override fun getAuthor(): String {
|
||||
return "TermoraDev"
|
||||
}
|
||||
|
||||
|
||||
override fun getName(): String {
|
||||
return "Huawei OBS"
|
||||
}
|
||||
|
||||
|
||||
override fun <T : Extension> getExtensions(clazz: Class<T>): List<T> {
|
||||
return support.getExtensions(clazz)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import app.termora.Host
|
||||
import app.termora.protocol.ProtocolHostPanel
|
||||
import org.apache.commons.lang3.StringUtils
|
||||
|
||||
class OBSProtocolHostPanel : ProtocolHostPanel() {
|
||||
override fun getHost(): Host {
|
||||
return Host(
|
||||
name = StringUtils.EMPTY,
|
||||
protocol = OBSProtocolProvider.PROTOCOL
|
||||
)
|
||||
}
|
||||
|
||||
override fun setHost(host: Host) {
|
||||
|
||||
}
|
||||
|
||||
override fun validateFields(): Boolean {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import app.termora.protocol.ProtocolHostPanel
|
||||
import app.termora.protocol.ProtocolHostPanelExtension
|
||||
import app.termora.protocol.ProtocolProvider
|
||||
|
||||
class OBSProtocolHostPanelExtension private constructor() : ProtocolHostPanelExtension {
|
||||
companion object {
|
||||
val instance by lazy { OBSProtocolHostPanelExtension() }
|
||||
}
|
||||
|
||||
override fun getProtocolProvider(): ProtocolProvider {
|
||||
return OBSProtocolProvider.instance
|
||||
}
|
||||
|
||||
override fun createProtocolHostPanel(): ProtocolHostPanel {
|
||||
return OBSProtocolHostPanel()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import app.termora.DynamicIcon
|
||||
import app.termora.Icons
|
||||
import app.termora.protocol.FileObjectHandler
|
||||
import app.termora.protocol.FileObjectRequest
|
||||
import app.termora.protocol.TransferProtocolProvider
|
||||
import org.apache.commons.vfs2.provider.FileProvider
|
||||
|
||||
class OBSProtocolProvider private constructor() : TransferProtocolProvider {
|
||||
|
||||
companion object {
|
||||
val instance by lazy { OBSProtocolProvider() }
|
||||
const val PROTOCOL = "OBS"
|
||||
}
|
||||
|
||||
override fun getProtocol(): String {
|
||||
return PROTOCOL
|
||||
}
|
||||
|
||||
override fun getIcon(width: Int, height: Int): DynamicIcon {
|
||||
return Icons.huawei
|
||||
}
|
||||
|
||||
override fun getFileProvider(): FileProvider {
|
||||
return OBSFileProvider.instance
|
||||
}
|
||||
|
||||
override fun getRootFileObject(requester: FileObjectRequest): FileObjectHandler {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package app.termora.plugins.obs
|
||||
|
||||
import app.termora.protocol.ProtocolProvider
|
||||
import app.termora.protocol.ProtocolProviderExtension
|
||||
|
||||
class OBSProtocolProviderExtension private constructor() : ProtocolProviderExtension {
|
||||
companion object {
|
||||
val instance by lazy { OBSProtocolProviderExtension() }
|
||||
}
|
||||
|
||||
override fun getProtocolProvider(): ProtocolProvider {
|
||||
return OBSProtocolProvider.Companion.instance
|
||||
}
|
||||
}
|
||||
24
plugins/obs/src/main/resources/META-INF/plugin.xml
Normal file
24
plugins/obs/src/main/resources/META-INF/plugin.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<termora-plugin>
|
||||
|
||||
<id>obs</id>
|
||||
|
||||
<name>Huawei OBS</name>
|
||||
|
||||
<paid/>
|
||||
|
||||
<version>${projectVersion}</version>
|
||||
|
||||
<termora-version since=">=${rootProjectVersion}" until=""/>
|
||||
|
||||
<entry>app.termora.plugins.obs.OBSPlugin</entry>
|
||||
|
||||
<descriptions>
|
||||
<description>Connecting to Huawei OBS</description>
|
||||
<description language="zh_CN">支持连接到华为云对象存储</description>
|
||||
<description language="zh_TW">支援連接到華為雲端物件存儲</description>
|
||||
</descriptions>
|
||||
|
||||
<vendor url="https://github.com/TermoraDev">TermoraDev</vendor>
|
||||
|
||||
|
||||
</termora-plugin>
|
||||
1
plugins/obs/src/main/resources/META-INF/pluginIcon.svg
Normal file
1
plugins/obs/src/main/resources/META-INF/pluginIcon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1747212780529" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1350" width="16" height="16"><path d="M843.5 91.90625H180.59375c-48.65625 0-88.40625 39.75-88.40625 88.40625v662.90625c0 48.65625 39.75 88.40625 88.40625 88.40625h662.90625c48.65625 0 88.40625-39.75 88.40625-88.40625V180.21875c0-48.5625-39.75-88.3125-88.40625-88.3125z m-441.5625 636.375c-16.5 11.15625-76.21875 49.6875-114.46875 32.53125-38.34375-17.15625-58.875-60-58.875-60l217.03125-5.8125s-28.3125 21.5625-43.6875 33.28125z m-125.15625-49.78125c-22.3125-3.375-71.0625-16.21875-96-58.125-25.03125-41.90625-12.9375-97.5-9.84375-98.34375 3.09375-0.84375 83.0625 43.78125 121.875 63.28125 38.90625 19.40625 154.875 89.625 155.71875 92.15625 1.125 3-146.625 4.59375-171.75 1.03125z m5.53125-126.9375c-52.875-35.25-71.90625-64.6875-67.78125-108.9375 4.125-44.25 49.5-89.53125 55.875-90.28125 6.28125-0.65625 60.9375 70.40625 103.03125 136.78125 42 66.375 93.46875 157.6875 91.125 163.6875-2.34375 6-129-63.46875-182.25-101.25z m212.34375 80.34375c-0.1875 2.8125-4.125 4.125-7.3125 1.03125-3.28125-3.09375-91.59375-144.1875-108.375-180.09375-16.78125-35.90625-43.3125-105.65625-7.96875-151.21875 35.34375-45.65625 90.65625-43.125 90.65625-43.125 3.5625 5.4375 27.09375 68.8125 35.0625 118.6875 8.0625 49.6875-1.875 251.90625-2.0625 254.71875z m34.78125 0c-0.1875-2.8125-10.125-204.9375-2.15625-254.8125 7.96875-49.875 31.5-113.15625 35.0625-118.6875 0 0 55.3125-2.53125 90.65625 43.125s8.8125 115.3125-7.96875 151.21875C628.25 488.65625 539.9375 629.75 536.65625 632.84375c-3.09375 3.09375-7.03125 1.78125-7.21875-0.9375z m30.1875 21c-2.34375-6 49.03125-97.21875 91.125-163.6875 42-66.375 96.65625-137.53125 103.03125-136.78125 6.28125 0.65625 51.75 45.9375 55.875 90.28125 4.125 44.25-14.90625 73.78125-67.78125 108.9375-53.34375 37.6875-179.90625 107.15625-182.25 101.25z m177.09375 107.90625c-38.34375 17.15625-98.0625-21.375-114.5625-32.53125-15.375-11.71875-43.6875-33.28125-43.6875-33.28125l217.03125 5.8125c0.09375-0.09375-20.53125 42.84375-58.78125 60z m106.59375-140.4375c-25.03125 41.90625-73.6875 54.65625-96 58.125-25.125 3.5625-172.78125 1.96875-171.75-1.03125 0.84375-2.625 116.90625-72.75 155.71875-92.15625 38.8125-19.40625 118.78125-64.125 121.875-63.28125 3.09375 0.9375 15.1875 56.53125-9.84375 98.34375z" fill="#6C707E" p-id="1351"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1 @@
|
||||
<svg t="1747212780529" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1350" width="16" height="16"><path d="M843.5 91.90625H180.59375c-48.65625 0-88.40625 39.75-88.40625 88.40625v662.90625c0 48.65625 39.75 88.40625 88.40625 88.40625h662.90625c48.65625 0 88.40625-39.75 88.40625-88.40625V180.21875c0-48.5625-39.75-88.3125-88.40625-88.3125z m-441.5625 636.375c-16.5 11.15625-76.21875 49.6875-114.46875 32.53125-38.34375-17.15625-58.875-60-58.875-60l217.03125-5.8125s-28.3125 21.5625-43.6875 33.28125z m-125.15625-49.78125c-22.3125-3.375-71.0625-16.21875-96-58.125-25.03125-41.90625-12.9375-97.5-9.84375-98.34375 3.09375-0.84375 83.0625 43.78125 121.875 63.28125 38.90625 19.40625 154.875 89.625 155.71875 92.15625 1.125 3-146.625 4.59375-171.75 1.03125z m5.53125-126.9375c-52.875-35.25-71.90625-64.6875-67.78125-108.9375 4.125-44.25 49.5-89.53125 55.875-90.28125 6.28125-0.65625 60.9375 70.40625 103.03125 136.78125 42 66.375 93.46875 157.6875 91.125 163.6875-2.34375 6-129-63.46875-182.25-101.25z m212.34375 80.34375c-0.1875 2.8125-4.125 4.125-7.3125 1.03125-3.28125-3.09375-91.59375-144.1875-108.375-180.09375-16.78125-35.90625-43.3125-105.65625-7.96875-151.21875 35.34375-45.65625 90.65625-43.125 90.65625-43.125 3.5625 5.4375 27.09375 68.8125 35.0625 118.6875 8.0625 49.6875-1.875 251.90625-2.0625 254.71875z m34.78125 0c-0.1875-2.8125-10.125-204.9375-2.15625-254.8125 7.96875-49.875 31.5-113.15625 35.0625-118.6875 0 0 55.3125-2.53125 90.65625 43.125s8.8125 115.3125-7.96875 151.21875C628.25 488.65625 539.9375 629.75 536.65625 632.84375c-3.09375 3.09375-7.03125 1.78125-7.21875-0.9375z m30.1875 21c-2.34375-6 49.03125-97.21875 91.125-163.6875 42-66.375 96.65625-137.53125 103.03125-136.78125 6.28125 0.65625 51.75 45.9375 55.875 90.28125 4.125 44.25-14.90625 73.78125-67.78125 108.9375-53.34375 37.6875-179.90625 107.15625-182.25 101.25z m177.09375 107.90625c-38.34375 17.15625-98.0625-21.375-114.5625-32.53125-15.375-11.71875-43.6875-33.28125-43.6875-33.28125l217.03125 5.8125c0.09375-0.09375-20.53125 42.84375-58.78125 60z m106.59375-140.4375c-25.03125 41.90625-73.6875 54.65625-96 58.125-25.125 3.5625-172.78125 1.96875-171.75-1.03125 0.84375-2.625 116.90625-72.75 155.71875-92.15625 38.8125-19.40625 118.78125-64.125 121.875-63.28125 3.09375 0.9375 15.1875 56.53125-9.84375 98.34375z" fill="#CED0D6" p-id="1351"></path></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
Reference in New Issue
Block a user