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

io.javalin.plugin.openapi.ui.RedocOptionsObject.kt Maven / Gradle / Ivy

The newest version!
package io.javalin.plugin.openapi.ui

import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.node.ObjectNode

data class RedocOptionsObject(
    val disableSearch: Boolean = false,
    val expandDefaultServerVariables: Boolean = false,
    val expandResponses: String = "",
    val maxDisplayedEnumValues: Int? = null,
    val hideDownloadButton: Boolean = false,
    val hideHostname: Boolean = false,
    val hideLoading: Boolean = false,
    val hideSingleRequestSampleTab: Boolean = false,
    val expandSingleSchemaField: Boolean = false,
    val jsonSampleExpandLevel: String = "2",
    val hideSchemaTitles: Boolean = false,
    val simpleOneOfTypeLabel: Boolean = false,
    val menuToggle: Boolean = false,
    val nativeScrollbars: Boolean = false,
    val noAutoAuth: Boolean = false,
    val onlyRequiredInSamples: Boolean = false,
    val pathInMiddlePanel: Boolean = false,
    val requiredPropsFirst: Boolean = false,
    val scrollYOffset: String = "0",
    val showExtensions: Boolean = false,
    val sortPropsAlphabetically: Boolean = false,
    val suppressWarning: Boolean = false,
    val payloadSampleIdx: Int = 0,
    val untrustedSpec: Boolean = false,
    val theme: RedocOptionsTheme = RedocOptionsTheme(),
    @JsonIgnore val extras: Map = emptyMap()
) {
    internal fun json(): ObjectNode {
        val mapper = ObjectMapper()
        return mapper.valueToTree(this).apply {
            extras.forEach { (key, value) -> this.replace(key, mapper.valueToTree(value)) }
        }
    }
    
    class Builder {
        private var disableSearch: Boolean = false
        private var expandDefaultServerVariables: Boolean = false
        private var expandResponses: String = ""
        private var maxDisplayedEnumValues: Int? = null
        private var hideDownloadButton: Boolean = false
        private var hideHostname: Boolean = false
        private var hideLoading: Boolean = false
        private var hideSingleRequestSampleTab: Boolean = false
        private var expandSingleSchemaField: Boolean = false
        private var jsonSampleExpandLevel: String = "2"
        private var hideSchemaTitles: Boolean = false
        private var simpleOneOfTypeLabel: Boolean = false
        private var menuToggle: Boolean = false
        private var nativeScrollbars: Boolean = false
        private var noAutoAuth: Boolean = false
        private var onlyRequiredInSamples: Boolean = false
        private var pathInMiddlePanel: Boolean = false
        private var requiredPropsFirst: Boolean = false
        private var scrollYOffset: String = "0"
        private var showExtensions: Boolean = false
        private var sortPropsAlphabetically: Boolean = false
        private var suppressWarning: Boolean = false
        private var payloadSampleIdx: Int = 0
        private var untrustedSpec: Boolean = false
        private var theme: RedocOptionsTheme = RedocOptionsTheme()
        private var extras: Map = emptyMap()
        
        fun setDisableSearch(boolean: Boolean) = apply { disableSearch = boolean }
        fun setExpandDefaultServerVariables(boolean: Boolean) = apply { expandDefaultServerVariables = boolean }
        fun setExpandResponse(string: String) = apply { expandResponses = string }
        fun setMaxDisplayedEnumValues(int: Int?) = apply { maxDisplayedEnumValues = int }
        fun setHideDownloadButton(boolean: Boolean) = apply { hideDownloadButton = boolean }
        fun setHideHostname(boolean: Boolean) = apply { hideHostname = boolean }
        fun setHideLoading(boolean: Boolean) = apply { hideLoading = boolean }
        fun setHideSingleRequestSampleTab(boolean: Boolean) = apply { hideSingleRequestSampleTab = boolean }
        fun setExpandSingleSchemaField(boolean: Boolean) = apply { expandSingleSchemaField = boolean }
        fun setJsonSampleExpandLevel(string: String) = apply { jsonSampleExpandLevel = string }
        fun setHideSchemaTitles(boolean: Boolean) = apply { hideSchemaTitles = boolean }
        fun setSimpleOneOfTypeLabel(boolean: Boolean) = apply { simpleOneOfTypeLabel = boolean }
        fun setMenuToggle(boolean: Boolean) = apply { menuToggle = boolean }
        fun setNativeScrollbars(boolean: Boolean) = apply { nativeScrollbars = boolean }
        fun setNoAutoAuth(boolean: Boolean) = apply { noAutoAuth = boolean }
        fun setOnlyRequiredInSamples(boolean: Boolean) = apply { onlyRequiredInSamples = boolean}
        fun setPathInMiddlePanel(boolean: Boolean) = apply { pathInMiddlePanel = boolean }
        fun setRequiredPropsFirst(boolean: Boolean) = apply { requiredPropsFirst = boolean }
        fun setScrollYOffset(string: String) = apply { scrollYOffset = string }
        fun setShowExtensions(boolean: Boolean) = apply { showExtensions = boolean }
        fun setSortPropsAlphabetically(boolean: Boolean) = apply { sortPropsAlphabetically = boolean }
        fun setSuppressWarning(boolean: Boolean) = apply { suppressWarning = boolean }
        fun setPayloadSampleIdx(int: Int) = apply { payloadSampleIdx = int }
        fun setUntrustedSpec(boolean: Boolean) = apply { untrustedSpec = boolean }
        fun setTheme(redocOptionsTheme: RedocOptionsTheme) = apply { theme = redocOptionsTheme }
        fun setExtras(map: Map) = apply { extras = map }
        
        fun build() = RedocOptionsObject(disableSearch, expandDefaultServerVariables, expandResponses, maxDisplayedEnumValues, hideDownloadButton, hideHostname, hideLoading, hideSingleRequestSampleTab, expandSingleSchemaField, jsonSampleExpandLevel, hideSchemaTitles, simpleOneOfTypeLabel, menuToggle, nativeScrollbars, noAutoAuth, onlyRequiredInSamples, pathInMiddlePanel, requiredPropsFirst, scrollYOffset, showExtensions, sortPropsAlphabetically, suppressWarning, payloadSampleIdx, untrustedSpec, theme, extras)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy