mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2026-03-11 12:52:23 +00:00
generate docs for a lot of API (test try)
This commit is contained in:
@@ -1,5 +1,14 @@
|
||||
package dev.inmo.micro_utils.ktor.common
|
||||
|
||||
/**
|
||||
* Builds a standard URL by combining a base part, subpart, and optional query parameters.
|
||||
* The base and subpart are joined with a '/', and query parameters are appended.
|
||||
*
|
||||
* @param basePart The base part of the URL (e.g., "https://example.com/api")
|
||||
* @param subpart The subpart of the URL (e.g., "users")
|
||||
* @param parameters Query parameters as a map. Defaults to an empty map
|
||||
* @return The complete URL string with query parameters
|
||||
*/
|
||||
fun buildStandardUrl(
|
||||
basePart: String,
|
||||
subpart: String,
|
||||
@@ -8,6 +17,15 @@ fun buildStandardUrl(
|
||||
parameters
|
||||
)
|
||||
|
||||
/**
|
||||
* Builds a standard URL by combining a base part, subpart, and query parameters as a list.
|
||||
* The base and subpart are joined with a '/', and query parameters are appended.
|
||||
*
|
||||
* @param basePart The base part of the URL (e.g., "https://example.com/api")
|
||||
* @param subpart The subpart of the URL (e.g., "users")
|
||||
* @param parameters Query parameters as a list of key-value pairs
|
||||
* @return The complete URL string with query parameters
|
||||
*/
|
||||
fun buildStandardUrl(
|
||||
basePart: String,
|
||||
subpart: String,
|
||||
@@ -16,6 +34,15 @@ fun buildStandardUrl(
|
||||
parameters
|
||||
)
|
||||
|
||||
/**
|
||||
* Builds a standard URL by combining a base part, subpart, and vararg query parameters.
|
||||
* The base and subpart are joined with a '/', and query parameters are appended.
|
||||
*
|
||||
* @param basePart The base part of the URL (e.g., "https://example.com/api")
|
||||
* @param subpart The subpart of the URL (e.g., "users")
|
||||
* @param parameters Query parameters as vararg key-value pairs
|
||||
* @return The complete URL string with query parameters
|
||||
*/
|
||||
fun buildStandardUrl(
|
||||
basePart: String,
|
||||
subpart: String,
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
package dev.inmo.micro_utils.ktor.common
|
||||
|
||||
/**
|
||||
* An exception used to indicate a correct/normal closure of a connection or stream.
|
||||
* This is typically used in WebSocket or network communication scenarios where a
|
||||
* clean shutdown needs to be distinguished from error conditions.
|
||||
*/
|
||||
object CorrectCloseException : Exception()
|
||||
|
||||
@@ -2,6 +2,14 @@ package dev.inmo.micro_utils.ktor.common
|
||||
|
||||
private val schemaRegex = Regex("^[^:]*://")
|
||||
|
||||
/**
|
||||
* Converts this string to a correct WebSocket URL by ensuring it starts with "ws://" scheme.
|
||||
* If the URL already starts with "ws", it is returned unchanged.
|
||||
* If the URL contains a scheme (e.g., "http://"), it is replaced with "ws://".
|
||||
* If the URL has no scheme, "ws://" is prepended.
|
||||
*
|
||||
* @return A properly formatted WebSocket URL
|
||||
*/
|
||||
val String.asCorrectWebSocketUrl: String
|
||||
get() = if (startsWith("ws")) {
|
||||
this
|
||||
|
||||
@@ -2,14 +2,30 @@ package dev.inmo.micro_utils.ktor.common
|
||||
|
||||
import korlibs.time.DateTime
|
||||
|
||||
/**
|
||||
* Type alias representing a date-time range with optional start and end times.
|
||||
* First element is the "from" date-time, second is the "to" date-time.
|
||||
*/
|
||||
typealias FromToDateTime = Pair<DateTime?, DateTime?>
|
||||
|
||||
/**
|
||||
* Converts this [FromToDateTime] range to URL query parameters.
|
||||
* Creates "from" and "to" query parameters with Unix millisecond timestamps.
|
||||
*
|
||||
* @return A map of query parameters representing the date-time range
|
||||
*/
|
||||
val FromToDateTime.asFromToUrlPart: QueryParams
|
||||
get() = mapOf(
|
||||
"from" to first ?.unixMillis ?.toString(),
|
||||
"to" to second ?.unixMillis ?.toString()
|
||||
)
|
||||
|
||||
/**
|
||||
* Extracts a [FromToDateTime] range from URL query parameters.
|
||||
* Looks for "from" and "to" parameters containing Unix millisecond timestamps.
|
||||
*
|
||||
* @return A [FromToDateTime] pair extracted from the query parameters
|
||||
*/
|
||||
val QueryParams.extractFromToDateTime: FromToDateTime
|
||||
get() = FromToDateTime(
|
||||
get("from") ?.toDoubleOrNull() ?.let { DateTime(it) },
|
||||
|
||||
@@ -2,4 +2,8 @@ package dev.inmo.micro_utils.ktor.common
|
||||
|
||||
import io.ktor.utils.io.core.Input
|
||||
|
||||
/**
|
||||
* A function type that provides an [Input] instance.
|
||||
* This is useful for lazy or deferred input creation in Ktor operations.
|
||||
*/
|
||||
typealias LambdaInputProvider = () -> Input
|
||||
|
||||
@@ -3,4 +3,10 @@ package dev.inmo.micro_utils.ktor.common
|
||||
import dev.inmo.micro_utils.common.MPPFile
|
||||
import io.ktor.utils.io.core.Input
|
||||
|
||||
/**
|
||||
* Creates a Ktor [Input] from this multiplatform file.
|
||||
* Platform-specific implementations handle file reading for each supported platform.
|
||||
*
|
||||
* @return An [Input] stream for reading this file
|
||||
*/
|
||||
expect fun MPPFile.input(): Input
|
||||
|
||||
@@ -29,6 +29,13 @@ fun String.includeQueryParams(
|
||||
queryParams: List<QueryParam>
|
||||
): String = "$this${if (contains("?")) "&" else "?"}${queryParams.asUrlQuery}"
|
||||
|
||||
/**
|
||||
* Parses this URL query string into a [QueryParams] map.
|
||||
* Splits on '&' to separate parameters and '=' to separate keys from values.
|
||||
* Parameters without values will have null as their value.
|
||||
*
|
||||
* @return A map of query parameter keys to their values (or null if no value)
|
||||
*/
|
||||
val String.parseUrlQuery: QueryParams
|
||||
get() = split("&").map {
|
||||
it.split("=").let { pair ->
|
||||
|
||||
@@ -5,27 +5,73 @@ package dev.inmo.micro_utils.ktor.common
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.cbor.Cbor
|
||||
|
||||
/**
|
||||
* Type alias for the standard serialization format used in Ktor utilities, which is [BinaryFormat].
|
||||
*/
|
||||
typealias StandardKtorSerialFormat = BinaryFormat
|
||||
|
||||
/**
|
||||
* Type alias for the standard serialization input data type, which is [ByteArray].
|
||||
*/
|
||||
typealias StandardKtorSerialInputData = ByteArray
|
||||
|
||||
/**
|
||||
* The standard Ktor serialization format instance, configured as CBOR.
|
||||
*/
|
||||
val standardKtorSerialFormat: StandardKtorSerialFormat = Cbor { }
|
||||
|
||||
/**
|
||||
* Decodes data from [StandardKtorSerialInputData] using the standard format.
|
||||
*
|
||||
* @param T The type to decode to
|
||||
* @param deserializationStrategy The deserialization strategy for type [T]
|
||||
* @param input The byte array input data to decode
|
||||
* @return The decoded value of type [T]
|
||||
*/
|
||||
inline fun <T> StandardKtorSerialFormat.decodeDefault(
|
||||
deserializationStrategy: DeserializationStrategy<T>,
|
||||
input: StandardKtorSerialInputData
|
||||
): T = decodeFromByteArray(deserializationStrategy, input)
|
||||
|
||||
/**
|
||||
* Encodes data to [StandardKtorSerialInputData] using the standard format.
|
||||
*
|
||||
* @param T The type to encode
|
||||
* @param serializationStrategy The serialization strategy for type [T]
|
||||
* @param data The data to encode
|
||||
* @return The encoded byte array
|
||||
*/
|
||||
inline fun <T> StandardKtorSerialFormat.encodeDefault(
|
||||
serializationStrategy: SerializationStrategy<T>,
|
||||
data: T
|
||||
): StandardKtorSerialInputData = encodeToByteArray(serializationStrategy, data)
|
||||
|
||||
/**
|
||||
* A CBOR instance for serialization operations.
|
||||
*/
|
||||
val cbor = Cbor {}
|
||||
|
||||
/**
|
||||
* Decodes data from a hex string using the standard binary format.
|
||||
*
|
||||
* @param T The type to decode to
|
||||
* @param deserializationStrategy The deserialization strategy for type [T]
|
||||
* @param input The hex string to decode
|
||||
* @return The decoded value of type [T]
|
||||
*/
|
||||
inline fun <T> StandardKtorSerialFormat.decodeHex(
|
||||
deserializationStrategy: DeserializationStrategy<T>,
|
||||
input: String
|
||||
): T = decodeFromHexString(deserializationStrategy, input)
|
||||
|
||||
/**
|
||||
* Encodes data to a hex string using the standard binary format.
|
||||
*
|
||||
* @param T The type to encode
|
||||
* @param serializationStrategy The serialization strategy for type [T]
|
||||
* @param data The data to encode
|
||||
* @return The encoded hex string
|
||||
*/
|
||||
inline fun <T> StandardKtorSerialFormat.encodeHex(
|
||||
serializationStrategy: SerializationStrategy<T>,
|
||||
data: T
|
||||
|
||||
@@ -3,8 +3,17 @@ package dev.inmo.micro_utils.ktor.common
|
||||
import kotlin.jvm.JvmInline
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* The default subdirectory path for storing temporal files during upload operations.
|
||||
*/
|
||||
const val DefaultTemporalFilesSubPath = "temp_upload"
|
||||
|
||||
/**
|
||||
* A value class representing a unique identifier for a temporal file.
|
||||
* Temporal files are typically used for temporary storage during file upload/processing operations.
|
||||
*
|
||||
* @param string The string representation of the temporal file ID
|
||||
*/
|
||||
@Serializable
|
||||
@JvmInline
|
||||
value class TemporalFileId(val string: String)
|
||||
|
||||
Reference in New Issue
Block a user