aboutsummaryrefslogtreecommitdiff
path: root/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt
diff options
context:
space:
mode:
Diffstat (limited to 'shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt')
-rw-r--r--shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt20
1 files changed, 20 insertions, 0 deletions
diff --git a/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 0000000..f63f301
--- /dev/null
+++ b/shared/src/commonMain/kotlin/mx/trackermap/TrackerMap/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,20 @@
+package mx.trackermap.TrackerMap.client.infrastructure
+
+typealias MultiValueMap = Map<String, List<String>>
+
+fun collectionDelimiter(collectionFormat: String) = when (collectionFormat) {
+ "csv" -> ","
+ "tsv" -> "\t"
+ "pipes" -> "|"
+ "ssv" -> " "
+ else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun <T : Any?> toMultiValue(items: List<T>, collectionFormat: String, map: (item: Any?) -> String = defaultMultiValueConverter): List<String> {
+ return when (collectionFormat) {
+ "multi" -> items.map(map)
+ else -> listOf(items.map(map).joinToString(separator = collectionDelimiter(collectionFormat)))
+ }
+} \ No newline at end of file