예제 #1
0
    async def wrapper(*args, **kwargs):
        """Decorator validate passed parameters for api method getting
        comments from comment_threads."""
        acceptable_part = (
            'id',
            'snippet',
        )
        acceptable_text_format = (
            'plainText',
            'html',
        )

        key = kwargs.get('key')
        part = kwargs.get('part')
        max_results = kwargs.get('max_results')
        page_token = kwargs.get('page_token')
        parent_id = kwargs.get('parent_id')
        text_format = kwargs.get('text_format')

        if key and not isinstance(key, str):
            raise VariableTypeError(
                f'Argument "key" must be an str, current type is {type(key)}.')
        elif part and not isinstance(part, list):
            raise VariableTypeError(
                'Argument "part" must be an list, current type is'
                f' {type(part)}.')
        elif part and not all(isinstance(item, str) for item in part):
            raise VariableTypeError('Argument "part" must contain only str.')
        elif part and not all(item in acceptable_part for item in part):
            raise VariableValueError(
                'Acceptable values for part contain parameter is '
                f'{acceptable_part}, current part contain {part}.')
        elif max_results and not isinstance(max_results, int):
            raise VariableTypeError(
                'Argument "max_results" must be an int, current type is'
                f' {type(max_results)}.')
        elif max_results and not 0 <= max_results <= 100:
            raise VariableValueError(
                'Argument "max_result" must be in range from 1 to 100, '
                f'current value is {max_results}.')
        elif page_token and not isinstance(page_token, str):
            raise VariableTypeError(
                'Argument "page_token" must be an str, current type is '
                f'{type(page_token)}.')
        elif text_format and not isinstance(text_format, str):
            raise VariableTypeError(
                'Argument "text_format" must be an str, current type is'
                f' {type(text_format)}.')
        elif text_format and text_format not in acceptable_text_format:
            raise VariableValueError(
                'Acceptable values for argument "order" is '
                f'{acceptable_text_format}, current value is {text_format}.')
        elif parent_id and not isinstance(parent_id, str):
            raise VariableTypeError(
                'Argument "parent_id" must be an str, current type is'
                f' {type(parent_id)}.')

        return await coroutine(*args, **kwargs)
예제 #2
0
    async def wrapper(*args, **kwargs):
        """Decorator validate passed parameters for api method getting
            video data."""
        acceptable_part = (
            'contentDetails',
            'id',
            'liveStreamingDetails',
            'localizations',
            'player',
            'recordingDetails',
            'snippet',
            'statistics',
            'status',
            'topicDetails',
        )

        key = kwargs.get('key')
        part = kwargs.get('part')
        max_results = kwargs.get('max_results')
        video_ids = kwargs.get('video_ids')
        page_token = kwargs.get('page_token')

        if key and not isinstance(key, str):
            raise VariableTypeError(
                f'Argument "key" must be an str, current type is {type(key)}.')
        elif part and not isinstance(part, list):
            raise VariableTypeError(
                'Argument "part" must be an list, current type is'
                f' {type(part)}.')
        elif part and not all(isinstance(item, str) for item in part):
            raise VariableTypeError('Argument "part" must contain only str.')
        elif part and not all(item in acceptable_part for item in part):
            raise VariableValueError(
                'Acceptable values for part contain parameter is '
                f'{acceptable_part}, current part contain {part}.')
        elif max_results and not isinstance(max_results, int):
            raise VariableTypeError(
                'Argument "max_results" must be an int, current type is'
                f' {type(max_results)}.')
        elif max_results and not 0 <= max_results <= 50:
            raise VariableValueError(
                'Argument "max_result" must be in range from 1 to 50, '
                f'current value is {max_results}.')
        elif video_ids and not isinstance(video_ids, list):
            raise VariableTypeError(
                'Argument "video_ids" must be an list, current type is'
                f' {type(video_ids)}.')
        elif video_ids and not all(
                isinstance(item, str) for item in video_ids):
            raise VariableTypeError(
                'Argument "video_ids" must contain only str.')
        elif page_token and not isinstance(page_token, str):
            raise VariableTypeError(
                'Argument "page_token" must be an str, current type is '
                f'{type(page_token)}.')

        return await coroutine(*args, **kwargs)
예제 #3
0
    async def wrapper(*args, **kwargs):
        """Decorator validate passed parameters for api method getting
            channels data."""
        acceptable_part = (
            'brandingSettings',
            'contentDetails',
            'contentOwnerDetails',
            'id',
            'localizations',
            'snippet',
            'statistics',
            'status',
            'topicDetails',
        )

        key = kwargs.get('key')
        part = kwargs.get('part')
        max_results = kwargs.get('max_results')
        channel_id = kwargs.get('channel_id')
        user_name = kwargs.get('user_name')

        if key and not isinstance(key, str):
            raise VariableTypeError(
                f'Argument "key" must be an str, current type is {type(key)}.')
        elif part and not isinstance(part, list):
            raise VariableTypeError(
                'Argument "part" must be an list, current type is'
                f' {type(part)}.')
        elif part and not all(isinstance(item, str) for item in part):
            raise VariableTypeError('Argument "part" must contain only str.')
        elif part and not all(item in acceptable_part for item in part):
            raise VariableValueError(
                'Acceptable values for part contain parameter is '
                f'{acceptable_part}, current part contain {part}.')
        elif max_results and not isinstance(max_results, int):
            raise VariableTypeError(
                'Argument "max_results" must be an int, current type is'
                f' {type(max_results)}.')
        elif max_results and not 0 <= max_results <= 50:
            raise VariableValueError(
                'Argument "max_result" must be in range from 1 to 50, '
                f'current value is {max_results}.')
        elif channel_id and user_name:
            raise VariableValueError(
                'Variable "channel_id" and "user_name" is not compatible, '
                'pass only one of them.')
        elif channel_id and not isinstance(channel_id, str):
            raise VariableTypeError(
                'Argument "channel_id" must be an str, current type'
                f' is {type(channel_id)}.')
        elif user_name and not isinstance(user_name, str):
            raise VariableTypeError(
                'Argument "user_name" must be an str, current type'
                f' is {type(user_name)}.')

        return await coroutine(*args, **kwargs)
예제 #4
0
    async def wrapper(*args, **kwargs):
        """Decorator validate passed parameters for api method getting
        search result."""

        acceptable_order = (
            'date',
            'rating',
            'relevance',
            'title',
            'videoCount',
            'viewCount',
        )
        acceptable_search_by = (
            'video',
            'channel',
            'playlist',
        )

        key = kwargs.get('key')
        text = kwargs.get('text')
        max_results = kwargs.get('max_results')
        page_token = kwargs.get('page_token')
        order = kwargs.get('order')
        published_after = kwargs.get('published_after')
        published_before = kwargs.get('published_before')
        search_by = kwargs.get('search_by')

        if key and not isinstance(key, str):
            raise VariableTypeError(
                f'Argument "key" must be an str, current type is {type(key)}.')
        elif text and not isinstance(text, str):
            raise VariableTypeError(
                f'Argument "text" must be an str, current type is {type(text)}.'
            )
        elif max_results and not isinstance(max_results, int):
            raise VariableTypeError(
                'Argument "max_results" must be an int, current type is'
                f' {type(max_results)}.')
        elif max_results and not 0 <= max_results <= 50:
            raise VariableValueError(
                'Argument "max_result" must be in range from 1 to 50, '
                f'current value is {max_results}.')
        elif page_token and not isinstance(page_token, str):
            raise VariableTypeError(
                'Argument "page_token" must be an str, current type is '
                f'{type(page_token)}.')
        elif order and not isinstance(order, str):
            raise VariableTypeError(
                'Argument "order" must be an str, current type is '
                f'{type(order)}.')
        elif order and order not in acceptable_order:
            raise VariableValueError(
                'Acceptable values for argument "order" is '
                f'{acceptable_order}, current value is {order}.')
        elif published_after and not isinstance(published_after, int):
            raise VariableTypeError(
                'Argument "published_after" must be an int, current type is '
                f'{type(published_after)}.')
        elif published_before and not isinstance(published_before, int):
            raise VariableTypeError(
                'Argument "published_before" must be an int, current type is '
                f'{type(published_before)}.')
        elif search_by and not isinstance(search_by, str):
            raise VariableTypeError(
                'Argument "search_by" must be an str, current type is '
                f'{type(search_by)}.')
        elif search_by and search_by not in acceptable_search_by:
            raise VariableValueError(
                'Acceptable values for argument "search_by" is '
                f'{acceptable_search_by}, current value is {search_by}.')

        return await coroutine(*args, **kwargs)