コード例 #1
0
ファイル: connect.py プロジェクト: scottwedge/jellyfin-kodi
    def setup_login_manual(self):
        ''' Setup manual login by itself for default server.
        '''
        client = self.get_client()
        client.set_credentials(get_credentials())
        manager = client.auth

        try:
            self.login_manual(manager=manager)
        except RuntimeError:
            return

        credentials = client.get_credentials()
        save_credentials(credentials)
コード例 #2
0
ファイル: connect.py プロジェクト: scottwedge/jellyfin-kodi
    def setup_manual_server(self):
        ''' Setup manual servers
        '''
        client = self.get_client()
        client.set_credentials(get_credentials())
        manager = client.auth

        try:
            self.manual_server(manager)
        except RuntimeError:
            return

        credentials = client.get_credentials()
        save_credentials(credentials)
コード例 #3
0
ファイル: connect.py プロジェクト: libanp/plugin.video.emby
    def setup_login_connect(self):
        ''' Setup emby connect by itself.
        '''
        client = self.get_client()
        client.set_credentials(get_credentials())
        manager = client.auth

        try:
            self.login_connect(manager)
        except RuntimeError:
            return

        credentials = client.get_credentials()
        save_credentials(credentials)
コード例 #4
0
    def setup_login_manual(self):
        ''' Setup manual login by itself for default server.
        '''
        credentials = get_credentials()
        client = self.get_client(
            credentials['Servers'][0] if credentials['Servers'] else {})
        client.set_credentials(credentials)
        manager = client.auth

        try:
            self.login_manual(manager=manager)
        except RuntimeError:
            return

        new_credentials = client.get_credentials()
        credentials = self._save_servers(new_credentials['Servers'])
        save_credentials(credentials)
コード例 #5
0
    def setup_login_connect(self):
        ''' Setup emby connect by itself.
        '''
        credentials = get_credentials()
        client = self.get_client(
            credentials['Servers'][0] if credentials['Servers'] else {})
        client.set_credentials(credentials)
        manager = client.auth

        try:
            self.login_connect(manager)
        except RuntimeError:
            return

        new_credentials = client.get_credentials()
        credentials = self._save_servers(new_credentials['Servers'])
        save_credentials(credentials)
コード例 #6
0
    def setup_manual_server(self):
        ''' Setup manual servers
        '''
        credentials = get_credentials()
        client = self.get_client(
            credentials['Servers'][0] if credentials['Servers'] else {})
        client.set_credentials(credentials)
        manager = client.auth

        try:
            self.manual_server(manager)
        except RuntimeError:
            return

        new_credentials = client.get_credentials()
        credentials = self._save_servers(new_credentials['Servers'])
        save_credentials(credentials)
コード例 #7
0
ファイル: connect.py プロジェクト: z3ntu/jellyfin-kodi
    def register_client(self,
                        credentials=None,
                        options=None,
                        server_id=None,
                        server_selection=False):

        client = self.get_client(server_id)
        self.client = client
        self.connect_manager = client.auth

        if server_id is None:
            client.config.data['app.default'] = True

        try:
            state = client.authenticate(credentials or {}, options or {})

            if state['State'] == CONNECTION_STATE['SignedIn']:
                client.callback_ws = event

                if server_id is None:  # Only assign for default server

                    client.callback = event
                    self.get_user(client)

                    settings('serverName',
                             client.config.data['auth.server-name'])
                    settings('server', client.config.data['auth.server'])

                event('ServerOnline', {'ServerId': server_id})
                event('LoadServer', {'ServerId': server_id})

                return state['Credentials']

            elif (server_selection
                  or state['State'] == CONNECTION_STATE['ServerSelection']
                  or state['State'] == CONNECTION_STATE['Unavailable']
                  and not settings('SyncInstallRunDone.bool')):

                self.select_servers(state)

            elif state['State'] == CONNECTION_STATE['ServerSignIn']:
                if 'ExchangeToken' not in state['Servers'][0]:
                    self.login()

            elif state['State'] == CONNECTION_STATE['Unavailable'] and state[
                    'Status_Code'] == 401:
                # If the saved credentials don't work, restart the addon to force the password dialog to open
                window('jellyfin.restart', clear=True)

            elif state['State'] == CONNECTION_STATE['Unavailable']:
                raise HTTPException('ServerUnreachable', {})

            return self.register_client(state['Credentials'], options,
                                        server_id, False)

        except RuntimeError as error:

            LOG.exception(error)
            xbmc.executebuiltin('Addon.OpenSettings(%s)' % addon_id())

            raise Exception('User sign in interrupted')

        except HTTPException as error:

            if error.status == 'ServerUnreachable':
                event('ServerUnreachable', {'ServerId': server_id})

            return client.get_credentials()