package com.tubitv.media.helpers;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.upstream.HttpDataSource;
import com.google.android.exoplayer2.util.Util;

/**
 * Created by stoyan on 6/21/17.
 */

public class MediaHelper {
    //    private static LinkedList<MediaModel> linkedList;
    //    private static MediaHelper instance;

    //    public synchronized static MediaHelper create(@NonNull MediaModel... models) {
    //        instance = new MediaHelper(models);
    //        return instance;
    //    }

    //    private MediaHelper(MediaModel[] models) {
    //        linkedList = new LinkedList<>();
    //        for (MediaModel model : models) {
    //            linkedList.add(model);
    //        }
    //    }
    //
    //    public synchronized static MediaHelper getInstance() {
    //        Assertions.checkNotNull(instance);
    //        return instance;
    //    }

    //    public MediaSource getConcatenatedMedia() {
    //        return new ConcatenatingMediaSource(concatenateMedia());
    //    }
    //
    //    private MediaSource concatenateMedia() {
    //        MediaSource[] mediaSources = new MediaSource[linkedList.size()];
    //        for (int i = 0; i < linkedList.size(); i++) {
    //            mediaSources[i] = linkedList.get(i).getMediaSource();
    //        }
    //        return new ConcatenatingMediaSource(mediaSources);
    //    }
    //
    //    @Nullable
    //    public static MediaModel getMediaByIndex(int index) {
    //        if (linkedList == null || linkedList.size() <= index) {
    //            return null;
    //        }
    //        return linkedList.get(index);
    //    }

    public static
    @NonNull
    DataSource.Factory buildDataSourceFactory(@NonNull Context context,
            @Nullable DefaultBandwidthMeter bandwidthMeter) {
        return new DefaultDataSourceFactory(context, bandwidthMeter,
                buildHttpDataSourceFactory(context, bandwidthMeter));
    }

    //TODO put user agent in meta or attrs
    public static
    @NonNull
    HttpDataSource.Factory buildHttpDataSourceFactory(@NonNull Context context,
            @NonNull DefaultBandwidthMeter bandwidthMeter) {
        return new DefaultHttpDataSourceFactory(Util.getUserAgent(context, "TubiExoPlayer"), bandwidthMeter);
    }

}