Source code for fasjson.lib.ldap.converters

import datetime
from base64 import b64encode


[docs] class Converter: def __init__(self, ldap_name, multivalued=False): self.ldap_name = ldap_name self.multivalued = multivalued
[docs] def from_ldap(self, value): value = [self.decode(v) for v in value] if not self.multivalued: value = value[0] return value
[docs] def decode(self, value): return value.decode("utf-8")
[docs] class BoolConverter(Converter):
[docs] def decode(self, value): value = super().decode(value).upper() if value == "TRUE": return True if value == "FALSE": return False raise ValueError(value)
[docs] class GeneralTimeConverter(Converter): gentime_fmt = "%Y%m%d%H%M%SZ"
[docs] def decode(self, value): value = super().decode(value) return datetime.datetime.strptime(value, self.gentime_fmt)
[docs] class BinaryConverter(Converter): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.ldap_name = f"{self.ldap_name};binary"
[docs] def decode(self, value): return b64encode(value).decode("ascii")