From a741724a6abd1dccf3db299dc28830977dfe6cd1 Mon Sep 17 00:00:00 2001 From: LaniusTrolling Date: Sun, 11 May 2025 15:30:14 -0400 Subject: [PATCH] Code style fixes 2 - reduce size of import sections --- .../kotlin/info/mechyrdia/Configuration.kt | 26 ++---- src/main/kotlin/info/mechyrdia/Factbooks.kt | 90 ++++++------------ src/main/kotlin/info/mechyrdia/JSON.kt | 4 +- .../info/mechyrdia/auth/NationStates.kt | 13 +-- .../info/mechyrdia/auth/PasswordHashers.kt | 6 +- .../info/mechyrdia/auth/SessionStorage.kt | 16 +--- .../kotlin/info/mechyrdia/auth/Sessions.kt | 21 ++--- .../kotlin/info/mechyrdia/auth/ViewsLogin.kt | 50 +++------- src/main/kotlin/info/mechyrdia/auth/WebDav.kt | 33 ++----- src/main/kotlin/info/mechyrdia/data/Bson.kt | 30 ++---- .../kotlin/info/mechyrdia/data/Comments.kt | 16 +--- src/main/kotlin/info/mechyrdia/data/Data.kt | 62 ++++--------- .../kotlin/info/mechyrdia/data/DataFiles.kt | 63 ++++--------- .../info/mechyrdia/data/MigrateFiles.kt | 9 +- .../kotlin/info/mechyrdia/data/Nations.kt | 31 +++---- .../info/mechyrdia/data/ViewComments.kt | 22 ++--- .../info/mechyrdia/data/ViewsComment.kt | 34 ++----- .../kotlin/info/mechyrdia/data/ViewsFiles.kt | 25 ++--- .../kotlin/info/mechyrdia/data/ViewsUser.kt | 26 ++---- src/main/kotlin/info/mechyrdia/data/Visits.kt | 25 ++--- src/main/kotlin/info/mechyrdia/data/Xml.kt | 12 +-- .../kotlin/info/mechyrdia/lore/April1st.kt | 9 +- .../info/mechyrdia/lore/ArticleListing.kt | 21 ++--- .../info/mechyrdia/lore/ArticleTitles.kt | 4 +- .../info/mechyrdia/lore/AssetCaching.kt | 12 +-- .../info/mechyrdia/lore/AssetCompression.kt | 25 ++--- .../info/mechyrdia/lore/AssetHashing.kt | 23 ++--- .../kotlin/info/mechyrdia/lore/FileData.kt | 12 +-- .../kotlin/info/mechyrdia/lore/FontAssets.kt | 12 +-- .../kotlin/info/mechyrdia/lore/FontDrawing.kt | 42 +++------ .../kotlin/info/mechyrdia/lore/HttpUtils.kt | 7 +- .../info/mechyrdia/lore/ParserBuilder.kt | 6 +- .../kotlin/info/mechyrdia/lore/ParserHtml.kt | 5 +- .../kotlin/info/mechyrdia/lore/ParserPlain.kt | 2 +- .../info/mechyrdia/lore/ParserPreprocess.kt | 15 +-- .../mechyrdia/lore/ParserPreprocessInclude.kt | 42 +++------ .../mechyrdia/lore/ParserPreprocessJson.kt | 13 +-- .../mechyrdia/lore/ParserPreprocessMath.kt | 21 +---- .../mechyrdia/lore/ParserPreprocessVocab.kt | 13 +-- .../kotlin/info/mechyrdia/lore/ParserRaw.kt | 2 +- .../kotlin/info/mechyrdia/lore/ParserRobot.kt | 6 +- .../kotlin/info/mechyrdia/lore/ViewBar.kt | 2 +- .../kotlin/info/mechyrdia/lore/ViewMap.kt | 2 +- .../kotlin/info/mechyrdia/lore/ViewNav.kt | 25 ++--- src/main/kotlin/info/mechyrdia/lore/ViewOg.kt | 8 +- .../kotlin/info/mechyrdia/lore/ViewTpl.kt | 7 +- .../kotlin/info/mechyrdia/lore/ViewsError.kt | 15 ++- .../kotlin/info/mechyrdia/lore/ViewsLore.kt | 28 ++---- .../kotlin/info/mechyrdia/lore/ViewsMesh.kt | 10 +- .../kotlin/info/mechyrdia/lore/ViewsPrefs.kt | 9 +- .../kotlin/info/mechyrdia/lore/ViewsQuote.kt | 41 +++------ .../kotlin/info/mechyrdia/lore/ViewsRobots.kt | 17 +--- .../kotlin/info/mechyrdia/lore/ViewsRss.kt | 36 ++------ .../kotlin/info/mechyrdia/robot/RobotApi.kt | 30 ++---- .../kotlin/info/mechyrdia/robot/RobotCodec.kt | 7 +- .../kotlin/info/mechyrdia/robot/RobotFiles.kt | 9 +- .../info/mechyrdia/robot/RobotRateLimiter.kt | 14 ++- .../info/mechyrdia/robot/RobotSchema.kt | 3 +- .../info/mechyrdia/robot/RobotService.kt | 74 ++++----------- .../info/mechyrdia/robot/RobotUserLimiter.kt | 21 ++--- .../kotlin/info/mechyrdia/robot/ViewsRobot.kt | 27 ++---- .../info/mechyrdia/route/ResourceBodies.kt | 8 +- .../info/mechyrdia/route/ResourceCsrf.kt | 10 +- .../info/mechyrdia/route/ResourceHandler.kt | 55 +++-------- .../info/mechyrdia/route/ResourceLimiter.kt | 13 +-- .../info/mechyrdia/route/ResourceMultipart.kt | 13 +-- .../info/mechyrdia/route/ResourceTypes.kt | 92 +++---------------- .../info/mechyrdia/route/ResourceWebDav.kt | 56 +++-------- 68 files changed, 463 insertions(+), 1075 deletions(-) diff --git a/src/main/kotlin/info/mechyrdia/Configuration.kt b/src/main/kotlin/info/mechyrdia/Configuration.kt index 413fd54..486c2f4 100644 --- a/src/main/kotlin/info/mechyrdia/Configuration.kt +++ b/src/main/kotlin/info/mechyrdia/Configuration.kt @@ -1,24 +1,14 @@ package info.mechyrdia -import info.mechyrdia.auth.Argon2Hasher -import info.mechyrdia.data.Id -import info.mechyrdia.data.NationData -import info.mechyrdia.data.NationUrlSlug -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.InternalSerializationApi -import kotlinx.serialization.KSerializer -import kotlinx.serialization.SerialName +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import kotlinx.serialization.* import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.PolymorphicKind -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.descriptors.buildSerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.JsonDecoder -import kotlinx.serialization.json.JsonEncoder -import kotlinx.serialization.json.JsonPrimitive -import java.io.File -import java.nio.charset.Charset +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* +import kotlinx.serialization.json.* +import java.io.* +import java.nio.charset.* @Serializable sealed class FileStorageConfig { diff --git a/src/main/kotlin/info/mechyrdia/Factbooks.kt b/src/main/kotlin/info/mechyrdia/Factbooks.kt index c4094a3..f8fe6ef 100644 --- a/src/main/kotlin/info/mechyrdia/Factbooks.kt +++ b/src/main/kotlin/info/mechyrdia/Factbooks.kt @@ -2,62 +2,29 @@ package info.mechyrdia -import info.mechyrdia.auth.ForbiddenException -import info.mechyrdia.auth.PageDoNotCacheAttributeKey -import info.mechyrdia.auth.SessionStorageMongoDB -import info.mechyrdia.auth.UserSession -import info.mechyrdia.data.ConnectionHolder -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.Id -import info.mechyrdia.lore.HttpRedirectException -import info.mechyrdia.lore.error400 -import info.mechyrdia.lore.error403 -import info.mechyrdia.lore.error403PageExpired -import info.mechyrdia.lore.error404 -import info.mechyrdia.lore.error409 -import info.mechyrdia.lore.error500 -import info.mechyrdia.lore.getVersionHeaders -import info.mechyrdia.robot.JsonRobotCodec -import info.mechyrdia.robot.RobotService -import info.mechyrdia.route.CsrfFailedException -import info.mechyrdia.route.FormUrlEncodedFormat -import info.mechyrdia.route.Root -import info.mechyrdia.route.WebDavAuthRequired -import info.mechyrdia.route.get -import info.mechyrdia.route.installWebDav -import info.mechyrdia.route.isWebDav -import info.mechyrdia.route.post -import info.mechyrdia.route.postMultipart -import info.mechyrdia.route.ws -import io.ktor.http.CacheControl -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpStatusCode -import io.ktor.http.content.CachingOptions -import io.ktor.serialization.kotlinx.KotlinxSerializationConverter -import io.ktor.serialization.kotlinx.KotlinxWebsocketSerializationConverter -import io.ktor.server.application.Application -import io.ktor.server.application.install -import io.ktor.server.application.log -import io.ktor.server.cio.CIO -import io.ktor.server.engine.embeddedServer -import io.ktor.server.html.respondHtml -import io.ktor.server.http.content.CompressedFileType -import io.ktor.server.http.content.JarFileContent -import io.ktor.server.http.content.staticResources -import io.ktor.server.plugins.MissingRequestParameterException -import io.ktor.server.plugins.autohead.AutoHeadResponse -import io.ktor.server.plugins.cachingheaders.CachingHeaders -import io.ktor.server.plugins.callid.CallId -import io.ktor.server.plugins.callid.callId -import io.ktor.server.plugins.callid.callIdMdc -import io.ktor.server.plugins.calllogging.CallLogging -import io.ktor.server.plugins.conditionalheaders.ConditionalHeaders -import io.ktor.server.plugins.contentnegotiation.ContentNegotiation -import io.ktor.server.plugins.defaultheaders.DefaultHeaders -import io.ktor.server.plugins.forwardedheaders.XForwardedHeaders -import io.ktor.server.plugins.origin -import io.ktor.server.plugins.statuspages.StatusPages +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import info.mechyrdia.robot.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.http.content.* +import io.ktor.serialization.kotlinx.* +import io.ktor.server.application.* +import io.ktor.server.cio.* +import io.ktor.server.engine.* +import io.ktor.server.html.* +import io.ktor.server.http.content.* +import io.ktor.server.plugins.* +import io.ktor.server.plugins.autohead.* +import io.ktor.server.plugins.cachingheaders.* +import io.ktor.server.plugins.callid.* +import io.ktor.server.plugins.calllogging.* +import io.ktor.server.plugins.conditionalheaders.* +import io.ktor.server.plugins.contentnegotiation.* +import io.ktor.server.plugins.defaultheaders.* +import io.ktor.server.plugins.forwardedheaders.* +import io.ktor.server.plugins.statuspages.* import io.ktor.server.request.* import io.ktor.server.resources.* import io.ktor.server.response.* @@ -65,12 +32,11 @@ import io.ktor.server.routing.* import io.ktor.server.sessions.* import io.ktor.server.sessions.serialization.* import io.ktor.server.websocket.* -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.put -import org.slf4j.event.Level -import java.io.IOException -import java.util.concurrent.atomic.AtomicLong -import kotlin.random.Random +import kotlinx.serialization.json.* +import org.slf4j.event.* +import java.io.* +import java.util.concurrent.atomic.* +import kotlin.random.* import kotlin.time.Duration.Companion.hours fun main() { diff --git a/src/main/kotlin/info/mechyrdia/JSON.kt b/src/main/kotlin/info/mechyrdia/JSON.kt index af271f6..67a6d9a 100644 --- a/src/main/kotlin/info/mechyrdia/JSON.kt +++ b/src/main/kotlin/info/mechyrdia/JSON.kt @@ -1,7 +1,7 @@ package info.mechyrdia -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json +import kotlinx.serialization.* +import kotlinx.serialization.json.* val JsonFileCodec = Json { prettyPrint = true diff --git a/src/main/kotlin/info/mechyrdia/auth/NationStates.kt b/src/main/kotlin/info/mechyrdia/auth/NationStates.kt index 9b6b29a..23557c8 100644 --- a/src/main/kotlin/info/mechyrdia/auth/NationStates.kt +++ b/src/main/kotlin/info/mechyrdia/auth/NationStates.kt @@ -1,13 +1,10 @@ package info.mechyrdia.auth -import com.github.agadar.nationstates.DefaultNationStatesImpl -import com.github.agadar.nationstates.NationStates -import com.github.agadar.nationstates.exception.NationStatesResourceNotFoundException -import com.github.agadar.nationstates.query.APIQuery -import info.mechyrdia.data.NationUrlSlug -import info.mechyrdia.data.nanoId -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runInterruptible +import com.github.agadar.nationstates.* +import com.github.agadar.nationstates.exception.* +import com.github.agadar.nationstates.query.* +import info.mechyrdia.data.* +import kotlinx.coroutines.* val NSAPI: NationStates = DefaultNationStatesImpl("Mechyrdia Factbooks ") diff --git a/src/main/kotlin/info/mechyrdia/auth/PasswordHashers.kt b/src/main/kotlin/info/mechyrdia/auth/PasswordHashers.kt index fe10350..5381c44 100644 --- a/src/main/kotlin/info/mechyrdia/auth/PasswordHashers.kt +++ b/src/main/kotlin/info/mechyrdia/auth/PasswordHashers.kt @@ -1,9 +1,7 @@ package info.mechyrdia.auth -import de.mkammerer.argon2.Argon2 -import de.mkammerer.argon2.Argon2Advanced -import de.mkammerer.argon2.Argon2Factory -import info.mechyrdia.Utf8 +import de.mkammerer.argon2.* +import info.mechyrdia.* private val argon2Instance = Argon2Factory.createAdvanced() diff --git a/src/main/kotlin/info/mechyrdia/auth/SessionStorage.kt b/src/main/kotlin/info/mechyrdia/auth/SessionStorage.kt index 9645142..38f390b 100644 --- a/src/main/kotlin/info/mechyrdia/auth/SessionStorage.kt +++ b/src/main/kotlin/info/mechyrdia/auth/SessionStorage.kt @@ -1,16 +1,10 @@ package info.mechyrdia.auth -import info.mechyrdia.JsonStorageCodec -import info.mechyrdia.data.DataDocument -import info.mechyrdia.data.DocumentTable -import info.mechyrdia.data.Id -import info.mechyrdia.data.InstantSerializer -import info.mechyrdia.data.MONGODB_ID_KEY -import info.mechyrdia.data.TableHolder -import io.ktor.server.sessions.SessionStorage -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.time.Instant +import info.mechyrdia.* +import info.mechyrdia.data.* +import io.ktor.server.sessions.* +import kotlinx.serialization.* +import java.time.* object SessionStorageMongoDB : SessionStorage { override suspend fun invalidate(id: String) { diff --git a/src/main/kotlin/info/mechyrdia/auth/Sessions.kt b/src/main/kotlin/info/mechyrdia/auth/Sessions.kt index 5df063d..c731a84 100644 --- a/src/main/kotlin/info/mechyrdia/auth/Sessions.kt +++ b/src/main/kotlin/info/mechyrdia/auth/Sessions.kt @@ -1,19 +1,12 @@ package info.mechyrdia.auth -import info.mechyrdia.data.Id -import info.mechyrdia.data.InstantSerializer -import info.mechyrdia.data.NationData -import io.ktor.server.application.ApplicationCall -import io.ktor.server.plugins.origin -import io.ktor.server.sessions.TooLateSessionSetException -import io.ktor.server.sessions.get -import io.ktor.server.sessions.sessionId -import io.ktor.server.sessions.sessions -import io.ktor.server.sessions.set -import kotlinx.serialization.Serializable -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import java.time.Instant +import info.mechyrdia.data.* +import io.ktor.server.application.* +import io.ktor.server.plugins.* +import io.ktor.server.sessions.* +import kotlinx.serialization.* +import org.slf4j.* +import java.time.* private val SessionsLogger: Logger = LoggerFactory.getLogger("info.mechyrdia.auth.SessionsKt") diff --git a/src/main/kotlin/info/mechyrdia/auth/ViewsLogin.kt b/src/main/kotlin/info/mechyrdia/auth/ViewsLogin.kt index 847d8ac..d0d4d95 100644 --- a/src/main/kotlin/info/mechyrdia/auth/ViewsLogin.kt +++ b/src/main/kotlin/info/mechyrdia/auth/ViewsLogin.kt @@ -1,44 +1,16 @@ package info.mechyrdia.auth -import info.mechyrdia.data.DataDocument -import info.mechyrdia.data.DocumentTable -import info.mechyrdia.data.Id -import info.mechyrdia.data.InstantSerializer -import info.mechyrdia.data.MONGODB_ID_KEY -import info.mechyrdia.data.NationData -import info.mechyrdia.data.NationVerifyResult -import info.mechyrdia.data.TableHolder -import info.mechyrdia.lore.page -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.lore.redirectHrefWithError -import info.mechyrdia.lore.standardNavBar -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import io.ktor.server.plugins.MissingRequestParameterException -import io.ktor.server.sessions.clear -import io.ktor.server.sessions.sessions -import io.ktor.server.sessions.set -import io.ktor.util.AttributeKey -import kotlinx.html.FormMethod -import kotlinx.html.HTML -import kotlinx.html.br -import kotlinx.html.button -import kotlinx.html.form -import kotlinx.html.h1 -import kotlinx.html.hiddenInput -import kotlinx.html.label -import kotlinx.html.p -import kotlinx.html.section -import kotlinx.html.style -import kotlinx.html.submitInput -import kotlinx.html.textInput -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.time.Instant -import kotlin.collections.set +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.plugins.* +import io.ktor.server.sessions.* +import io.ktor.util.* +import kotlinx.html.* +import kotlinx.serialization.* +import java.time.* val PageDoNotCacheAttributeKey = AttributeKey("Mechyrdia.PageDoNotCache") diff --git a/src/main/kotlin/info/mechyrdia/auth/WebDav.kt b/src/main/kotlin/info/mechyrdia/auth/WebDav.kt index e9a51b0..f01c35f 100644 --- a/src/main/kotlin/info/mechyrdia/auth/WebDav.kt +++ b/src/main/kotlin/info/mechyrdia/auth/WebDav.kt @@ -1,30 +1,15 @@ package info.mechyrdia.auth -import com.mongodb.client.model.Filters -import info.mechyrdia.data.DataDocument -import info.mechyrdia.data.DocumentTable -import info.mechyrdia.data.Id -import info.mechyrdia.data.InstantSerializer -import info.mechyrdia.data.MONGODB_ID_KEY -import info.mechyrdia.data.NationData -import info.mechyrdia.data.TableHolder -import info.mechyrdia.data.ascending -import info.mechyrdia.data.currentNation -import info.mechyrdia.data.serialName -import info.mechyrdia.lore.adminPage -import info.mechyrdia.lore.dateTime -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.lore.redirectHrefWithError -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.flow.toList +import com.mongodb.client.model.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import kotlinx.coroutines.flow.* import kotlinx.html.* -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.time.Instant +import kotlinx.serialization.* +import java.time.* @Serializable data class WebDavToken( diff --git a/src/main/kotlin/info/mechyrdia/data/Bson.kt b/src/main/kotlin/info/mechyrdia/data/Bson.kt index f56d9d5..2c19602 100644 --- a/src/main/kotlin/info/mechyrdia/data/Bson.kt +++ b/src/main/kotlin/info/mechyrdia/data/Bson.kt @@ -2,28 +2,18 @@ package info.mechyrdia.data -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.KSerializer -import kotlinx.serialization.SerializationException -import kotlinx.serialization.builtins.nullable -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.* +import kotlinx.serialization.builtins.* +import kotlinx.serialization.descriptors.* import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder -import org.bson.BsonDateTime -import org.bson.BsonReader -import org.bson.BsonWriter -import org.bson.codecs.Codec -import org.bson.codecs.DecoderContext -import org.bson.codecs.EncoderContext -import org.bson.codecs.configuration.CodecProvider -import org.bson.codecs.configuration.CodecRegistry -import org.bson.codecs.kotlinx.BsonDecoder -import org.bson.codecs.kotlinx.BsonEncoder -import org.bson.types.ObjectId -import java.time.Instant -import kotlin.math.absoluteValue +import org.bson.* +import org.bson.codecs.* +import org.bson.codecs.configuration.* +import org.bson.codecs.kotlinx.* +import org.bson.types.* +import java.time.* +import kotlin.math.* object IdCodec : Codec> { override fun getEncoderClass(): Class> { diff --git a/src/main/kotlin/info/mechyrdia/data/Comments.kt b/src/main/kotlin/info/mechyrdia/data/Comments.kt index 37262ab..4517903 100644 --- a/src/main/kotlin/info/mechyrdia/data/Comments.kt +++ b/src/main/kotlin/info/mechyrdia/data/Comments.kt @@ -1,16 +1,10 @@ package info.mechyrdia.data -import com.mongodb.client.model.Filters -import com.mongodb.client.model.Sorts -import com.mongodb.client.model.UpdateOneModel -import com.mongodb.client.model.UpdateOptions -import com.mongodb.client.model.Updates -import info.mechyrdia.concat -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.toList -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.time.Instant +import com.mongodb.client.model.* +import info.mechyrdia.* +import kotlinx.coroutines.flow.* +import kotlinx.serialization.* +import java.time.* @Serializable data class Comment( diff --git a/src/main/kotlin/info/mechyrdia/data/Data.kt b/src/main/kotlin/info/mechyrdia/data/Data.kt index df709b2..f290593 100644 --- a/src/main/kotlin/info/mechyrdia/data/Data.kt +++ b/src/main/kotlin/info/mechyrdia/data/Data.kt @@ -1,48 +1,26 @@ package info.mechyrdia.data -import com.aventrix.jnanoid.jnanoid.NanoIdUtils -import com.mongodb.ConnectionString -import com.mongodb.MongoClientSettings -import com.mongodb.MongoDriverInformation -import com.mongodb.client.model.BulkWriteOptions -import com.mongodb.client.model.Filters -import com.mongodb.client.model.IndexOptions -import com.mongodb.client.model.Indexes -import com.mongodb.client.model.ReplaceOneModel -import com.mongodb.client.model.ReplaceOptions -import com.mongodb.client.model.UpdateOptions -import com.mongodb.client.model.WriteModel +import com.aventrix.jnanoid.jnanoid.* +import com.mongodb.* +import com.mongodb.client.model.* +import com.mongodb.kotlin.client.coroutine.* import com.mongodb.kotlin.client.coroutine.MongoDatabase -import com.mongodb.kotlin.client.coroutine.expireAfter -import com.mongodb.reactivestreams.client.MongoClients -import com.mongodb.reactivestreams.client.gridfs.GridFSBucket -import com.mongodb.reactivestreams.client.gridfs.GridFSBuckets -import info.mechyrdia.auth.NsStoredToken -import info.mechyrdia.auth.SessionStorageDoc -import info.mechyrdia.auth.WebDavToken -import info.mechyrdia.robot.RobotGlobals -import kotlinx.coroutines.CompletableDeferred -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.singleOrNull -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import kotlinx.serialization.KSerializer -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import org.bson.codecs.configuration.CodecRegistries -import org.bson.codecs.kotlinx.KotlinSerializerCodecProvider -import org.bson.conversions.Bson -import java.security.SecureRandom -import java.time.Instant -import kotlin.reflect.KClass -import kotlin.reflect.KProperty -import kotlin.reflect.KProperty1 -import kotlin.reflect.full.findAnnotations +import com.mongodb.reactivestreams.client.* +import com.mongodb.reactivestreams.client.gridfs.* +import info.mechyrdia.auth.* +import info.mechyrdia.robot.* +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* +import kotlinx.serialization.* +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* +import org.bson.codecs.configuration.* +import org.bson.codecs.kotlinx.* +import org.bson.conversions.* +import java.security.* +import java.time.* +import kotlin.reflect.* +import kotlin.reflect.full.* import com.mongodb.reactivestreams.client.MongoDatabase as JMongoDatabase @Serializable(IdSerializer::class) diff --git a/src/main/kotlin/info/mechyrdia/data/DataFiles.kt b/src/main/kotlin/info/mechyrdia/data/DataFiles.kt index 6813dfa..8ac12c9 100644 --- a/src/main/kotlin/info/mechyrdia/data/DataFiles.kt +++ b/src/main/kotlin/info/mechyrdia/data/DataFiles.kt @@ -1,51 +1,24 @@ package info.mechyrdia.data -import com.mongodb.client.model.Filters -import com.mongodb.client.model.Updates -import com.mongodb.reactivestreams.client.gridfs.GridFSBucket -import info.mechyrdia.Configuration -import info.mechyrdia.FileStorageConfig -import info.mechyrdia.concat -import info.mechyrdia.lore.StoragePathAttributeKey -import info.mechyrdia.lore.forEachSuspend -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.http.defaultForFileExtension -import io.ktor.server.application.ApplicationCall -import io.ktor.server.response.respond -import io.ktor.server.response.respondBytes -import io.ktor.util.combineSafe -import io.ktor.util.moveToByteArray -import kotlinx.coroutines.CoroutineName -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.currentCoroutineContext -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.toList -import kotlinx.coroutines.flow.toSet -import kotlinx.coroutines.job -import kotlinx.coroutines.launch -import kotlinx.coroutines.reactive.asFlow -import kotlinx.coroutines.reactive.asPublisher -import kotlinx.coroutines.reactive.awaitFirst -import kotlinx.coroutines.reactive.awaitFirstOrNull -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.runInterruptible -import kotlinx.coroutines.withContext -import kotlinx.serialization.SerialName +import com.mongodb.client.model.* +import com.mongodb.reactivestreams.client.gridfs.* +import info.mechyrdia.* +import info.mechyrdia.lore.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.response.* +import io.ktor.util.* +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* +import kotlinx.coroutines.reactive.* +import kotlinx.serialization.* import kotlinx.serialization.Serializable -import org.bson.types.ObjectId -import java.io.ByteArrayOutputStream -import java.io.File -import java.nio.ByteBuffer -import java.nio.file.FileAlreadyExistsException -import java.nio.file.Files -import java.nio.file.attribute.BasicFileAttributes -import java.time.Instant -import kotlin.String +import org.bson.types.* +import java.io.* +import java.nio.* +import java.nio.file.* +import java.nio.file.attribute.* +import java.time.* import kotlin.time.Duration.Companion.hours val StoragePath.contentType: ContentType diff --git a/src/main/kotlin/info/mechyrdia/data/MigrateFiles.kt b/src/main/kotlin/info/mechyrdia/data/MigrateFiles.kt index ffad7e9..dc8ac7d 100644 --- a/src/main/kotlin/info/mechyrdia/data/MigrateFiles.kt +++ b/src/main/kotlin/info/mechyrdia/data/MigrateFiles.kt @@ -2,11 +2,10 @@ package info.mechyrdia.data -import info.mechyrdia.Configuration -import info.mechyrdia.FileStorageConfig -import info.mechyrdia.lore.mapSuspend -import kotlinx.coroutines.runBlocking -import kotlin.system.exitProcess +import info.mechyrdia.* +import info.mechyrdia.lore.* +import kotlinx.coroutines.* +import kotlin.system.* fun printUsage(): Nothing { println("Usage: ") diff --git a/src/main/kotlin/info/mechyrdia/data/Nations.kt b/src/main/kotlin/info/mechyrdia/data/Nations.kt index 5f177f8..13ddd3e 100644 --- a/src/main/kotlin/info/mechyrdia/data/Nations.kt +++ b/src/main/kotlin/info/mechyrdia/data/Nations.kt @@ -1,24 +1,17 @@ package info.mechyrdia.data -import com.github.agadar.nationstates.domain.nation.Nation -import com.github.agadar.nationstates.domain.nation.NationVerification -import com.github.agadar.nationstates.query.ShardQuery -import com.github.agadar.nationstates.shard.NationShard -import com.mongodb.client.model.Filters -import info.mechyrdia.Configuration -import info.mechyrdia.OwnerNationId -import info.mechyrdia.auth.NSAPI -import info.mechyrdia.auth.UserSession -import info.mechyrdia.auth.executeSuspend -import io.ktor.server.application.ApplicationCall -import io.ktor.server.sessions.get -import io.ktor.server.sessions.sessions -import io.ktor.util.AttributeKey -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import java.util.concurrent.ConcurrentHashMap +import com.github.agadar.nationstates.domain.nation.* +import com.github.agadar.nationstates.query.* +import com.github.agadar.nationstates.shard.* +import com.mongodb.client.model.* +import info.mechyrdia.* +import info.mechyrdia.auth.* +import io.ktor.server.application.* +import io.ktor.server.sessions.* +import io.ktor.util.* +import kotlinx.serialization.* +import org.slf4j.* +import java.util.concurrent.* private val NationsLogger: Logger = LoggerFactory.getLogger("info.mechyrdia.data.NationsKt") diff --git a/src/main/kotlin/info/mechyrdia/data/ViewComments.kt b/src/main/kotlin/info/mechyrdia/data/ViewComments.kt index e6a9610..1aec50a 100644 --- a/src/main/kotlin/info/mechyrdia/data/ViewComments.kt +++ b/src/main/kotlin/info/mechyrdia/data/ViewComments.kt @@ -1,22 +1,12 @@ package info.mechyrdia.data -import info.mechyrdia.MainDomainName -import info.mechyrdia.OwnerNationId -import info.mechyrdia.lore.ParserTree -import info.mechyrdia.lore.append -import info.mechyrdia.lore.dateTime -import info.mechyrdia.lore.mapSuspend -import info.mechyrdia.lore.parseAs -import info.mechyrdia.lore.toCommentHtml -import info.mechyrdia.lore.toFriendlyPathTitle -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope +import info.mechyrdia.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.server.application.* +import kotlinx.coroutines.* import kotlinx.html.* -import java.time.Instant +import java.time.* data class CommentRenderData( val id: Id, diff --git a/src/main/kotlin/info/mechyrdia/data/ViewsComment.kt b/src/main/kotlin/info/mechyrdia/data/ViewsComment.kt index 174a48e..c859a9e 100644 --- a/src/main/kotlin/info/mechyrdia/data/ViewsComment.kt +++ b/src/main/kotlin/info/mechyrdia/data/ViewsComment.kt @@ -1,31 +1,15 @@ package info.mechyrdia.data -import com.mongodb.client.model.Sorts -import info.mechyrdia.OwnerNationId -import info.mechyrdia.auth.ForbiddenException -import info.mechyrdia.concat -import info.mechyrdia.lore.ParserTree -import info.mechyrdia.lore.PokhwalishAlphabetFont -import info.mechyrdia.lore.TylanAlphabetFont -import info.mechyrdia.lore.append -import info.mechyrdia.lore.getImageSizeStyleValue -import info.mechyrdia.lore.getReplies -import info.mechyrdia.lore.page -import info.mechyrdia.lore.parseAs -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.lore.redirectHrefWithError -import info.mechyrdia.lore.standardNavBar -import info.mechyrdia.lore.toCommentHtml -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.flow.filterNot -import kotlinx.coroutines.flow.take -import kotlinx.coroutines.flow.toList +import com.mongodb.client.model.* +import info.mechyrdia.* +import info.mechyrdia.auth.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import kotlinx.coroutines.flow.* import kotlinx.html.* -import java.time.Instant +import java.time.* suspend fun ApplicationCall.recentCommentsPage(limit: Int?): HTML.() -> Unit { limit ?: redirectHref(Root.Comments.RecentPage(10), HttpStatusCode.Found) diff --git a/src/main/kotlin/info/mechyrdia/data/ViewsFiles.kt b/src/main/kotlin/info/mechyrdia/data/ViewsFiles.kt index 2de8a3b..8d310a6 100644 --- a/src/main/kotlin/info/mechyrdia/data/ViewsFiles.kt +++ b/src/main/kotlin/info/mechyrdia/data/ViewsFiles.kt @@ -1,22 +1,13 @@ package info.mechyrdia.data -import info.mechyrdia.auth.PageDoNotCacheAttributeKey -import info.mechyrdia.lore.adminPage -import info.mechyrdia.lore.dateTime -import info.mechyrdia.lore.mapSuspend -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.route.MultiPartPayloadPart -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.http.defaultForFileExtension -import io.ktor.server.application.ApplicationCall -import io.ktor.server.html.respondHtml -import io.ktor.server.plugins.MissingRequestParameterException -import io.ktor.server.response.respond -import io.ktor.server.response.respondBytes +import info.mechyrdia.auth.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.html.* +import io.ktor.server.plugins.* +import io.ktor.server.response.* import kotlinx.html.* fun Map.sortedAsFiles() = toList() diff --git a/src/main/kotlin/info/mechyrdia/data/ViewsUser.kt b/src/main/kotlin/info/mechyrdia/data/ViewsUser.kt index 5d48b69..3132fea 100644 --- a/src/main/kotlin/info/mechyrdia/data/ViewsUser.kt +++ b/src/main/kotlin/info/mechyrdia/data/ViewsUser.kt @@ -1,23 +1,13 @@ package info.mechyrdia.data -import com.mongodb.client.model.Updates -import info.mechyrdia.OwnerNationId -import info.mechyrdia.lore.NationProfileSidebar -import info.mechyrdia.lore.page -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.lore.standardNavBar -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.flow.toList -import kotlinx.html.HTML -import kotlinx.html.a -import kotlinx.html.h1 -import kotlinx.html.id -import kotlinx.html.p -import kotlinx.html.section +import com.mongodb.client.model.* +import info.mechyrdia.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import kotlinx.coroutines.flow.* +import kotlinx.html.* suspend fun ApplicationCall.currentUserPage(): Nothing { val currNation = currentNation() diff --git a/src/main/kotlin/info/mechyrdia/data/Visits.kt b/src/main/kotlin/info/mechyrdia/data/Visits.kt index 42b70a2..85b17ae 100644 --- a/src/main/kotlin/info/mechyrdia/data/Visits.kt +++ b/src/main/kotlin/info/mechyrdia/data/Visits.kt @@ -1,21 +1,16 @@ package info.mechyrdia.data -import com.mongodb.client.model.Accumulators -import com.mongodb.client.model.Aggregates -import com.mongodb.client.model.Filters -import com.mongodb.client.model.Updates -import info.mechyrdia.auth.UserSession -import info.mechyrdia.lore.dateTime -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.path -import io.ktor.server.request.userAgent -import io.ktor.server.sessions.sessionId -import kotlinx.coroutines.flow.firstOrNull +import com.mongodb.client.model.* +import info.mechyrdia.auth.* +import info.mechyrdia.lore.* +import io.ktor.server.application.* +import io.ktor.server.request.* +import io.ktor.server.sessions.* +import kotlinx.coroutines.flow.* import kotlinx.html.* -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import org.intellij.lang.annotations.Language -import java.time.Instant +import kotlinx.serialization.* +import org.intellij.lang.annotations.* +import java.time.* @Serializable data class PageVisitTotals( diff --git a/src/main/kotlin/info/mechyrdia/data/Xml.kt b/src/main/kotlin/info/mechyrdia/data/Xml.kt index c04f9a7..2e6c773 100644 --- a/src/main/kotlin/info/mechyrdia/data/Xml.kt +++ b/src/main/kotlin/info/mechyrdia/data/Xml.kt @@ -1,18 +1,16 @@ package info.mechyrdia.data -import info.mechyrdia.Utf8 -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.http.withCharsetIfNeeded -import io.ktor.server.application.ApplicationCall -import io.ktor.server.response.respondText +import info.mechyrdia.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.response.* import kotlinx.html.* import kotlinx.html.consumers.* import kotlinx.html.dom.* import kotlinx.html.impl.* import kotlinx.html.org.w3c.dom.events.* import kotlinx.html.stream.* -import org.w3c.dom.Document +import org.w3c.dom.* @DslMarker annotation class XmlTagMarker diff --git a/src/main/kotlin/info/mechyrdia/lore/April1st.kt b/src/main/kotlin/info/mechyrdia/lore/April1st.kt index 3905766..66d4e40 100644 --- a/src/main/kotlin/info/mechyrdia/lore/April1st.kt +++ b/src/main/kotlin/info/mechyrdia/lore/April1st.kt @@ -1,11 +1,8 @@ package info.mechyrdia.lore -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import io.ktor.server.application.ApplicationCall -import java.time.Instant -import java.time.Month -import java.time.ZoneId +import info.mechyrdia.data.* +import io.ktor.server.application.* +import java.time.* val MyTimeZone: ZoneId = ZoneId.of("America/New_York") diff --git a/src/main/kotlin/info/mechyrdia/lore/ArticleListing.kt b/src/main/kotlin/info/mechyrdia/lore/ArticleListing.kt index ccef46c..d86d0d7 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ArticleListing.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ArticleListing.kt @@ -1,19 +1,14 @@ package info.mechyrdia.lore -import info.mechyrdia.Configuration -import info.mechyrdia.OwnerNationId -import info.mechyrdia.auth.UserSession -import info.mechyrdia.concat -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import io.ktor.server.application.ApplicationCall -import io.ktor.server.sessions.get -import io.ktor.server.sessions.sessions +import info.mechyrdia.* +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.route.* +import io.ktor.server.application.* +import io.ktor.server.sessions.* import kotlinx.html.* -import java.text.Collator -import java.util.Locale +import java.text.* +import java.util.* data class ArticleNode(val name: String, val title: ArticleTitle, val subNodes: List?) diff --git a/src/main/kotlin/info/mechyrdia/lore/ArticleTitles.kt b/src/main/kotlin/info/mechyrdia/lore/ArticleTitles.kt index 63e3eef..8f72f4f 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ArticleTitles.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ArticleTitles.kt @@ -1,7 +1,7 @@ package info.mechyrdia.lore -import info.mechyrdia.concat -import info.mechyrdia.data.StoragePath +import info.mechyrdia.* +import info.mechyrdia.data.* data class ArticleTitle(val title: String, val css: String = "") diff --git a/src/main/kotlin/info/mechyrdia/lore/AssetCaching.kt b/src/main/kotlin/info/mechyrdia/lore/AssetCaching.kt index 65bd140..3b864bb 100644 --- a/src/main/kotlin/info/mechyrdia/lore/AssetCaching.kt +++ b/src/main/kotlin/info/mechyrdia/lore/AssetCaching.kt @@ -1,12 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import io.ktor.util.AttributeKey -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock -import java.time.Instant -import java.util.concurrent.ConcurrentHashMap +import info.mechyrdia.data.* +import io.ktor.util.* +import kotlinx.coroutines.sync.* +import java.time.* +import java.util.concurrent.* val StoragePathAttributeKey = AttributeKey("Mechyrdia.StoragePath") diff --git a/src/main/kotlin/info/mechyrdia/lore/AssetCompression.kt b/src/main/kotlin/info/mechyrdia/lore/AssetCompression.kt index 7aec269..512ba82 100644 --- a/src/main/kotlin/info/mechyrdia/lore/AssetCompression.kt +++ b/src/main/kotlin/info/mechyrdia/lore/AssetCompression.kt @@ -1,22 +1,13 @@ package info.mechyrdia.lore -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.respondStoredFile -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.acceptEncodingItems -import io.ktor.server.response.header -import io.ktor.server.response.respond -import io.ktor.server.response.respondBytes -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import java.io.ByteArrayOutputStream -import java.io.FilterOutputStream -import java.io.OutputStream -import java.util.zip.DeflaterOutputStream -import java.util.zip.GZIPOutputStream +import info.mechyrdia.data.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import kotlinx.coroutines.* +import java.io.* +import java.util.zip.* private val gzippedCache = CompressedCache("gzip", ::GZIPOutputStream) private val deflatedCache = CompressedCache("deflate", ::DeflaterOutputStream) diff --git a/src/main/kotlin/info/mechyrdia/lore/AssetHashing.kt b/src/main/kotlin/info/mechyrdia/lore/AssetHashing.kt index b7702b3..185f3b5 100644 --- a/src/main/kotlin/info/mechyrdia/lore/AssetHashing.kt +++ b/src/main/kotlin/info/mechyrdia/lore/AssetHashing.kt @@ -1,20 +1,13 @@ package info.mechyrdia.lore -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import io.ktor.http.content.EntityTagVersion -import io.ktor.http.content.Version -import io.ktor.server.application.ApplicationCall -import io.ktor.server.http.content.LastModifiedVersion -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.withContext -import java.io.IOException -import java.io.OutputStream -import java.security.MessageDigest -import java.util.Base64 +import info.mechyrdia.data.* +import io.ktor.http.content.* +import io.ktor.server.application.* +import io.ktor.server.http.content.* +import kotlinx.coroutines.* +import java.io.* +import java.security.* +import java.util.* private class DigestingOutputStream(stomach: MessageDigest) : OutputStream() { private var stomachStore: MessageDigest? = stomach diff --git a/src/main/kotlin/info/mechyrdia/lore/FileData.kt b/src/main/kotlin/info/mechyrdia/lore/FileData.kt index 42a887d..b957bc5 100644 --- a/src/main/kotlin/info/mechyrdia/lore/FileData.kt +++ b/src/main/kotlin/info/mechyrdia/lore/FileData.kt @@ -1,12 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock -import java.time.Instant -import kotlin.properties.ReadOnlyProperty -import kotlin.reflect.KProperty +import info.mechyrdia.data.* +import kotlinx.coroutines.sync.* +import java.time.* +import kotlin.properties.* +import kotlin.reflect.* fun storedData(path: StoragePath, loader: suspend (StoragePath) -> T?): ReadOnlyProperty T?> = object : ReadOnlyProperty T?> { private var loadedValue: T? = null diff --git a/src/main/kotlin/info/mechyrdia/lore/FontAssets.kt b/src/main/kotlin/info/mechyrdia/lore/FontAssets.kt index e9f0f41..25bd6a0 100644 --- a/src/main/kotlin/info/mechyrdia/lore/FontAssets.kt +++ b/src/main/kotlin/info/mechyrdia/lore/FontAssets.kt @@ -1,13 +1,9 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonFileCodec -import info.mechyrdia.Utf8 -import info.mechyrdia.concatenated -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import kotlinx.serialization.Serializable -import kotlinx.serialization.builtins.MapSerializer -import kotlinx.serialization.builtins.serializer +import info.mechyrdia.* +import info.mechyrdia.data.* +import kotlinx.serialization.* +import kotlinx.serialization.builtins.* @Serializable data class FontAssetSrc( diff --git a/src/main/kotlin/info/mechyrdia/lore/FontDrawing.kt b/src/main/kotlin/info/mechyrdia/lore/FontDrawing.kt index 5face4f..7052312 100644 --- a/src/main/kotlin/info/mechyrdia/lore/FontDrawing.kt +++ b/src/main/kotlin/info/mechyrdia/lore/FontDrawing.kt @@ -1,33 +1,21 @@ package info.mechyrdia.lore -import com.jaredrummler.fontreader.truetype.FontFileReader -import com.jaredrummler.fontreader.truetype.TTFFile -import com.jaredrummler.fontreader.util.GlyphSequence -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.route.KeyedEnumSerializer -import info.mechyrdia.yieldThread -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runInterruptible -import kotlinx.coroutines.withContext +import com.jaredrummler.fontreader.truetype.* +import com.jaredrummler.fontreader.util.* +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.route.* +import kotlinx.coroutines.* import kotlinx.serialization.Serializable -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import java.awt.AlphaComposite -import java.awt.Color -import java.awt.Font -import java.awt.RenderingHints -import java.awt.geom.AffineTransform -import java.awt.geom.GeneralPath -import java.awt.image.BufferedImage -import java.io.ByteArrayInputStream -import java.io.ByteArrayOutputStream -import java.io.IOException -import java.nio.IntBuffer -import javax.imageio.ImageIO -import kotlin.math.ceil -import kotlin.math.roundToInt -import kotlin.properties.ReadOnlyProperty +import org.slf4j.* +import java.awt.* +import java.awt.geom.* +import java.awt.image.* +import java.io.* +import java.nio.* +import javax.imageio.* +import kotlin.math.* +import kotlin.properties.* private val FontsLogger: Logger = LoggerFactory.getLogger("info.mechyrdia.lore.FontsKt") diff --git a/src/main/kotlin/info/mechyrdia/lore/HttpUtils.kt b/src/main/kotlin/info/mechyrdia/lore/HttpUtils.kt index 8796f77..193bb92 100644 --- a/src/main/kotlin/info/mechyrdia/lore/HttpUtils.kt +++ b/src/main/kotlin/info/mechyrdia/lore/HttpUtils.kt @@ -1,9 +1,8 @@ package info.mechyrdia.lore -import info.mechyrdia.route.ErrorMessageCookieName -import info.mechyrdia.route.href -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* data class HttpRedirectException(val url: String, val status: HttpStatusCode) : RuntimeException() diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserBuilder.kt b/src/main/kotlin/info/mechyrdia/lore/ParserBuilder.kt index 2e7204a..a03e711 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserBuilder.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserBuilder.kt @@ -1,9 +1,7 @@ package info.mechyrdia.lore -import info.mechyrdia.MainDomainName -import info.mechyrdia.concat -import info.mechyrdia.data.Comment -import info.mechyrdia.data.Id +import info.mechyrdia.* +import info.mechyrdia.data.* abstract class BuilderLexerProcessor : LexerTagFallback, LexerTextProcessor, LexerLineBreakProcessor, LexerCombiner { override fun processInvalidTag(env: LexerTagEnvironment, tag: String, param: String?, subNodes: ParserTree) { diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserHtml.kt b/src/main/kotlin/info/mechyrdia/lore/ParserHtml.kt index dee7ff7..c066afb 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserHtml.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserHtml.kt @@ -1,11 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonStorageCodec -import info.mechyrdia.concat +import info.mechyrdia.* import kotlinx.html.* import kotlinx.html.org.w3c.dom.events.* import kotlinx.html.stream.* -import java.time.Instant +import java.time.* typealias HtmlBuilderContext = Unit typealias HtmlBuilderSubject = TagConsumer<*>.() -> Any? diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPlain.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPlain.kt index 0c1b697..2271241 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPlain.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPlain.kt @@ -1,6 +1,6 @@ package info.mechyrdia.lore -import info.mechyrdia.concat +import info.mechyrdia.* typealias PlainTextBuilderContext = Unit typealias PlainTextBuilderSubject = String diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocess.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocess.kt index 0b934f9..4c5e7ae 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocess.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocess.kt @@ -1,15 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonStorageCodec -import info.mechyrdia.concat -import info.mechyrdia.data.StoragePath -import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.joinAll -import kotlinx.coroutines.launch -import java.time.Instant -import kotlin.math.roundToInt +import info.mechyrdia.* +import info.mechyrdia.data.* +import kotlinx.coroutines.* +import java.time.* +import kotlin.math.* class PreProcessorContext private constructor( val variables: MutableMap, diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessInclude.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessInclude.kt index e2ae272..d1edff4 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessInclude.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessInclude.kt @@ -1,35 +1,17 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonStorageCodec -import info.mechyrdia.Utf8 -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import io.ktor.util.hex -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runInterruptible -import kotlinx.coroutines.suspendCancellableCoroutine -import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonNull -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive -import kotlinx.serialization.json.booleanOrNull -import kotlinx.serialization.json.double -import kotlinx.serialization.json.intOrNull -import java.security.MessageDigest -import java.util.concurrent.ConcurrentHashMap -import java.util.concurrent.locks.ReentrantLock -import java.util.function.Consumer -import javax.script.Compilable -import javax.script.CompiledScript -import javax.script.ScriptEngineManager -import javax.script.SimpleBindings -import kotlin.concurrent.withLock -import kotlin.coroutines.Continuation -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException -import kotlin.coroutines.startCoroutine +import info.mechyrdia.* +import info.mechyrdia.data.* +import io.ktor.util.* +import kotlinx.coroutines.* +import kotlinx.serialization.json.* +import java.security.* +import java.util.concurrent.* +import java.util.concurrent.locks.* +import java.util.function.* +import javax.script.* +import kotlin.concurrent.* +import kotlin.coroutines.* object PreProcessorTemplateLoader { suspend fun loadTemplate(name: String): ParserTree { diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessJson.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessJson.kt index 8c7d0f4..07d4c42 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessJson.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessJson.kt @@ -1,15 +1,8 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonStorageCodec -import info.mechyrdia.Utf8 -import info.mechyrdia.concat -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonNull -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.JsonPrimitive +import info.mechyrdia.* +import info.mechyrdia.data.* +import kotlinx.serialization.json.* fun JsonElement.toPreProcessTree(): ParserTree = when (this) { JsonNull -> emptyList() diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessMath.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessMath.kt index 89cfd44..7251d7d 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessMath.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessMath.kt @@ -1,24 +1,7 @@ package info.mechyrdia.lore -import java.time.Instant -import kotlin.math.acos -import kotlin.math.asin -import kotlin.math.atan -import kotlin.math.atan2 -import kotlin.math.cbrt -import kotlin.math.ceil -import kotlin.math.cos -import kotlin.math.floor -import kotlin.math.hypot -import kotlin.math.log -import kotlin.math.max -import kotlin.math.min -import kotlin.math.pow -import kotlin.math.round -import kotlin.math.sin -import kotlin.math.sqrt -import kotlin.math.tan -import kotlin.math.truncate +import java.time.* +import kotlin.math.* fun ParserTree.treeToNumberOrNull(convert: String.() -> T?) = treeToText().convert() diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessVocab.kt b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessVocab.kt index 12d0137..645e793 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessVocab.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserPreprocessVocab.kt @@ -1,14 +1,9 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonStorageCodec -import kotlinx.html.div -import kotlinx.html.form -import kotlinx.html.span -import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonContentPolymorphicSerializer -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonPrimitive +import info.mechyrdia.* +import kotlinx.html.* +import kotlinx.serialization.* +import kotlinx.serialization.json.* @Serializable data class LangVocabInputWordType( diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserRaw.kt b/src/main/kotlin/info/mechyrdia/lore/ParserRaw.kt index c0b5b39..76e9d7d 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserRaw.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserRaw.kt @@ -1,7 +1,7 @@ package info.mechyrdia.lore import kotlinx.html.* -import java.time.Instant +import java.time.* fun String.toRawLink() = substringBeforeLast('#').sanitizeLink().toInternalUrl() + "?format=raw" diff --git a/src/main/kotlin/info/mechyrdia/lore/ParserRobot.kt b/src/main/kotlin/info/mechyrdia/lore/ParserRobot.kt index e72a20b..58e17fd 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ParserRobot.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ParserRobot.kt @@ -1,8 +1,8 @@ package info.mechyrdia.lore -import info.mechyrdia.concat -import info.mechyrdia.robot.toOpenAiName -import java.time.Instant +import info.mechyrdia.* +import info.mechyrdia.robot.* +import java.time.* fun String.toRobotUrl(context: RobotTextContext): String { val filePath = if (startsWith("/")) diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewBar.kt b/src/main/kotlin/info/mechyrdia/lore/ViewBar.kt index 0f415fe..8578ed0 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewBar.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewBar.kt @@ -1,6 +1,6 @@ package info.mechyrdia.lore -import info.mechyrdia.data.NationData +import info.mechyrdia.data.* import kotlinx.html.* abstract class Sidebar { diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewMap.kt b/src/main/kotlin/info/mechyrdia/lore/ViewMap.kt index 141257b..d71ceea 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewMap.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewMap.kt @@ -1,6 +1,6 @@ package info.mechyrdia.lore -import info.mechyrdia.data.StoragePath +import info.mechyrdia.data.* import io.ktor.server.application.* fun ApplicationCall.galaxyMapPage(): StoragePath { diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewNav.kt b/src/main/kotlin/info/mechyrdia/lore/ViewNav.kt index ea7f749..85515f6 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewNav.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewNav.kt @@ -1,23 +1,14 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonFileCodec -import info.mechyrdia.OwnerNationId -import info.mechyrdia.Utf8 -import info.mechyrdia.auth.createCsrfToken -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.currentNation -import info.mechyrdia.robot.RobotService -import info.mechyrdia.robot.RobotServiceStatus -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import io.ktor.server.application.ApplicationCall +import info.mechyrdia.* +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.robot.* +import info.mechyrdia.route.* +import io.ktor.server.application.* import kotlinx.html.* -import kotlinx.serialization.Serializable -import kotlinx.serialization.builtins.ListSerializer -import kotlin.collections.component1 -import kotlin.collections.component2 -import kotlin.collections.set +import kotlinx.serialization.* +import kotlinx.serialization.builtins.* @Serializable private data class ExternalLink( diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewOg.kt b/src/main/kotlin/info/mechyrdia/lore/ViewOg.kt index 2e22be2..ebe0a4d 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewOg.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewOg.kt @@ -1,10 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.MainDomainName -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.path +import info.mechyrdia.* +import io.ktor.server.application.* +import io.ktor.server.request.* import kotlinx.html.* -import kotlinx.serialization.Serializable +import kotlinx.serialization.* @Serializable data class OpenGraphData( diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewTpl.kt b/src/main/kotlin/info/mechyrdia/lore/ViewTpl.kt index 7e0c4cc..1a04627 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewTpl.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewTpl.kt @@ -1,11 +1,8 @@ package info.mechyrdia.lore -import io.ktor.server.application.ApplicationCall +import io.ktor.server.application.* import kotlinx.html.* -import java.time.Instant -import kotlin.collections.List -import kotlin.collections.listOf -import kotlin.collections.set +import java.time.* private val preloadFonts = listOf( "DejaVuSans-Bold.woff", diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsError.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsError.kt index f649fee..7b33bf9 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsError.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsError.kt @@ -1,14 +1,11 @@ package info.mechyrdia.lore -import info.mechyrdia.OwnerNationId -import info.mechyrdia.data.currentNation -import info.mechyrdia.route.CsrfProtectedResourcePayload -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import io.ktor.http.HttpHeaders -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.header -import io.ktor.server.request.uri +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.request.* import kotlinx.html.* suspend fun ApplicationCall.errorPage(title: String, body: FlowContent.() -> Unit): HTML.() -> Unit { diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsLore.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsLore.kt index bc999ce..1bc47f5 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsLore.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsLore.kt @@ -1,27 +1,13 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonFileCodec -import info.mechyrdia.data.Comment -import info.mechyrdia.data.CommentRenderData -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.NationData -import info.mechyrdia.data.PageVisitTotals -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.commentBox -import info.mechyrdia.data.commentInput -import info.mechyrdia.data.currentNation -import info.mechyrdia.data.guestbook -import info.mechyrdia.data.nationCache -import info.mechyrdia.data.processGuestbook -import info.mechyrdia.route.KeyedEnumSerializer -import info.mechyrdia.route.Root -import info.mechyrdia.route.href -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.flow.toList +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.route.* +import io.ktor.server.application.* +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* import kotlinx.html.* -import kotlinx.serialization.Serializable +import kotlinx.serialization.* @Serializable data class IntroMetaData( diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsMesh.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsMesh.kt index c94f2d1..dfdfc0f 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsMesh.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsMesh.kt @@ -1,11 +1,9 @@ package info.mechyrdia.lore -import info.mechyrdia.MainDomainName -import info.mechyrdia.Utf8 -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.path +import info.mechyrdia.* +import info.mechyrdia.data.* +import io.ktor.server.application.* +import io.ktor.server.request.* import kotlinx.html.* private val meshDir = StoragePath.assetDir / "meshes" diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsPrefs.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsPrefs.kt index e122e88..8b90a68 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsPrefs.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsPrefs.kt @@ -1,11 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.auth.PageDoNotCacheAttributeKey -import info.mechyrdia.route.KeyedEnumSerializer -import io.ktor.server.application.ApplicationCall +import info.mechyrdia.auth.* +import info.mechyrdia.route.* +import io.ktor.server.application.* import kotlinx.html.* -import kotlinx.serialization.Serializable -import kotlinx.serialization.serializer +import kotlinx.serialization.* @Serializable(PageThemeSerializer::class) enum class PageTheme(val attributeValue: String?) { diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsQuote.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsQuote.kt index 50ccbdf..87d8286 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsQuote.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsQuote.kt @@ -1,35 +1,16 @@ package info.mechyrdia.lore -import info.mechyrdia.JsonFileCodec -import info.mechyrdia.MainDomainName -import info.mechyrdia.Utf8 -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.XmlTagConsumer -import info.mechyrdia.data.declaration -import info.mechyrdia.data.respondXml -import info.mechyrdia.data.root -import info.mechyrdia.route.KeyedEnumSerializer -import io.ktor.http.ContentType -import io.ktor.server.application.ApplicationCall -import io.ktor.server.html.respondHtml -import io.ktor.server.response.respondText -import kotlinx.html.Entities -import kotlinx.html.FlowContent -import kotlinx.html.HTML -import kotlinx.html.a -import kotlinx.html.blockQuote -import kotlinx.html.h1 -import kotlinx.html.id -import kotlinx.html.img -import kotlinx.html.p -import kotlinx.html.section -import kotlinx.html.style -import kotlinx.html.unsafe -import kotlinx.serialization.Serializable -import kotlinx.serialization.builtins.ListSerializer -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.put +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.route.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.html.* +import io.ktor.server.response.* +import kotlinx.html.* +import kotlinx.serialization.* +import kotlinx.serialization.builtins.* +import kotlinx.serialization.json.* @Serializable data class Quote( diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsRobots.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsRobots.kt index 0706e90..8bc0c5b 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsRobots.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsRobots.kt @@ -1,17 +1,10 @@ package info.mechyrdia.lore -import info.mechyrdia.MainDomainName -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.XmlInsertable -import info.mechyrdia.data.XmlTag -import info.mechyrdia.data.XmlTagConsumer -import info.mechyrdia.data.declaration -import info.mechyrdia.data.root -import io.ktor.server.application.ApplicationCall -import java.time.Instant -import java.time.ZoneId -import java.time.format.DateTimeFormatter +import info.mechyrdia.* +import info.mechyrdia.data.* +import io.ktor.server.application.* +import java.time.* +import java.time.format.* private val AVERAGE_FACTBOOK_INTRO_CHANGEFREQ = SitemapChangeFrequency.DAILY private val AVERAGE_FACTBOOK_PAGE_CHANGEFREQ = SitemapChangeFrequency.HOURLY diff --git a/src/main/kotlin/info/mechyrdia/lore/ViewsRss.kt b/src/main/kotlin/info/mechyrdia/lore/ViewsRss.kt index 3a7b6f3..511cf37 100644 --- a/src/main/kotlin/info/mechyrdia/lore/ViewsRss.kt +++ b/src/main/kotlin/info/mechyrdia/lore/ViewsRss.kt @@ -1,33 +1,13 @@ package info.mechyrdia.lore -import com.mongodb.client.model.Sorts -import info.mechyrdia.MainDomainName -import info.mechyrdia.OwnerNationId -import info.mechyrdia.concat -import info.mechyrdia.data.Comment -import info.mechyrdia.data.CommentRenderData -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.StoredFileStats -import info.mechyrdia.data.XmlInsertable -import info.mechyrdia.data.XmlTag -import info.mechyrdia.data.XmlTagConsumer -import info.mechyrdia.data.currentNation -import info.mechyrdia.data.declaration -import info.mechyrdia.data.nationCache -import info.mechyrdia.data.respondXml -import info.mechyrdia.data.root -import info.mechyrdia.data.serialName -import io.ktor.http.ContentType -import io.ktor.http.HttpStatusCode -import io.ktor.http.defaultForFileExtension -import io.ktor.server.application.ApplicationCall -import kotlinx.coroutines.flow.filterNot -import kotlinx.coroutines.flow.take -import kotlinx.coroutines.flow.toList -import java.time.Instant -import java.time.ZoneOffset -import java.time.format.DateTimeFormatter +import com.mongodb.client.model.* +import info.mechyrdia.* +import info.mechyrdia.data.* +import io.ktor.http.* +import io.ktor.server.application.* +import kotlinx.coroutines.flow.* +import java.time.* +import java.time.format.* suspend fun ApplicationCall.respondRss(rss: RssChannel) { respondXml(contentType = ContentType.Application.Rss) { rss(rss) } diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotApi.kt b/src/main/kotlin/info/mechyrdia/robot/RobotApi.kt index 8e9506d..3d44665 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotApi.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotApi.kt @@ -1,26 +1,14 @@ package info.mechyrdia.robot -import io.ktor.client.HttpClient -import io.ktor.client.call.body -import io.ktor.client.plugins.sse.sse -import io.ktor.client.request.HttpRequestBuilder -import io.ktor.client.request.delete -import io.ktor.client.request.forms.formData -import io.ktor.client.request.forms.submitFormWithBinaryData -import io.ktor.client.request.get -import io.ktor.client.request.post -import io.ktor.client.request.setBody -import io.ktor.http.ContentType -import io.ktor.http.contentType -import io.ktor.http.parameters -import io.ktor.sse.ServerSentEvent -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.currentCoroutineContext -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.flow.shareIn +import io.ktor.client.* +import io.ktor.client.call.* +import io.ktor.client.plugins.sse.* +import io.ktor.client.request.* +import io.ktor.client.request.forms.* +import io.ktor.http.* +import io.ktor.sse.* +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* @JvmInline value class RobotClient( diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotCodec.kt b/src/main/kotlin/info/mechyrdia/robot/RobotCodec.kt index a989511..6f53232 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotCodec.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotCodec.kt @@ -1,9 +1,8 @@ package info.mechyrdia.robot -import io.ktor.http.Parameters -import io.ktor.http.formUrlEncode -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json +import io.ktor.http.* +import kotlinx.serialization.* +import kotlinx.serialization.json.* @OptIn(ExperimentalSerializationApi::class) val JsonRobotCodec = Json { diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotFiles.kt b/src/main/kotlin/info/mechyrdia/robot/RobotFiles.kt index 34a0a9d..58a74b0 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotFiles.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotFiles.kt @@ -1,11 +1,8 @@ package info.mechyrdia.robot -import info.mechyrdia.Utf8 -import io.ktor.client.request.forms.FormBuilder -import io.ktor.http.ContentType -import io.ktor.http.Headers -import io.ktor.http.HttpHeaders -import io.ktor.http.append +import info.mechyrdia.* +import io.ktor.client.request.forms.* +import io.ktor.http.* class FileUpload( val content: ByteArray, diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotRateLimiter.kt b/src/main/kotlin/info/mechyrdia/robot/RobotRateLimiter.kt index c3e0e33..f5388d9 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotRateLimiter.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotRateLimiter.kt @@ -1,13 +1,11 @@ package info.mechyrdia.robot -import io.ktor.client.plugins.api.createClientPlugin -import io.ktor.util.AttributeKey -import io.ktor.util.Attributes -import kotlinx.coroutines.delay -import java.time.Instant -import java.util.concurrent.atomic.AtomicInteger -import java.util.concurrent.atomic.AtomicLong -import kotlin.random.Random +import io.ktor.client.plugins.api.* +import io.ktor.util.* +import kotlinx.coroutines.* +import java.time.* +import java.util.concurrent.atomic.* +import kotlin.random.* import kotlin.time.Duration.Companion.seconds private val DurationRegex = Regex("([0-9]+h)?([0-9]+m)?([0-9]+s)?") diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotSchema.kt b/src/main/kotlin/info/mechyrdia/robot/RobotSchema.kt index 63e244d..c5acd44 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotSchema.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotSchema.kt @@ -1,7 +1,6 @@ package info.mechyrdia.robot -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable +import kotlinx.serialization.* @Serializable @JvmInline diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotService.kt b/src/main/kotlin/info/mechyrdia/robot/RobotService.kt index a3501d0..9d7eaeb 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotService.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotService.kt @@ -1,61 +1,25 @@ package info.mechyrdia.robot -import com.aallam.ktoken.Encoding -import com.aallam.ktoken.Tokenizer -import info.mechyrdia.Configuration -import info.mechyrdia.MainDomainName -import info.mechyrdia.OpenAiConfig -import info.mechyrdia.Utf8 -import info.mechyrdia.concat -import info.mechyrdia.data.DataDocument -import info.mechyrdia.data.DocumentTable -import info.mechyrdia.data.Id -import info.mechyrdia.data.InstantNullableSerializer -import info.mechyrdia.data.MONGODB_ID_KEY -import info.mechyrdia.data.NationData -import info.mechyrdia.data.TableHolder -import info.mechyrdia.lore.RobotFactbookLoader -import io.ktor.client.HttpClient -import io.ktor.client.engine.java.Java -import io.ktor.client.plugins.ClientRequestException -import io.ktor.client.plugins.HttpRequestRetry -import io.ktor.client.plugins.contentnegotiation.ContentNegotiation -import io.ktor.client.plugins.defaultRequest -import io.ktor.client.plugins.logging.LogLevel -import io.ktor.client.plugins.logging.Logging -import io.ktor.client.plugins.sse.SSE -import io.ktor.client.request.header -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.withCharset -import io.ktor.serialization.kotlinx.json.json -import kotlinx.coroutines.CoroutineName -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Deferred -import kotlinx.coroutines.Job -import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll -import kotlinx.coroutines.currentCoroutineContext -import kotlinx.coroutines.delay -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.filter -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.mapNotNull -import kotlinx.coroutines.flow.onCompletion -import kotlinx.coroutines.flow.onEach -import kotlinx.coroutines.job -import kotlinx.coroutines.launch -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable +import com.aallam.ktoken.* +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import io.ktor.client.* +import io.ktor.client.engine.java.* +import io.ktor.client.plugins.* +import io.ktor.client.plugins.contentnegotiation.* +import io.ktor.client.plugins.logging.* +import io.ktor.client.plugins.sse.* +import io.ktor.client.request.* +import io.ktor.http.* +import io.ktor.serialization.kotlinx.json.* +import kotlinx.coroutines.* +import kotlinx.coroutines.flow.* +import kotlinx.serialization.* +import org.slf4j.* import org.slf4j.Logger -import org.slf4j.LoggerFactory -import java.time.Instant -import kotlin.collections.component1 -import kotlin.collections.component2 -import kotlin.collections.set -import kotlin.random.Random +import java.time.* +import kotlin.random.* import kotlin.time.Duration.Companion.minutes private val RobotServiceLogger: Logger = LoggerFactory.getLogger("info.mechyrdia.robot.RobotServiceKt") diff --git a/src/main/kotlin/info/mechyrdia/robot/RobotUserLimiter.kt b/src/main/kotlin/info/mechyrdia/robot/RobotUserLimiter.kt index c1a5ff1..e46a5fe 100644 --- a/src/main/kotlin/info/mechyrdia/robot/RobotUserLimiter.kt +++ b/src/main/kotlin/info/mechyrdia/robot/RobotUserLimiter.kt @@ -1,20 +1,11 @@ package info.mechyrdia.robot -import com.mongodb.client.model.Filters -import com.mongodb.client.model.Updates -import info.mechyrdia.OwnerNationId -import info.mechyrdia.data.DataDocument -import info.mechyrdia.data.DocumentTable -import info.mechyrdia.data.Id -import info.mechyrdia.data.MONGODB_ID_KEY -import info.mechyrdia.data.NationData -import info.mechyrdia.data.TableHolder -import info.mechyrdia.data.ascending -import info.mechyrdia.data.serialName -import info.mechyrdia.lore.MyTimeZone -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.time.Instant +import com.mongodb.client.model.* +import info.mechyrdia.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import kotlinx.serialization.* +import java.time.* @Serializable data class RobotUser( diff --git a/src/main/kotlin/info/mechyrdia/robot/ViewsRobot.kt b/src/main/kotlin/info/mechyrdia/robot/ViewsRobot.kt index 1e36cae..c847a83 100644 --- a/src/main/kotlin/info/mechyrdia/robot/ViewsRobot.kt +++ b/src/main/kotlin/info/mechyrdia/robot/ViewsRobot.kt @@ -1,24 +1,13 @@ package info.mechyrdia.robot -import info.mechyrdia.auth.createCsrfToken -import info.mechyrdia.data.currentNation -import info.mechyrdia.lore.adminPage -import info.mechyrdia.lore.page -import info.mechyrdia.lore.redirectHrefWithError -import info.mechyrdia.lore.standardNavBar -import info.mechyrdia.route.Root -import info.mechyrdia.route.checkCsrfToken -import info.mechyrdia.route.href -import info.mechyrdia.route.installCsrfToken -import io.ktor.server.application.ApplicationCall -import io.ktor.server.websocket.DefaultWebSocketServerSession -import io.ktor.server.websocket.sendSerialized -import io.ktor.websocket.CloseReason -import io.ktor.websocket.CloseReason.Codes -import io.ktor.websocket.Frame -import io.ktor.websocket.WebSocketSession -import io.ktor.websocket.close -import io.ktor.websocket.readText +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import info.mechyrdia.route.* +import io.ktor.server.application.* +import io.ktor.server.websocket.* +import io.ktor.websocket.* +import io.ktor.websocket.CloseReason.* import kotlinx.html.* suspend fun ApplicationCall.robotPage(): HTML.() -> Unit { diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceBodies.kt b/src/main/kotlin/info/mechyrdia/route/ResourceBodies.kt index 1a43760..66063c7 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceBodies.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceBodies.kt @@ -1,10 +1,10 @@ package info.mechyrdia.route -import info.mechyrdia.auth.WebDavToken -import info.mechyrdia.data.Id -import info.mechyrdia.lore.TextAlignment +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* import kotlinx.html.* -import kotlinx.serialization.Serializable +import kotlinx.serialization.* @Serializable class LoginPayload(override val csrfToken: String? = null, val nation: String, val checksum: String, val tokenId: String) : CsrfProtectedResourcePayload diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceCsrf.kt b/src/main/kotlin/info/mechyrdia/route/ResourceCsrf.kt index d9e6330..b769435 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceCsrf.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceCsrf.kt @@ -1,12 +1,10 @@ package info.mechyrdia.route -import info.mechyrdia.auth.createCsrfToken -import info.mechyrdia.auth.retrieveCsrfToken -import io.ktor.server.application.ApplicationCall -import io.ktor.server.request.uri +import info.mechyrdia.auth.* +import io.ktor.server.application.* +import io.ktor.server.request.* import kotlinx.html.* -import java.time.Instant -import kotlin.collections.set +import java.time.* data class CsrfFailedException(override val message: String, val payload: CsrfProtectedResourcePayload?) : RuntimeException(message) diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceHandler.kt b/src/main/kotlin/info/mechyrdia/route/ResourceHandler.kt index f8ed9af..dafa43b 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceHandler.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceHandler.kt @@ -1,50 +1,25 @@ package info.mechyrdia.route -import io.ktor.http.URLBuilder -import io.ktor.http.formUrlEncode -import io.ktor.http.fullPath -import io.ktor.http.parseUrlEncodedParameters -import io.ktor.resources.serialization.ResourcesFormat -import io.ktor.server.application.Application -import io.ktor.server.application.ApplicationCall -import io.ktor.server.application.ApplicationCallPipeline -import io.ktor.server.application.application +import io.ktor.http.* +import io.ktor.resources.serialization.* +import io.ktor.server.application.* import io.ktor.server.application.call -import io.ktor.server.application.createRouteScopedPlugin -import io.ktor.server.application.hooks.CallSetup -import io.ktor.server.application.plugin -import io.ktor.server.plugins.BadRequestException -import io.ktor.server.request.receiveMultipart -import io.ktor.server.request.uri -import io.ktor.server.resources.Resources -import io.ktor.server.resources.get -import io.ktor.server.resources.href +import io.ktor.server.application.hooks.* +import io.ktor.server.plugins.* +import io.ktor.server.request.* +import io.ktor.server.resources.* import io.ktor.server.resources.post -import io.ktor.server.resources.resource import io.ktor.server.routing.Route import io.ktor.server.routing.RoutingContext -import io.ktor.server.routing.application -import io.ktor.server.routing.intercept -import io.ktor.server.websocket.DefaultWebSocketServerSession -import io.ktor.server.websocket.WebSocketServerSession -import io.ktor.server.websocket.application -import io.ktor.server.websocket.webSocket -import io.ktor.util.AttributeKey -import io.ktor.util.pipeline.PipelineContext -import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.KSerializer -import kotlinx.serialization.SerializationStrategy -import kotlinx.serialization.StringFormat -import kotlinx.serialization.builtins.nullable -import kotlinx.serialization.builtins.serializer -import kotlinx.serialization.descriptors.PrimitiveKind -import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder +import io.ktor.server.websocket.* +import io.ktor.util.* +import kotlinx.serialization.* +import kotlinx.serialization.builtins.* +import kotlinx.serialization.descriptors.* +import kotlinx.serialization.encoding.* import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.modules.SerializersModule -import kotlinx.serialization.serializer -import kotlin.enums.EnumEntries +import kotlinx.serialization.modules.* +import kotlin.enums.* interface ResourceHandler { suspend fun RoutingContext.handleCall() diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceLimiter.kt b/src/main/kotlin/info/mechyrdia/route/ResourceLimiter.kt index a47174d..ab2045a 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceLimiter.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceLimiter.kt @@ -1,15 +1,8 @@ package info.mechyrdia.route -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.DelicateCoroutinesApi -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.channels.Channel -import kotlinx.coroutines.channels.produce -import kotlinx.coroutines.currentCoroutineContext -import kotlinx.coroutines.delay -import kotlinx.coroutines.isActive -import kotlin.time.Duration +import kotlinx.coroutines.* +import kotlinx.coroutines.channels.* +import kotlin.time.* import kotlin.time.Duration.Companion.milliseconds class TickingLimiter @OptIn(DelicateCoroutinesApi::class) constructor(interval: Duration, scope: CoroutineScope = GlobalScope) { diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceMultipart.kt b/src/main/kotlin/info/mechyrdia/route/ResourceMultipart.kt index 2257e5d..6d97e9c 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceMultipart.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceMultipart.kt @@ -1,14 +1,9 @@ package info.mechyrdia.route -import io.ktor.http.ContentDisposition -import io.ktor.http.ContentType -import io.ktor.http.Headers -import io.ktor.http.HttpHeaders -import io.ktor.http.content.MultiPartData -import io.ktor.http.content.PartData -import io.ktor.http.content.forEachPart -import io.ktor.utils.io.toByteArray -import kotlin.reflect.full.companionObjectInstance +import io.ktor.http.* +import io.ktor.http.content.* +import io.ktor.utils.io.* +import kotlin.reflect.full.* interface MultiPartPayload : AutoCloseable { val payload: List diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceTypes.kt b/src/main/kotlin/info/mechyrdia/route/ResourceTypes.kt index e21440f..ee8c4ba 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceTypes.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceTypes.kt @@ -1,83 +1,19 @@ package info.mechyrdia.route -import info.mechyrdia.auth.adminDeleteWebDavToken -import info.mechyrdia.auth.adminObtainWebDavToken -import info.mechyrdia.auth.adminRequestWebDavToken -import info.mechyrdia.auth.loginPage -import info.mechyrdia.auth.loginRoute -import info.mechyrdia.auth.logoutRoute -import info.mechyrdia.concat -import info.mechyrdia.data.Comment -import info.mechyrdia.data.Id -import info.mechyrdia.data.NationUrlSlug -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.adminBanUserRoute -import info.mechyrdia.data.adminConfirmDeleteFile -import info.mechyrdia.data.adminConfirmRemoveDirectory -import info.mechyrdia.data.adminDeleteFile -import info.mechyrdia.data.adminDoCopyFile -import info.mechyrdia.data.adminMakeDirectory -import info.mechyrdia.data.adminNationOnly -import info.mechyrdia.data.adminOverwriteFile -import info.mechyrdia.data.adminPreviewFile -import info.mechyrdia.data.adminRemoveDirectory -import info.mechyrdia.data.adminShowCopyFile -import info.mechyrdia.data.adminUnbanUserRoute -import info.mechyrdia.data.adminUploadFile -import info.mechyrdia.data.adminViewVfs -import info.mechyrdia.data.commentHelpPage -import info.mechyrdia.data.currentUserPage -import info.mechyrdia.data.deleteCommentPage -import info.mechyrdia.data.deleteCommentRoute -import info.mechyrdia.data.editCommentRoute -import info.mechyrdia.data.newCommentRoute -import info.mechyrdia.data.recentCommentsPage -import info.mechyrdia.data.respondStoredFile -import info.mechyrdia.data.respondXml -import info.mechyrdia.data.userPage -import info.mechyrdia.data.viewCommentRoute -import info.mechyrdia.lore.LoreArticleFormat -import info.mechyrdia.lore.MechyrdiaSansFont -import info.mechyrdia.lore.ParserTree -import info.mechyrdia.lore.PokhwalishAlphabetFont -import info.mechyrdia.lore.QuoteFormat -import info.mechyrdia.lore.TylanAlphabetFont -import info.mechyrdia.lore.buildSitemap -import info.mechyrdia.lore.clientSettingsPage -import info.mechyrdia.lore.galaxyMapPage -import info.mechyrdia.lore.generateRecentPageEdits -import info.mechyrdia.lore.loadFontsJson -import info.mechyrdia.lore.loreArticlePage -import info.mechyrdia.lore.loreIntroPage -import info.mechyrdia.lore.meshView -import info.mechyrdia.lore.parseAs -import info.mechyrdia.lore.randomQuote -import info.mechyrdia.lore.recentCommentsRssFeedGenerator -import info.mechyrdia.lore.redirectHref -import info.mechyrdia.lore.respondAsset -import info.mechyrdia.lore.respondQuote -import info.mechyrdia.lore.respondRss -import info.mechyrdia.lore.sitemap -import info.mechyrdia.lore.toCommentHtml -import info.mechyrdia.lore.toFragmentString -import info.mechyrdia.robot.RobotService -import info.mechyrdia.robot.robotConversation -import info.mechyrdia.robot.robotManagementPage -import info.mechyrdia.robot.robotPage -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpStatusCode -import io.ktor.resources.Resource -import io.ktor.server.application.ApplicationCall -import io.ktor.server.html.respondHtml -import io.ktor.server.plugins.MissingRequestParameterException -import io.ktor.server.response.header -import io.ktor.server.response.respondBytes -import io.ktor.server.response.respondText -import io.ktor.server.response.respondTextWriter -import io.ktor.server.routing.RoutingContext -import io.ktor.server.websocket.DefaultWebSocketServerSession -import io.ktor.util.AttributeKey +import info.mechyrdia.* +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import info.mechyrdia.robot.* +import io.ktor.http.* +import io.ktor.resources.* +import io.ktor.server.application.* +import io.ktor.server.html.* +import io.ktor.server.plugins.* +import io.ktor.server.response.* +import io.ktor.server.routing.* +import io.ktor.server.websocket.* +import io.ktor.util.* const val ErrorMessageCookieName = "ERROR_MSG" diff --git a/src/main/kotlin/info/mechyrdia/route/ResourceWebDav.kt b/src/main/kotlin/info/mechyrdia/route/ResourceWebDav.kt index 8ba94ff..69e5dd0 100644 --- a/src/main/kotlin/info/mechyrdia/route/ResourceWebDav.kt +++ b/src/main/kotlin/info/mechyrdia/route/ResourceWebDav.kt @@ -1,47 +1,21 @@ package info.mechyrdia.route -import info.mechyrdia.Utf8 -import info.mechyrdia.auth.Argon2Hasher -import info.mechyrdia.auth.WebDavToken -import info.mechyrdia.concat -import info.mechyrdia.data.FileStorage -import info.mechyrdia.data.Id -import info.mechyrdia.data.StoragePath -import info.mechyrdia.data.StoredFileType -import info.mechyrdia.data.XmlInsertable -import info.mechyrdia.data.XmlTag -import info.mechyrdia.data.XmlTagConsumer -import info.mechyrdia.data.contentType -import info.mechyrdia.data.declaration -import info.mechyrdia.data.respondXml -import info.mechyrdia.data.root -import info.mechyrdia.data.sortedAsFiles -import info.mechyrdia.lore.mapSuspend -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpMethod -import io.ktor.http.HttpStatusCode -import io.ktor.server.application.ApplicationCall -import io.ktor.server.html.respondHtml -import io.ktor.server.request.ApplicationRequest -import io.ktor.server.request.authorization -import io.ktor.server.request.header -import io.ktor.server.request.receive -import io.ktor.server.request.receiveText -import io.ktor.server.response.header -import io.ktor.server.response.respond -import io.ktor.server.response.respondBytes -import io.ktor.server.routing.Route -import io.ktor.server.routing.method -import io.ktor.server.routing.route -import io.ktor.util.AttributeKey +import info.mechyrdia.* +import info.mechyrdia.auth.* +import info.mechyrdia.data.* +import info.mechyrdia.lore.* +import io.ktor.http.* +import io.ktor.server.application.* +import io.ktor.server.html.* +import io.ktor.server.request.* +import io.ktor.server.response.* +import io.ktor.server.routing.* +import io.ktor.util.* import kotlinx.html.* -import java.net.URI -import java.time.Instant -import java.time.ZoneOffset -import java.time.ZonedDateTime -import java.time.format.DateTimeFormatter -import java.util.Base64 +import java.net.* +import java.time.* +import java.time.format.* +import java.util.* const val WebDavDomainName = "https://dav.mechyrdia.info" -- 2.25.1