'Initializes the DownloadStation client
params: :host: Url to the Download Station API
:username: Username to use for authentication
:password: Password to use for authentication'

def __init__(self, host=None, username=None, password=None):

    super(DownloadStationAPI, self).__init__(u'DownloadStation', host, username, password)
    self.urls = {u'login': urljoin(self.host, u'webapi/auth.cgi'), u'task': urljoin(self.host, u'webapi/DownloadStation/task.cgi')}
    self.url = self.urls[u'task']
    generic_errors = {100: u'Unknown    error', 101: u'Invalid    parameter', 102: u'The    requested    API    does    not    exist', 103: u'The    requested    method    does    not    exist', 104: u'The    requested    version    does    not    support    the    functionality', 105: u'The    logged    in    session    does    not    have    permission', 106: u'Session    timeout', 107: u'Session    interrupted    by    duplicate    login'}
    self.error_map = {u'create': {400: u'File    upload    failed', 401: u'Max    number    of    tasks    reached', 402: u'Destination    denied', 403: u'Destination    does    not    exist', 404: u'Invalid    task    id', 405: u'Invalid    task    action', 406: u'No    default    destination', 407: u'Set    destination    failed', 408: u'File    does    not    exist'}, u'login': {400: u'No    such    account    or    incorrect    password', 401: u'Account    disabled', 402: u'Permission    denied', 403: u'2-step    verification    code    required', 404: u'Failed    to    authenticate    2-step    verification    code'}}
    for api_method in self.error_map:
        self.error_map[api_method].update(generic_errors)
    self._task_post_data = {u'api': u'SYNO.DownloadStation.Task', u'version': u'1', u'method': u'create', u'session': u'DownloadStation'}
