<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_domain_listing(self, domain, sort='hot', period=None, *args, **kwargs):
 """Return a get_content generator for submissions by domain. Corresponds to the submissions provided by ``https://www.reddit.com/domain/{domain}``. :param domain: The domain to generate a submission listing for. :param sort: When provided must be one of 'hot', 'new', 'rising', 'controversial, 'gilded', or 'top'. Defaults to 'hot'. :param period: When sort is either 'controversial', or 'top' the period can be either None (for account default), 'all', 'year', 'month', 'week', 'day', or 'hour'. The additional parameters are passed directly into :meth:`.get_content`. Note: the `url` parameter cannot be altered. """

        # Verify arguments
        if sort not in ('controversial', 'hot', 'new', 'rising', 'top',
                        'gilded'):
            raise TypeError('Invalid sort parameter.')
        if period not in (None, 'all', 'day', 'hour', 'month', 'week', 'year'):
            raise TypeError('Invalid period parameter.')
        if sort not in ('controversial', 'top') and period:
            raise TypeError('Period cannot be set for that sort argument.')

        url = self.config['domain'].format(domain=domain)
        if sort != 'hot':
            url += sort
        if period:  # Set or overwrite params 't' parameter
            kwargs.setdefault('params', {})['t'] = period
        return self.get_content(url, *args, **kwargs)