from __future__ import unicode_literals

from .common import FileDownloader
from .hls import HlsFD
from .hls import NativeHlsFD
from .http import HttpFD
from .mplayer import MplayerFD
from .rtmp import RtmpFD
from .f4m import F4mFD

from ..utils import (
    determine_ext,
)


def get_suitable_downloader(info_dict):
    """Get the downloader class that can handle the info dict."""
    url = info_dict['url']
    protocol = info_dict.get('protocol')

    if url.startswith('rtmp'):
        return RtmpFD
    if protocol == 'm3u8_native':
        return NativeHlsFD
    if (protocol == 'm3u8') or (protocol is None and determine_ext(url) == 'm3u8'):
        return HlsFD
    if url.startswith('mms') or url.startswith('rtsp'):
        return MplayerFD
    if determine_ext(url) == 'f4m':
        return F4mFD
    else:
        return HttpFD
