# -*- coding: utf-8 -*-

"""
spotifywebapiwithfixesandimprovementsfromsonallux

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""

from apimatic_core.types.union_types.leaf_type import LeafType
from apimatic_core.types.union_types.one_of import OneOf
from apimatic_core.types.union_types.union_type_context import UnionTypeContext as Context
from spotifywebapiwithfixesandimprovementsfromsonallux.models.episode_object import EpisodeObject
from spotifywebapiwithfixesandimprovementsfromsonallux.models.track_object import TrackObject


class UnionTypeLookUp:

    """The `UnionTypeLookUp` class serves as a utility class for 
    storing and managing type combinator templates.It acts as a container for the templates 
    used in handling various data types within the application.

    """
    _templates = {
        'PlaylistTrackObjectTrack': OneOf(
            [
                LeafType(TrackObject),
                LeafType(EpisodeObject)
            ],
            Context.create(
               is_optional=True
            )
        ),
        'QueueObjectCurrentlyPlaying': OneOf(
            [
                LeafType(TrackObject),
                LeafType(EpisodeObject)
            ],
            Context.create(
               is_optional=True
            )
        ),
        'QueueObjectQueue': OneOf(
            [
                LeafType(TrackObject),
                LeafType(EpisodeObject)
            ],
            Context.create(
               is_array=True,
               is_optional=True
            )
        ),
        'CurrentlyPlayingContextObjectItem': OneOf(
            [
                LeafType(TrackObject),
                LeafType(EpisodeObject)
            ],
            Context.create(
               is_optional=True
            )
        ),
        'CurrentlyPlayingObjectItem': OneOf(
            [
                LeafType(TrackObject),
                LeafType(EpisodeObject)
            ],
            Context.create(
               is_optional=True
            )
        )
    }

    @staticmethod
    def get(name):
        return UnionTypeLookUp._templates[name]

