librespot-python/librespot/zeroconf/Service.py

61 lines
1.4 KiB
Python

from __future__ import annotations
from librespot.zeroconf import Packet
class Service:
__alias: str
__service: str
__port: int
__text: dict
__domain: str
__protocol: str
__host: str
def __init__(self, alias: str, service: str, port: int):
self.__alias = alias
for s in alias:
c = ord(s)
if c < 0x20 or c == 0x7F:
raise TypeError()
self.__service = service
self.__port = port
self.__protocol = "tcp"
self.__text = {}
def __esc(self, text: str):
ns = ""
for s in text:
c = ord(s)
if c == 0x2E or c == 0x5C:
ns += "\\"
ns += s
return ns
def set_protocol(self, protocol: str) -> Service:
if protocol == "tcp" or protocol == "udp":
self.__protocol = protocol
else:
raise TypeError()
return self
def get_domain(self) -> str:
return self.__domain
def set_domain(self, domain: str) -> Service:
if domain is None or len(domain) < 2 or domain[0] != ".":
raise TypeError(domain)
self.__domain = domain
return self
def get_host(self) -> str:
return self.__host
def set_host(self, host: str) -> Service:
self.__host = host
return self
def get_packet(self) -> Packet:
packet = Packet()
return packet