Package com.castlabs.android.network

## Class DefaultDataSourceFactory

- java.lang.Object
- - com.castlabs.android.network.DefaultDataSourceFactory

- All Implemented Interfaces:
    `DataSourceFactory`, `com.google.android.exoplayer2.upstream.DataSource.Factory`

      public class DefaultDataSourceFactory
      extends Object
      implements DataSourceFactory

  The default implementation of the `DataSourceFactory`.
  Since:
    3.0.0

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DefaultDataSourceFactory​(Context context)` |
    `DefaultDataSourceFactory​(Context context, com.google.android.exoplayer2.upstream.TransferListener transferListener)` |
    `DefaultDataSourceFactory​(Context context, com.google.android.exoplayer2.upstream.TransferListener transferListener, HttpListener httpListener, PlayerController playerController)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addHeaderParameter​(String key, String value)` | Adds a header parameter that will be added to each HTTP connection header that is generated with a `DataSource` created by this factory.
    `void` | `addQueryParameter​(String key, String value)` | Adds a query parameter that will be appended to each HTTP URL.
    `void` | `clearHeaderParameters()` | Removes all header parameters added previously with `DataSourceFactory.addHeaderParameter(String, String)`.
    `void` | `clearQueryParameters()` | Removes all query parameters added previously with `DataSourceFactory.addQueryParameter(String, String)`
    `com.google.android.exoplayer2.upstream.DataSource` | `createDataSource()` |
    `com.google.android.exoplayer2.upstream.DataSource` | `createDataSource​(int requestType)` | Creates a data source for the given request type
    `Map<String,​String>` | `getHeaderParameter()` |
    `Map<String,​String>` | `getQueryParameter()` |

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultDataSourceFactory

          public DefaultDataSourceFactory​(@NonNull
                                          Context context)

    - #### DefaultDataSourceFactory

          public DefaultDataSourceFactory​(@NonNull
                                          Context context,
                                          @Nullable
                                          com.google.android.exoplayer2.upstream.TransferListener transferListener)

    - #### DefaultDataSourceFactory

          public DefaultDataSourceFactory​(@NonNull
                                          Context context,
                                          @Nullable
                                          com.google.android.exoplayer2.upstream.TransferListener transferListener,
                                          @Nullable
                                          HttpListener httpListener,
                                          @Nullable
                                          PlayerController playerController)

  - ### Method Detail

    - #### createDataSource

          @NonNull
          public com.google.android.exoplayer2.upstream.DataSource createDataSource()

      Specified by:
        `createDataSource` in interface `com.google.android.exoplayer2.upstream.DataSource.Factory`

    - #### createDataSource

          public com.google.android.exoplayer2.upstream.DataSource createDataSource​(int requestType)

      Description copied from interface: `DataSourceFactory`
      Creates a data source for the given request type
      Specified by:
        `createDataSource` in interface `DataSourceFactory`
      Parameters:
        `requestType` - The request type
      Returns:
        dataSource the data source

    - #### addHeaderParameter

          public void addHeaderParameter​(@NonNull
                                         String key,
                                         @Nullable
                                         String value)

      Description copied from interface: `DataSourceFactory`
      Adds a header parameter that will be added to each HTTP connection header that is generated with a `DataSource` created by this factory.

      Note that you will need to call this before a call to `DataSource.Factory.createDataSource()` in order to successfully add the parameter.
      Specified by:
        `addHeaderParameter` in interface `DataSourceFactory`
      Parameters:
        `key` - the key
        `value` - the value or null to remove any previously added endtry with the given key

    - #### clearHeaderParameters

          public void clearHeaderParameters()

      Description copied from interface: `DataSourceFactory`
      Removes all header parameters added previously with `DataSourceFactory.addHeaderParameter(String, String)`.
      Specified by:
        `clearHeaderParameters` in interface `DataSourceFactory`

    - #### addQueryParameter

          public void addQueryParameter​(@NonNull
                                        String key,
                                        @Nullable
                                        String value)

      Description copied from interface: `DataSourceFactory`
      Adds a query parameter that will be appended to each HTTP URL.

      Note that you will need to call this before a call to `DataSource.Factory.createDataSource()` in order to successfully add the parameter.
      Specified by:
        `addQueryParameter` in interface `DataSourceFactory`
      Parameters:
        `key` - the key
        `value` - the value or null to remove any previously added entry with the given key

    - #### clearQueryParameters

          public void clearQueryParameters()

      Description copied from interface: `DataSourceFactory`
      Removes all query parameters added previously with `DataSourceFactory.addQueryParameter(String, String)`
      Specified by:
        `clearQueryParameters` in interface `DataSourceFactory`

    - #### getHeaderParameter

          @NonNull
          public Map<String,​String> getHeaderParameter()

      Specified by:
        `getHeaderParameter` in interface `DataSourceFactory`
      Returns:
        A non-null map of all registered header parameter

    - #### getQueryParameter

          @NonNull
          public Map<String,​String> getQueryParameter()

      Specified by:
        `getQueryParameter` in interface `DataSourceFactory`
      Returns:
        A non-null map of all registered query parameter