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

notion.api.v1.http.NotionHttpClient.kt Maven / Gradle / Ivy

package notion.api.v1.http

import notion.api.v1.logging.NotionLogger
import java.io.Closeable
import java.net.URLEncoder

interface NotionHttpClient : AutoCloseable, Closeable {

    fun get(
        logger: NotionLogger,
        url: String,
        query: Map = emptyMap(),
        headers: Map,
    ): NotionHttpResponse

    fun postTextBody(
        logger: NotionLogger,
        url: String,
        query: Map = emptyMap(),
        body: String,
        headers: Map
    ): NotionHttpResponse

    fun patchTextBody(
        logger: NotionLogger,
        url: String,
        query: Map = emptyMap(),
        body: String,
        headers: Map
    ): NotionHttpResponse

    override fun close() {
    }

    // ------------------------------

    fun urlEncode(value: String): String = URLEncoder.encode(value, "UTF-8")

    fun buildQueryString(query: Map) =
        query.map { "${urlEncode(it.key)}=${urlEncode(it.value)}" }.joinToString(prefix = "?", separator = "&")

    fun buildFullUrl(url: String, q: String) = url + if (q != "?") q else ""

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy