You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
894 B
33 lines
894 B
6 years ago
|
from plex.core.helpers import to_iterable
|
||
|
from plex.objects.container import Container
|
||
|
from plex.objects.core.base import Property
|
||
|
from plex.objects.server import Server
|
||
|
|
||
|
|
||
|
class Client(Server):
|
||
|
product = Property
|
||
|
device_class = Property('deviceClass')
|
||
|
|
||
|
protocol = Property
|
||
|
protocol_version = Property('protocolVersion', type=int)
|
||
|
protocol_capabilities = Property('protocolCapabilities')
|
||
|
|
||
|
|
||
|
class ClientContainer(Container):
|
||
|
filter_passes = lambda _, allowed, value: allowed is None or value in allowed
|
||
|
|
||
|
def filter(self, identifiers=None):
|
||
|
identifiers = to_iterable(identifiers)
|
||
|
|
||
|
for client in self:
|
||
|
if not self.filter_passes(identifiers, client.machine_identifier):
|
||
|
continue
|
||
|
|
||
|
yield client
|
||
|
|
||
|
def get(self, identifier):
|
||
|
for item in self.filter(identifier):
|
||
|
return item
|
||
|
|
||
|
return None
|