class ReleaseCombinator():

    IDENTIFIER = 'release'

    RELEASE_LIST = [
        ".GerEngSub.AAC.1080pINDICATOR.WebDL.x264-Tanuki",
        ".German.AC3.DL.1080pINDICATOR.BluRay.x264-AST4u",
        "-720pINDICATOR"
    ]

    def __init__(self, context = None, indicator = ''):
        self._context = context
        self._logger = context['logger']
        self._reportLogger = context['report_logger']

        self.__indicator = indicator

    def getIdentifier(self):
        return ReleaseCombinator.IDENTIFIER

    def getPayload(self, releaseIndex):
        releaseStr: str = ReleaseCombinator.RELEASE_LIST[releaseIndex]
        return {
            'variant': f"R{releaseIndex}",
            'release': releaseStr.replace('INDICATOR', f".{self.__indicator}")
                    if self.__indicator else releaseStr.replace('INDICATOR', '')
        }

    def assertFunc(self, testObj = {}):
        pass

    def shouldFail(self):
        return False

    def getYield(self):
        for releaseIndex in range(len(ReleaseCombinator.RELEASE_LIST)):
            yield self.getPayload(releaseIndex)
