diff --git a/yaboli/session.py b/yaboli/session.py index b8f9f73..dccf754 100644 --- a/yaboli/session.py +++ b/yaboli/session.py @@ -3,12 +3,45 @@ class Session(): This class keeps track of session details. """ - def __init__(self, session): + def __init__(self, id, name, server_id, server_era, session_id, is_staff=None, is_manager=None): """ - session - a euphoria SessionView: http://api.euphoria.io/#sessionview + id - agent/account id + name - name of the client when the SessionView was captured + server_id - id of the server + server_era - era of the server + session_id - session id (unique across euphoria) + is_staff - client is staff + is_manager - client is manager """ - self.session = session + self.id = id + self.name = name + self.server_id = server_id + self.server_era = server_era + self.session_id = session_id + self.staff = is_staff + self.manager = is_manager + + @classmethod + def from_data(self, data): + """ + Creates and returns a session created from the data. + + data - a euphoria SessionView: http://api.euphoria.io/#sessionview + """ + + is_staff = data["is_staff"] if "is_staff" in data else None + is_manager = data["is_manager"] if "is_manager" in data else None + + return self( + data["id"], + data["name"], + data["server_id"], + data["server_era"], + data["session_id"], + is_staff, + is_manager + ) def session_type(self): """ @@ -17,34 +50,7 @@ class Session(): The session's type (bot, account, agent). """ - return self.user_id().split(":")[0] - - def user_id(self): - """ - user_id() -> str - - The user's id. - """ - - return self.session["id"] - - def session_id(self): - """ - session_id() -> str - - Returns the session's id. - """ - - return self.session["session_id"] - - def name(self): - """ - name() -> str - - The user's name. - """ - - return self.session["name"] + return self.user_id.split(":")[0] def mentionable(self): """ @@ -53,7 +59,7 @@ class Session(): Converts the name to a mentionable format. """ - return "".join(c for c in self.name() if not c in ",.!?;&<'\"" and not c.isspace()) + return "".join(c for c in self.name if not c in ",.!?;&<'\"" and not c.isspace()) def listable(self, width): """ @@ -76,43 +82,21 @@ class Session(): return prefixes, name - def server_id(self): - """ - server_id() -> server_id - - The session's server id. - """ - - return self.session["server_id"] - - def server_era(self): - """ - server_era() -> server_era - - The session's server era. - """ - - return self.session["server_era"] - def is_staff(self): """ - is_staff() -> staff + is_staff() -> bool Is a user staff? """ - if "is_staff" in self.session: - return self.session["is_staff"] - else: - return False + + return self.staff and True or False def is_manager(self): """ - is_manager() -> manager + is_manager() -> bool Is a user manager? """ - if "is_manager" in self.session: - return self.session["is_manager"] - else: - return False + + return self.staff and True or False \ No newline at end of file