Skip to content

Commit

Permalink
add membership events
Browse files Browse the repository at this point in the history
  • Loading branch information
ameesha committed Jul 11, 2024
1 parent 81d8160 commit 6e521ca
Showing 1 changed file with 110 additions and 0 deletions.
110 changes: 110 additions & 0 deletions workos/event_objects/directory_group.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from typing import Literal, TypedDict
from workos.utils.types import JsonDict
from directory_user import DirectoryUserEventData, WorkOSDirectoryUserEventData


class DirectoryGroupEventData(TypedDict):
Expand Down Expand Up @@ -145,3 +146,112 @@ def to_dict(self) -> DirectoryGroupUpdatedEvent:

def __str__(self):
return f"{self.__class__.__name__} {self.to_dict()}"


class DirectoryGroupMembershipEventData(TypedDict):
directory_id: str
user: DirectoryUserEventData
group: DirectoryGroupEventData


class DirectoryGroupMembershipEventData:
directory_id: str
user: DirectoryUserEventData
group: DirectoryGroupEventData

@classmethod
def construct_from_response(cls, response: dict):
instance = cls()
for k, v in response.items():
if k == "user":
setattr(
instance,
k,
WorkOSDirectoryUserEventData.construct_from_response(v),
)
elif k == "group":
setattr(
instance,
k,
WorkOSDirectoryGroupEventData.construct_from_response(v),
)
else:
setattr(instance, k, v)

return instance

def to_dict(self) -> DirectoryGroupMembershipEventData:
return self.__dict__

def __str__(self):
return f"{self.__class__.__name__} {self.to_dict()}"


class DirectoryGroupUserAddedEvent(TypedDict):
event: Literal["dsync.group.user_added"]
id: str
created_at: str
data: DirectoryGroupMembershipEventData


class WorkOSDirectoryGroupUserAddedEvent:
event: Literal["dsync.group.user_added"]
id: str
created_at: str
data: DirectoryGroupMembershipEventData

@classmethod
def construct_from_response(cls, response: dict):
instance = cls()
for k, v in response.items():
if k == "data":
setattr(
instance,
k,
DirectoryGroupMembershipEventData.construct_from_response(v),
)
else:
setattr(instance, k, v)

return instance

def to_dict(self) -> DirectoryGroupUserAddedEvent:
return self.__dict__

def __str__(self):
return f"{self.__class__.__name__} {self.to_dict()}"


class DirectoryGroupUserRemovedEvent(TypedDict):
event: Literal["dsync.group.user_removed"]
id: str
created_at: str
data: DirectoryGroupMembershipEventData


class WorkOSDirectoryGroupUserRemovedEvent:
event: Literal["dsync.group.user_removed"]
id: str
created_at: str
data: DirectoryGroupMembershipEventData

@classmethod
def construct_from_response(cls, response: dict):
instance = cls()
for k, v in response.items():
if k == "data":
setattr(
instance,
k,
DirectoryGroupMembershipEventData.construct_from_response(v),
)
else:
setattr(instance, k, v)

return instance

def to_dict(self) -> DirectoryGroupUserRemovedEvent:
return self.__dict__

def __str__(self):
return f"{self.__class__.__name__} {self.to_dict()}"

0 comments on commit 6e521ca

Please sign in to comment.