fixed native image configuration task
All checks were successful
CI / build (push) Successful in 37m16s
All checks were successful
CI / build (push) Successful in 37m16s
This commit is contained in:
@@ -90,13 +90,21 @@ Provider<EnvelopeJarTask> envelopeJarTaskProvider = tasks.named(EnvelopePlugin.E
|
|||||||
}
|
}
|
||||||
|
|
||||||
tasks.named(NativeImagePlugin.CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask) {
|
tasks.named(NativeImagePlugin.CONFIGURE_NATIVE_IMAGE_TASK_NAME, NativeImageConfigurationTask) {
|
||||||
|
javaLauncher = javaToolchains.launcherFor {
|
||||||
|
languageVersion = JavaLanguageVersion.of(21)
|
||||||
|
vendor = JvmVendorSpec.ORACLE
|
||||||
|
}
|
||||||
|
|
||||||
mainClass = "net.woggioni.rbcs.cli.graal.GraalNativeImageConfiguration"
|
mainClass = "net.woggioni.rbcs.cli.graal.GraalNativeImageConfiguration"
|
||||||
setClasspath(configurations.configureNativeImageRuntimeClasspath + sourceSets.graal.output.classesDirs)
|
classpath = project.files(
|
||||||
|
configurations.configureNativeImageRuntimeClasspath,
|
||||||
|
sourceSets.configureNativeImage.output
|
||||||
|
)
|
||||||
mergeConfiguration = false
|
mergeConfiguration = false
|
||||||
systemProperty('logback.configurationFile', 'classpath:net/woggioni/rbcs/cli/logback.xml')
|
systemProperty('logback.configurationFile', 'classpath:net/woggioni/rbcs/cli/logback.xml')
|
||||||
systemProperty('io.netty.leakDetectionLevel', 'DISABLED')
|
systemProperty('io.netty.leakDetectionLevel', 'DISABLED')
|
||||||
modularity.inferModulePath = false
|
modularity.inferModulePath = false
|
||||||
enabled = false
|
enabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeImage {
|
nativeImage {
|
||||||
|
15
rbcs-cli/conf/rbcs-client.xml
Normal file
15
rbcs-cli/conf/rbcs-client.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<rbcs-client:profiles xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:rbcs-client="urn:net.woggioni.rbcs.client"
|
||||||
|
xs:schemaLocation="urn:net.woggioni.rbcs.client jpms://net.woggioni.rbcs.client/net/woggioni/rbcs/client/schema/rbcs-client.xsd"
|
||||||
|
>
|
||||||
|
<profile name="profile1" base-url="https://rbcs1.example.com/">
|
||||||
|
<no-auth/>
|
||||||
|
<connection write-idle-timeout="PT60S"
|
||||||
|
read-idle-timeout="PT60S"
|
||||||
|
idle-timeout="PT30S" />
|
||||||
|
</profile>
|
||||||
|
<profile name="profile2" base-url="https://rbcs2.example.com/">
|
||||||
|
<basic-auth user="user" password="password"/>
|
||||||
|
</profile>
|
||||||
|
</rbcs-client:profiles>
|
@@ -1,74 +1,46 @@
|
|||||||
{
|
{
|
||||||
"resources": {
|
"resources":{
|
||||||
"includes": [
|
"includes":[{
|
||||||
{
|
"pattern":"\\QMETA-INF/MANIFEST.MF\\E"
|
||||||
"pattern": "\\QMETA-INF/MANIFEST.MF\\E"
|
}, {
|
||||||
},
|
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
|
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
|
||||||
"pattern": "\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
|
}, {
|
||||||
},
|
"pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
|
"pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
|
||||||
"pattern": "\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
|
}, {
|
||||||
},
|
"pattern":"\\QMETA-INF/services/javax.xml.parsers.DocumentBuilderFactory\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
|
"pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"\\QMETA-INF/services/net.woggioni.rbcs.api.CacheProvider\\E"
|
||||||
"pattern": "\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
|
}, {
|
||||||
},
|
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\QMETA-INF/services/javax.xml.parsers.DocumentBuilderFactory\\E"
|
"pattern":"\\Qclasspath:net/woggioni/rbcs/cli/logback.xml\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"\\Qlogback-test.scmo\\E"
|
||||||
"pattern": "\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
|
}, {
|
||||||
},
|
"pattern":"\\Qlogback.scmo\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\QMETA-INF/services/net.woggioni.rbcs.api.CacheProvider\\E"
|
"pattern":"\\Qnet/woggioni/rbcs/cli/logback.xml\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"\\Qnet/woggioni/rbcs/client/schema/rbcs-client.xsd\\E"
|
||||||
"pattern": "\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
|
}, {
|
||||||
},
|
"pattern":"\\Qnet/woggioni/rbcs/server/rbcs-default.xml\\E"
|
||||||
{
|
}, {
|
||||||
"pattern": "\\Qclasspath:net/woggioni/rbcs/cli/logback.xml\\E"
|
"pattern":"\\Qnet/woggioni/rbcs/server/schema/rbcs-server.xsd\\E"
|
||||||
},
|
}, {
|
||||||
{
|
"pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
|
||||||
"pattern": "\\Qlogback-test.scmo\\E"
|
}]},
|
||||||
},
|
"bundles":[{
|
||||||
{
|
"name":"com.sun.org.apache.xerces.internal.impl.xpath.regex.message",
|
||||||
"pattern": "\\Qlogback.scmo\\E"
|
"locales":[""]
|
||||||
},
|
}]
|
||||||
{
|
|
||||||
"pattern": "\\Qnet/woggioni/rbcs/cli/logback.xml\\E"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "\\Qnet/woggioni/rbcs/server/rbcs-default.xml\\E"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "\\Qnet/woggioni/rbcs/server/schema/rbcs-server.xsd\\E"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "\\Qnet/woggioni/rbcs/client/schema/rbcs-client.xsd\\E"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "\\Q/net/woggioni/rbcs/server/memcache/schema/rbcs-memcache.xsd\\E"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bundles": [
|
|
||||||
{
|
|
||||||
"name": "com.sun.org.apache.xerces.internal.impl.xpath.regex.message",
|
|
||||||
"locales": [
|
|
||||||
""
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
"types":[
|
"types":[
|
||||||
|
{
|
||||||
|
"name":"java.lang.String"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name":"net.woggioni.rbcs.api.CacheValueMetadata"
|
"name":"net.woggioni.rbcs.api.CacheValueMetadata"
|
||||||
}
|
}
|
||||||
|
@@ -1,12 +1,14 @@
|
|||||||
package net.woggioni.rbcs.cli.graal
|
package net.woggioni.rbcs.cli.graal
|
||||||
|
|
||||||
|
import net.woggioni.jwo.NullOutputStream
|
||||||
import net.woggioni.rbcs.api.Configuration
|
import net.woggioni.rbcs.api.Configuration
|
||||||
import net.woggioni.rbcs.api.Configuration.User
|
import net.woggioni.rbcs.api.Configuration.User
|
||||||
import net.woggioni.rbcs.api.Role
|
import net.woggioni.rbcs.api.Role
|
||||||
import net.woggioni.rbcs.cli.RemoteBuildCacheServerCli
|
import net.woggioni.rbcs.cli.RemoteBuildCacheServerCli
|
||||||
import net.woggioni.rbcs.cli.impl.commands.BenchmarkCommand
|
import net.woggioni.rbcs.cli.impl.commands.BenchmarkCommand
|
||||||
|
import net.woggioni.rbcs.cli.impl.commands.GetCommand
|
||||||
import net.woggioni.rbcs.cli.impl.commands.HealthCheckCommand
|
import net.woggioni.rbcs.cli.impl.commands.HealthCheckCommand
|
||||||
import net.woggioni.rbcs.client.RemoteBuildCacheClient
|
import net.woggioni.rbcs.cli.impl.commands.PutCommand
|
||||||
import net.woggioni.rbcs.common.HostAndPort
|
import net.woggioni.rbcs.common.HostAndPort
|
||||||
import net.woggioni.rbcs.common.PasswordSecurity.hashPassword
|
import net.woggioni.rbcs.common.PasswordSecurity.hashPassword
|
||||||
import net.woggioni.rbcs.common.RBCS
|
import net.woggioni.rbcs.common.RBCS
|
||||||
@@ -16,12 +18,15 @@ import net.woggioni.rbcs.server.cache.FileSystemCacheConfiguration
|
|||||||
import net.woggioni.rbcs.server.cache.InMemoryCacheConfiguration
|
import net.woggioni.rbcs.server.cache.InMemoryCacheConfiguration
|
||||||
import net.woggioni.rbcs.server.configuration.Parser
|
import net.woggioni.rbcs.server.configuration.Parser
|
||||||
import net.woggioni.rbcs.server.memcache.MemcacheCacheConfiguration
|
import net.woggioni.rbcs.server.memcache.MemcacheCacheConfiguration
|
||||||
|
import java.io.ByteArrayInputStream
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.temporal.ChronoUnit
|
import java.time.temporal.ChronoUnit
|
||||||
import java.util.concurrent.ExecutionException
|
import java.util.concurrent.ExecutionException
|
||||||
import java.util.zip.Deflater
|
import java.util.zip.Deflater
|
||||||
|
import net.woggioni.rbcs.client.Configuration as ClientConfiguration
|
||||||
|
import net.woggioni.rbcs.client.impl.Parser as ClientConfigurationParser
|
||||||
|
|
||||||
object GraalNativeImageConfiguration {
|
object GraalNativeImageConfiguration {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -30,15 +35,16 @@ object GraalNativeImageConfiguration {
|
|||||||
val serverDoc = RemoteBuildCacheServer.DEFAULT_CONFIGURATION_URL.openStream().use {
|
val serverDoc = RemoteBuildCacheServer.DEFAULT_CONFIGURATION_URL.openStream().use {
|
||||||
Xml.parseXml(RemoteBuildCacheServer.DEFAULT_CONFIGURATION_URL, it)
|
Xml.parseXml(RemoteBuildCacheServer.DEFAULT_CONFIGURATION_URL, it)
|
||||||
}
|
}
|
||||||
Parser.parse(doc)
|
Parser.parse(serverDoc)
|
||||||
|
|
||||||
val clientDoc = RemoteBuildCacheClient.Configuration.openStream().use {
|
val url = URI.create("file:conf/rbcs-client.xml").toURL()
|
||||||
Xml.parseXml(RemoteBuildCacheServer.DEFAULT_CONFIGURATION_URL, it)
|
val clientDoc = url.openStream().use {
|
||||||
|
Xml.parseXml(url, it)
|
||||||
}
|
}
|
||||||
Parser.parse(doc)
|
ClientConfigurationParser.parse(clientDoc)
|
||||||
|
|
||||||
val PASSWORD = "password"
|
val PASSWORD = "password"
|
||||||
val readersGroup = Configuration.Group("readers", setOf(Role.Reader), null, null)
|
val readersGroup = Configuration.Group("readers", setOf(Role.Reader, Role.Healthcheck), null, null)
|
||||||
val writersGroup = Configuration.Group("writers", setOf(Role.Writer), null, null)
|
val writersGroup = Configuration.Group("writers", setOf(Role.Writer), null, null)
|
||||||
|
|
||||||
|
|
||||||
@@ -126,30 +132,44 @@ object GraalNativeImageConfiguration {
|
|||||||
val serverHandle = RemoteBuildCacheServer(serverConfiguration).run()
|
val serverHandle = RemoteBuildCacheServer(serverConfiguration).run()
|
||||||
|
|
||||||
|
|
||||||
val clientProfile = RemoteBuildCacheClient.Configuration.Profile(
|
val clientProfile = ClientConfiguration.Profile(
|
||||||
URI.create("http://127.0.0.1:$serverPort/"),
|
URI.create("http://127.0.0.1:$serverPort/"),
|
||||||
null,
|
null,
|
||||||
RemoteBuildCacheClient.Configuration.Authentication.BasicAuthenticationCredentials("user3", PASSWORD),
|
ClientConfiguration.Authentication.BasicAuthenticationCredentials("user3", PASSWORD),
|
||||||
Duration.ofSeconds(3),
|
Duration.ofSeconds(3),
|
||||||
10,
|
10,
|
||||||
true,
|
true,
|
||||||
RemoteBuildCacheClient.Configuration.RetryPolicy(
|
ClientConfiguration.RetryPolicy(
|
||||||
3,
|
3,
|
||||||
1000,
|
1000,
|
||||||
1.2
|
1.2
|
||||||
),
|
),
|
||||||
RemoteBuildCacheClient.Configuration.TrustStore(null, null, false, false)
|
ClientConfiguration.TrustStore(null, null, false, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
HealthCheckCommand.run(clientProfile)
|
HealthCheckCommand.execute(clientProfile)
|
||||||
|
|
||||||
BenchmarkCommand.run(
|
BenchmarkCommand.execute(
|
||||||
clientProfile,
|
clientProfile,
|
||||||
1000,
|
1000,
|
||||||
0x100,
|
0x100,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
PutCommand.execute(
|
||||||
|
clientProfile,
|
||||||
|
"some-file.bin",
|
||||||
|
ByteArrayInputStream(ByteArray(0x1000) { it.toByte() }),
|
||||||
|
"application/octet-setream",
|
||||||
|
"attachment; filename=\"some-file.bin\""
|
||||||
|
)
|
||||||
|
|
||||||
|
GetCommand.execute(
|
||||||
|
clientProfile,
|
||||||
|
"some-file.bin",
|
||||||
|
NullOutputStream()
|
||||||
|
)
|
||||||
|
|
||||||
serverHandle.sendShutdownSignal()
|
serverHandle.sendShutdownSignal()
|
||||||
try {
|
try {
|
||||||
serverHandle.get()
|
serverHandle.get()
|
@@ -30,7 +30,7 @@ class BenchmarkCommand : RbcsCommand() {
|
|||||||
companion object {
|
companion object {
|
||||||
private val log = createLogger<BenchmarkCommand>()
|
private val log = createLogger<BenchmarkCommand>()
|
||||||
|
|
||||||
fun run(profile : Configuration.Profile,
|
fun execute(profile : Configuration.Profile,
|
||||||
numberOfEntries : Int,
|
numberOfEntries : Int,
|
||||||
entrySize : Int,
|
entrySize : Int,
|
||||||
useRandomValue : Boolean,
|
useRandomValue : Boolean,
|
||||||
@@ -176,7 +176,7 @@ class BenchmarkCommand : RbcsCommand() {
|
|||||||
clientCommand.configuration.profiles[profileName]
|
clientCommand.configuration.profiles[profileName]
|
||||||
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
||||||
}
|
}
|
||||||
run(
|
execute(
|
||||||
profile,
|
profile,
|
||||||
numberOfEntries,
|
numberOfEntries,
|
||||||
size,
|
size,
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
package net.woggioni.rbcs.cli.impl.commands
|
package net.woggioni.rbcs.cli.impl.commands
|
||||||
|
|
||||||
import net.woggioni.rbcs.cli.impl.RbcsCommand
|
import net.woggioni.rbcs.cli.impl.RbcsCommand
|
||||||
|
import net.woggioni.rbcs.client.Configuration
|
||||||
import net.woggioni.rbcs.client.RemoteBuildCacheClient
|
import net.woggioni.rbcs.client.RemoteBuildCacheClient
|
||||||
import net.woggioni.rbcs.common.createLogger
|
import net.woggioni.rbcs.common.createLogger
|
||||||
import picocli.CommandLine
|
import picocli.CommandLine
|
||||||
|
import java.io.OutputStream
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
@@ -13,8 +15,20 @@ import java.nio.file.Path
|
|||||||
showDefaultValues = true
|
showDefaultValues = true
|
||||||
)
|
)
|
||||||
class GetCommand : RbcsCommand() {
|
class GetCommand : RbcsCommand() {
|
||||||
companion object{
|
companion object {
|
||||||
private val log = createLogger<GetCommand>()
|
private val log = createLogger<GetCommand>()
|
||||||
|
|
||||||
|
fun execute(profile : Configuration.Profile, key : String, outputStream: OutputStream) {
|
||||||
|
RemoteBuildCacheClient(profile).use { client ->
|
||||||
|
client.get(key).thenApply { value ->
|
||||||
|
value?.let {
|
||||||
|
outputStream.use {
|
||||||
|
it.write(value)
|
||||||
|
}
|
||||||
|
} ?: throw NoSuchElementException("No value found for key $key")
|
||||||
|
}.get()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CommandLine.Spec
|
@CommandLine.Spec
|
||||||
@@ -40,14 +54,6 @@ class GetCommand : RbcsCommand() {
|
|||||||
clientCommand.configuration.profiles[profileName]
|
clientCommand.configuration.profiles[profileName]
|
||||||
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
||||||
}
|
}
|
||||||
RemoteBuildCacheClient(profile).use { client ->
|
execute(profile, key, (output?.let(Files::newOutputStream) ?: System.out))
|
||||||
client.get(key).thenApply { value ->
|
|
||||||
value?.let {
|
|
||||||
(output?.let(Files::newOutputStream) ?: System.out).use {
|
|
||||||
it.write(value)
|
|
||||||
}
|
|
||||||
} ?: throw NoSuchElementException("No value found for key $key")
|
|
||||||
}.get()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -17,7 +17,7 @@ class HealthCheckCommand : RbcsCommand() {
|
|||||||
companion object{
|
companion object{
|
||||||
private val log = createLogger<HealthCheckCommand>()
|
private val log = createLogger<HealthCheckCommand>()
|
||||||
|
|
||||||
fun run(profile : Configuration.Profile) {
|
fun execute(profile : Configuration.Profile) {
|
||||||
RemoteBuildCacheClient(profile).use { client ->
|
RemoteBuildCacheClient(profile).use { client ->
|
||||||
val random = Random(SecureRandom.getInstance("NativePRNGNonBlocking").nextLong())
|
val random = Random(SecureRandom.getInstance("NativePRNGNonBlocking").nextLong())
|
||||||
val nonce = ByteArray(0xa0)
|
val nonce = ByteArray(0xa0)
|
||||||
@@ -48,6 +48,6 @@ class HealthCheckCommand : RbcsCommand() {
|
|||||||
clientCommand.configuration.profiles[profileName]
|
clientCommand.configuration.profiles[profileName]
|
||||||
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
?: throw IllegalArgumentException("Profile $profileName does not exist in configuration")
|
||||||
}
|
}
|
||||||
run(profile)
|
execute(profile)
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -5,6 +5,7 @@ import net.woggioni.jwo.JWO
|
|||||||
import net.woggioni.jwo.NullOutputStream
|
import net.woggioni.jwo.NullOutputStream
|
||||||
import net.woggioni.rbcs.api.CacheValueMetadata
|
import net.woggioni.rbcs.api.CacheValueMetadata
|
||||||
import net.woggioni.rbcs.cli.impl.RbcsCommand
|
import net.woggioni.rbcs.cli.impl.RbcsCommand
|
||||||
|
import net.woggioni.rbcs.client.Configuration
|
||||||
import net.woggioni.rbcs.client.RemoteBuildCacheClient
|
import net.woggioni.rbcs.client.RemoteBuildCacheClient
|
||||||
import net.woggioni.rbcs.common.createLogger
|
import net.woggioni.rbcs.common.createLogger
|
||||||
import picocli.CommandLine
|
import picocli.CommandLine
|
||||||
@@ -19,8 +20,22 @@ import java.util.UUID
|
|||||||
showDefaultValues = true
|
showDefaultValues = true
|
||||||
)
|
)
|
||||||
class PutCommand : RbcsCommand() {
|
class PutCommand : RbcsCommand() {
|
||||||
companion object{
|
companion object {
|
||||||
private val log = createLogger<PutCommand>()
|
private val log = createLogger<PutCommand>()
|
||||||
|
|
||||||
|
fun execute(profile: Configuration.Profile,
|
||||||
|
actualKey : String,
|
||||||
|
inputStream: InputStream,
|
||||||
|
mimeType : String?,
|
||||||
|
contentDisposition: String?
|
||||||
|
) {
|
||||||
|
RemoteBuildCacheClient(profile).use { client ->
|
||||||
|
inputStream.use {
|
||||||
|
client.put(actualKey, it.readAllBytes(), CacheValueMetadata(contentDisposition, mimeType))
|
||||||
|
}.get()
|
||||||
|
println(profile.serverURI.resolve(actualKey))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -92,10 +107,7 @@ class PutCommand : RbcsCommand() {
|
|||||||
}
|
}
|
||||||
actualKey = key ?: UUID.randomUUID().toString()
|
actualKey = key ?: UUID.randomUUID().toString()
|
||||||
}
|
}
|
||||||
inputStream.use {
|
execute(profile, actualKey, inputStream, mimeType, contentDisposition)
|
||||||
client.put(actualKey, it.readAllBytes(), CacheValueMetadata(contentDisposition, mimeType))
|
|
||||||
}.get()
|
|
||||||
println(profile.serverURI.resolve(actualKey))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user