import io
from enum import Enum


BYTEORDER = 'little'
ENCODING = 'utf-8'


class DataReader(io.BytesIO):
	def __init__(self, initial_bytes: bytes) -> None:
		super().__init__(initial_bytes)

	def read_int(self, size: int = 4, signed: bool = False):
		return int.from_bytes(self.read(size), BYTEORDER, signed=signed)

	def write_int(self, num: int, size: int = 4, signed: bool = False):
		self.write(num.to_bytes(size, BYTEORDER, signed=signed))

	def read_str(self, size: int, encoding: str = ENCODING):
		return self.read(size).decode(encoding)

	def write_str(self, text: str, encoding: str = ENCODING):
		self.write(text.encode(encoding))


class Model(Enum):
	Mirror_Gen1 = 'KingsCaZ'  # KC2A | Kings Canyon | WD MyCloud EX2 / Ultra Gen 1
	Mirror_Gen2 = 'GrandTeZ'  # BWVZ | Grand Teton  | WD MyCloud 

