# HttpDataSource.BaseFactory

Artifact: [androidx.media3:media3-datasource](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/datasource/HttpDataSource.java+class:androidx.media3.datasource.HttpDataSource.BaseFactory)

*** ** * ** ***


```
@UnstableApi
abstract class HttpDataSource.BaseFactory : HttpDataSource.Factory
```

<br />

*** ** * ** ***

Base implementation of `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.Factory` that sets default request properties.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#BaseFactory()()` |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource!` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#createDataSource()()` Creates a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` instance. |
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#setDefaultRequestProperties(java.util.Map<java.lang.String,java.lang.String>)( defaultRequestProperties: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-map/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>! )` Sets the default request headers for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instances created by the factory. |

| ### Protected functions |
|---|---|
| `abstract https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource!` | `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#createDataSourceInternal(androidx.media3.datasource.HttpDataSource.RequestProperties)( defaultRequestProperties: https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.RequestProperties! )` Called by `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#createDataSource()` to create a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instance. |

### Inherited functions

From [androidx.media3.datasource.DataSource.Factory](https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory) `abstract https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory#createDataSource()()`

Creates a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` instance.

## Public constructors

### BaseFactory

```
BaseFactory()
```

## Public functions

### createDataSource

```
fun createDataSource(): HttpDataSource!
```

Creates a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` instance.

### setDefaultRequestProperties

```
@CanIgnoreReturnValue
fun setDefaultRequestProperties(
    defaultRequestProperties: (Mutable)Map<String!, String!>!
): HttpDataSource.Factory!
```

Sets the default request headers for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instances created by the factory.

The new request properties will be used for future requests made by `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` created by the factory, including instances that have already been created. Modifying the `defaultRequestProperties` map after a call to this method will have no effect, and so it's necessary to call this method again each time the request properties need to be updated.

| Parameters |
|---|---|
| `defaultRequestProperties: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-map/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-map/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!` | The default request properties. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.Factory!` | This factory. |

## Protected functions

### createDataSourceInternal

```
protected abstract fun createDataSourceInternal(
    defaultRequestProperties: HttpDataSource.RequestProperties!
): HttpDataSource!
```

Called by `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.BaseFactory#createDataSource()` to create a `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instance.

| Parameters |
|---|---|
| `defaultRequestProperties: https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource.RequestProperties!` | The default `RequestProperties` to be used by the `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instance. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource!` | A `https://developer.android.com/reference/kotlin/androidx/media3/datasource/HttpDataSource` instance. |