All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.dataframe.io.isOpenApi.kt Maven / Gradle / Ivy

package org.jetbrains.kotlinx.dataframe.io

import io.github.oshai.kotlinlogging.KotlinLogging
import io.swagger.parser.OpenAPIParser
import java.io.File
import java.net.URL

private val logger = KotlinLogging.logger {}

/** Needs to have any type schemas to convert. */
public fun isOpenApiStr(text: String): Boolean =
    try {
        val parsed = OpenAPIParser().readContents(text, null, null)
        parsed.openAPI?.components?.schemas != null
    } catch (e: Throwable) {
        logger.debug(e) { "Attempt to read input as YAML/JSON OpenAPI specification failed." }
        false
    }

public fun isOpenApi(path: String): Boolean = isOpenApi(asUrl(path))

public fun isOpenApi(url: URL): Boolean {
    if (url.path.endsWith(".yml") || url.path.endsWith("yaml")) {
        return true
    }
    if (!url.path.endsWith("json")) {
        return false
    }

    return isOpenApiStr(url.readText())
}

public fun isOpenApi(file: File): Boolean {
    if (file.extension.lowercase() in listOf("yml", "yaml")) {
        return true
    }

    if (file.extension.lowercase() != "json") {
        return false
    }

    return isOpenApiStr(file.readText())
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy