#
# A python module that maps printerdata to a dictionary.  We define
# two classes.  The printerdata class maps to Get/Set/Enum/DeletePrinterData
# and the printerdata_ex class maps to Get/Set/Enum/DeletePrinterDataEx
#

import spoolss

class printerdata:
    def __init__(self, host, creds = {}):
        self.hnd = spoolss.openprinter(host, creds = creds)

    def keys(self):
        return self.hnd.enumprinterdata().keys()

    def __getitem__(self, key):
        return self.hnd.getprinterdata(key)['data']

    def __setitem__(self, key, value):
        # Store as REG_BINARY for now
        self.hnd.setprinterdata({"key": "", "value": key, "type": 3,
                                 "data": value})
        
class printerdata_ex:
    def __init__(self, host, creds = {}):
        self.hnd = spoolss.openprinter(host, creds = creds)

    def keys(self):
        return self.hnd.enumprinterdataex("PrinterDriverData").keys()

    def __getitem__(self, key):
        return self.hnd.getprinterdataex("PrinterDriverData", key)['data']

    def __setitem__(self, key, value):
        # Store as REG_BINARY for now
        self.hnd.setprinterdataex({"key": "PrinterDriverData", "value": key, "type": 3,
                                 "data": value})