# Kotlin Extensions

The SDK bundle includes a few optional Kotlin extensions. You can use these extensions by adding the `castlabs-sdk-extensions` module as a dependency to your `build.gradle`.

To use these extensions you can import them like this:

    import com.castlabs.android.sdkextensions.*

## ConfigExtensions

These extensions allow you to create a `PlayerConfig` object getting rid of some boilerplate code required by the `Builder` pattern.

    PlayerConfig.Builder("http://domain.com/manifest.mpd").build {
        autoPlay(true)
        userID("userId")
        bufferConfig {
            minPlaybackStart(5, TimeUnit.SECONDS)
            bufferSizeBytes(20_000_000)
        }
        liveConfig {
            liveEdgeLatencyMs(5000)
        }
        abrConfig {
            minDurationForQualityIncrease(10, TimeUnit.SECONDS)
        }
        networkConfig {
            manifestConnectionTimeoutMs(5000)
            segmentsConnectionTimeoutMs(3000)
        }
    }

## ControllerExtensions

The SDK offers one extension for the `PlayerController`. The `open` extension masks the `Builder` creation thus making it cleaner to configure the Player.

Keep in mind that it is always mandatory to set the content url.

    playerController.open {
        contentUrl("http://domain.com/manifest.mpd")
        autoPlay(true)
        userID("userId")
        bufferConfig {
            minPlaybackStart(5, TimeUnit.SECONDS)
            bufferSizeBytes(20_000_000)
        }
        liveConfig {
            liveEdgeLatencyMs(5000)
        }
        abrConfig {
            minDurationForQualityIncrease(10, TimeUnit.SECONDS)
        }
        networkConfig {
            manifestConnectionTimeoutMs(5000)
            segmentsConnectionTimeoutMs(3000)
        }
    }