client - Event to Plan

This commit is contained in:
Kacper Ziubryniewicz
2018-08-19 15:28:22 +02:00
committed by GitHub
parent 5b89c2d504
commit f36d4fa38d

View File

@@ -921,7 +921,7 @@ class Client(object):
:param mid: Message ID to fetch from :param mid: Message ID to fetch from
:param thread_id: User/Group ID to get message info from. See :ref:`intro_threads` :param thread_id: User/Group ID to get message info from. See :ref:`intro_threads`
:return: :class:`models.Message` object :return: :class:`models.Message` object
:rtype: object :rtype: models.Message
:raises: FBChatException if request failed :raises: FBChatException if request failed
""" """
thread_id, thread_type = self._getThread(thread_id, None) thread_id, thread_type = self._getThread(thread_id, None)
@@ -948,23 +948,22 @@ class Client(object):
return [graphql_to_poll_option(m) for m in j["payload"]] return [graphql_to_poll_option(m) for m in j["payload"]]
def fetchEventInfo(self, event_id): def fetchPlanInfo(self, plan_id):
""" """
Fetches :class:`models.Event` object from the event id Fetches a :class:`models.Plan` object from the plan id
:param event_id: Event ID to fetch from :param plan_id: Plan ID to fetch from
:return: :class:`models.Event` object :return: :class:`models.Plan` object
:rtype: object :rtype: models.Plan
:raises: FBChatException if request failed :raises: FBChatException if request failed
""" """
data = { data = {
"event_reminder_id": event_id "event_reminder_id": plan_id
} }
url_part = urllib.parse.urlencode(data) url_part = urllib.parse.urlencode(data)
j = self._post('{}/?{}'.format(self.req_url.EVENT_INFO, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.PLAN_INFO, url_part), fix_request=True, as_json=True)
event = graphql_to_event(j["payload"], event_id) plan = graphql_to_plan(j["payload"])
event.uid = event_id return plan
return event
""" """
END FETCH METHODS END FETCH METHODS
@@ -1698,9 +1697,9 @@ class Client(object):
j = self._post('{}/?{}'.format(self.req_url.MESSAGE_REACTION, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.MESSAGE_REACTION, url_part), fix_request=True, as_json=True)
def createEventReminder(self, event, thread_id=None): def createPlan(self, plan, thread_id=None):
""" """
Sets an event reminder Sets a plan
.. warning:: .. warning::
Does not work in Python2.7 Does not work in Python2.7
@@ -1708,9 +1707,9 @@ class Client(object):
.. todo:: .. todo::
Make this work in Python2.7 Make this work in Python2.7
:param event: Event to set :param plan: Plan to set
:param thread_id: User/Group ID to send event to. See :ref:`intro_threads` :param thread_id: User/Group ID to send plan to. See :ref:`intro_threads`
:type event: models.Event :type plan: models.Plan
:raises: FBchatException if request failed :raises: FBchatException if request failed
""" """
thread_id, thread_type = self._getThread(thread_id, None) thread_id, thread_type = self._getThread(thread_id, None)
@@ -1718,11 +1717,11 @@ class Client(object):
full_data = { full_data = {
"event_type": "EVENT", "event_type": "EVENT",
"dpr": 1, "dpr": 1,
"event_time" : event.time, "event_time" : plan.time,
"title" : event.title, "title" : plan.title,
"thread_id" : thread_id, "thread_id" : thread_id,
"location_id" : event.location_id, "location_id" : plan.location_id or '',
"location_name" : event.location, "location_name" : plan.location or '',
"acontext": { "acontext": {
"action_history": [{ "action_history": [{
"surface": "messenger_chat_tab", "surface": "messenger_chat_tab",
@@ -1732,25 +1731,25 @@ class Client(object):
} }
url_part = urllib.parse.urlencode(full_data) url_part = urllib.parse.urlencode(full_data)
j = self._post('{}/?{}'.format(self.req_url.EVENT_REMINDER, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.PLAN_CREATE, url_part), fix_request=True, as_json=True)
def editEventReminder(self, event_id, event): def editPlan(self, plan, new_plan):
""" """
Edits an event reminder Edits a plan
:param event_id: Event ID to edit :param plan: Plan to edit
:param event: New event :param new_plan: New plan
:type event: models.Event :type plan: models.Plan
:raises: FBchatException if request failed :raises: FBchatException if request failed
""" """
full_data = { full_data = {
"dpr": 1, "dpr": 1,
"event_reminder_id": event_id, "event_reminder_id": plan.uid,
"delete": "false", "delete": "false",
"date": event.time, "date": new_plan.time,
"location_name": event.location, "location_name": new_plan.location or '',
"location_id": event.location_id, "location_id": new_plan.location_id or '',
"title": event.title, "title": new_plan.title,
"acontext": { "acontext": {
"action_history": [{ "action_history": [{
"surface": "messenger_chat_tab", "surface": "messenger_chat_tab",
@@ -1760,18 +1759,18 @@ class Client(object):
} }
url_part = urllib.parse.urlencode(full_data) url_part = urllib.parse.urlencode(full_data)
j = self._post('{}/?{}'.format(self.req_url.EVENT_CHANGE, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.PLAN_CHANGE, url_part), fix_request=True, as_json=True)
def deleteEventReminder(self, event_id): def deletePlan(self, plan):
""" """
Deletes an event reminder Deletes a plan
:param event_id: Event ID to delete :param plan: Plan to delete
:raises: FBchatException if request failed :raises: FBchatException if request failed
""" """
full_data = { full_data = {
"dpr": 1, "dpr": 1,
"event_reminder_id": event_id, "event_reminder_id": plan.uid,
"delete": "true", "delete": "true",
"acontext": { "acontext": {
"action_history": [{ "action_history": [{
@@ -1782,19 +1781,19 @@ class Client(object):
} }
url_part = urllib.parse.urlencode(full_data) url_part = urllib.parse.urlencode(full_data)
j = self._post('{}/?{}'.format(self.req_url.EVENT_CHANGE, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.PLAN_DELETE, url_part), fix_request=True, as_json=True)
def changeEventParticipation(self, event_id, take_part=True): def changePlanParticipation(self, plan, take_part=True):
""" """
Changes an event reminder participation Changes participation in a plan
:param event_id: Event ID :param plan: Plan to take part in or not
:param take_part: Whether to take part in the event :param take_part: Whether to take part in the plan
:raises: FBchatException if request failed :raises: FBchatException if request failed
""" """
full_data = { full_data = {
"dpr": 1, "dpr": 1,
"event_reminder_id": event_id, "event_reminder_id": plan.uid,
"guest_state": "GOING" if take_part else "DECLINED", "guest_state": "GOING" if take_part else "DECLINED",
"acontext": { "acontext": {
"action_history": [{ "action_history": [{
@@ -1805,7 +1804,7 @@ class Client(object):
} }
url_part = urllib.parse.urlencode(full_data) url_part = urllib.parse.urlencode(full_data)
j = self._post('{}/?{}'.format(self.req_url.EVENT_PARTICIPATION, url_part), fix_request=True, as_json=True) j = self._post('{}/?{}'.format(self.req_url.PLAN_PARTICIPATION, url_part), fix_request=True, as_json=True)
def createPoll(self, poll, thread_id=None, thread_type=None): def createPoll(self, poll, thread_id=None, thread_type=None):
""" """
@@ -2203,7 +2202,7 @@ class Client(object):
"msgs_recv": 0, "msgs_recv": 0,
"sticky_token": sticky, "sticky_token": sticky,
"sticky_pool": pool, "sticky_pool": pool,
"clientid": self.client_id, "clientid": self.client_id
} }
j = self._get(ReqUrl.STICKY, data, fix_request=True, as_json=True) j = self._get(ReqUrl.STICKY, data, fix_request=True, as_json=True)
@@ -2403,41 +2402,38 @@ class Client(object):
self.onPollVoted(mid=mid, poll=poll, author_id=author_id, thread_id=thread_id, thread_type=thread_type, self.onPollVoted(mid=mid, poll=poll, author_id=author_id, thread_id=thread_id, thread_type=thread_type,
ts=ts, metadata=metadata, msg=m) ts=ts, metadata=metadata, msg=m)
# Event reminder created # Plan created
elif delta.get("type") == "lightweight_event_create": elif delta.get("type") == "lightweight_event_create":
thread_id, thread_type = getThreadIdAndThreadType(metadata) thread_id, thread_type = getThreadIdAndThreadType(metadata)
event = graphql_to_event(delta["untypedData"]) plan = graphql_to_plan(delta["untypedData"])
self.onEventCreated(mid=mid, event=event, author_id=author_id, thread_id=thread_id, thread_type=thread_type, self.onPlanCreated(mid=mid, plan=plan, author_id=author_id, thread_id=thread_id, thread_type= thread_type, ts=ts, metadata=metadata, msg=m)
ts=ts, metadata=metadata, msg=m)
# Event reminder ended # Plan ended
elif delta.get("type") == "lightweight_event_notify": elif delta.get("type") == "lightweight_event_notify":
thread_id, thread_type = getThreadIdAndThreadType(metadata) thread_id, thread_type = getThreadIdAndThreadType(metadata)
event = graphql_to_event(delta["untypedData"]) plan = graphql_to_plan(delta["untypedData"])
self.onEventEnded(mid=mid, event=event, thread_id=thread_id, thread_type=thread_type, self.onPlanEnded(mid=mid, plan=plan, thread_id=thread_id, thread_type=thread_type,
ts=ts, metadata=metadata, msg=m) ts=ts, metadata=metadata, msg=m)
# Event reminder edited # Plan edited
elif delta.get("type") == "lightweight_event_update": elif delta.get("type") == "lightweight_event_update":
thread_id, thread_type = getThreadIdAndThreadType(metadata) thread_id, thread_type = getThreadIdAndThreadType(metadata)
event = graphql_to_event(delta["untypedData"]) plan = graphql_to_plan(delta["untypedData"])
self.onEventEdited(mid=mid, event=event, author_id=author_id, thread_id=thread_id, thread_type=thread_type, self.onPlanEdited(mid=mid, plan=plan, author_id=author_id, thread_id=thread_id, thread_type= thread_type, ts=ts, metadata=metadata, msg=m)
ts=ts, metadata=metadata, msg=m)
# Event reminder deleted # Plan deleted
elif delta.get("type") == "lightweight_event_delete": elif delta.get("type") == "lightweight_event_delete":
thread_id, thread_type = getThreadIdAndThreadType(metadata) thread_id, thread_type = getThreadIdAndThreadType(metadata)
event = graphql_to_event(delta["untypedData"]) plan = graphql_to_plan(delta["untypedData"])
self.onEventDeleted(mid=mid, event=event, author_id=author_id, thread_id=thread_id, thread_type=thread_type, self.onPlanDeleted(mid=mid, plan=plan, author_id=author_id, thread_id=thread_id, thread_type= thread_type, ts=ts, metadata=metadata, msg=m)
ts=ts, metadata=metadata, msg=m)
# Event reminder participation change # Plan participation change
elif delta.get("type") == "lightweight_event_rsvp": elif delta.get("type") == "lightweight_event_rsvp":
thread_id, thread_type = getThreadIdAndThreadType(metadata) thread_id, thread_type = getThreadIdAndThreadType(metadata)
event = graphql_to_event(delta["untypedData"]) plan = graphql_to_plan(delta["untypedData"])
take_part = delta["untypedData"]["guest_status"] == "GOING" take_part = delta["untypedData"]["guest_status"] == "GOING"
self.onEventParticipationChange(mid=mid, event=event, take_part=take_part, author_id=author_id, thread_id=thread_id, thread_type=thread_type, self.onPlanParticipation(mid=mid, plan=plan, take_part=take_part, author_id=author_id, thread_id=thread_id, thread_type=thread_type, ts=ts,
ts=ts, metadata=metadata, msg=m) metadata=metadata, msg=m)
# New message # New message
elif delta.get("class") == "NewMessage": elif delta.get("class") == "NewMessage":
@@ -3046,93 +3042,93 @@ class Client(object):
""" """
log.info("{} voted in poll {} in {} ({})".format(author_id, poll, thread_id, thread_type.name)) log.info("{} voted in poll {} in {} ({})".format(author_id, poll, thread_id, thread_type.name))
def onEventCreated(self, mid=None, event=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None): def onPlanCreated(self, mid=None, plan=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None):
""" """
Called when the client is listening, and somebody creates an event reminder Called when the client is listening, and somebody creates a plan
:param mid: The action ID :param mid: The action ID
:param event: Created event reminder :param plan: Created plan
:param author_id: The ID of the person who created the event reminder :param author_id: The ID of the person who created the plan
:param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads` :param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
:param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads` :param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads`
:param ts: A timestamp of the action :param ts: A timestamp of the action
:param metadata: Extra metadata about the action :param metadata: Extra metadata about the action
:param msg: A full set of the data recieved :param msg: A full set of the data recieved
:type event: models.Event :type plan: models.Plan
:type thread_type: models.ThreadType :type thread_type: models.ThreadType
""" """
log.info("{} created event reminder {} in {} ({})".format(author_id, event, thread_id, thread_type.name)) log.info("{} created plan {} in {} ({})".format(author_id, plan, thread_id, thread_type.name))
def onEventEnded(self, mid=None, event=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None): def onPlanEnded(self, mid=None, plan=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None):
""" """
Called when the client is listening, and an event reminder ends Called when the client is listening, and a plan ends
:param mid: The action ID :param mid: The action ID
:param event: Ended event reminder :param plan: Ended plan
:param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads` :param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
:param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads` :param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads`
:param ts: A timestamp of the action :param ts: A timestamp of the action
:param metadata: Extra metadata about the action :param metadata: Extra metadata about the action
:param msg: A full set of the data recieved :param msg: A full set of the data recieved
:type event: models.Event :type plan: models.Plan
:type thread_type: models.ThreadType :type thread_type: models.ThreadType
""" """
log.info("Event reminder {} has ended in {} ({})".format(event, thread_id, thread_type.name)) log.info("Plan {} has ended in {} ({})".format(plan, thread_id, thread_type.name))
def onEventEdited(self, mid=None, event=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None): def onPlanEdited(self, mid=None, plan=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None):
""" """
Called when the client is listening, and somebody edits an event reminder Called when the client is listening, and somebody edits a plan
:param mid: The action ID :param mid: The action ID
:param event: Edited event reminder :param plan: Edited plan
:param author_id: The ID of the person who edited the event reminder :param author_id: The ID of the person who edited the plan
:param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads` :param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
:param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads` :param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads`
:param ts: A timestamp of the action :param ts: A timestamp of the action
:param metadata: Extra metadata about the action :param metadata: Extra metadata about the action
:param msg: A full set of the data recieved :param msg: A full set of the data recieved
:type event: models.Event :type plan: models.Plan
:type thread_type: models.ThreadType :type thread_type: models.ThreadType
""" """
log.info("{} edited event reminder {} in {} ({})".format(author_id, event, thread_id, thread_type.name)) log.info("{} edited plan {} in {} ({})".format(author_id, plan, thread_id, thread_type.name))
def onEventDeleted(self, mid=None, event=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None): def onPlanDeleted(self, mid=None, plan=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None):
""" """
Called when the client is listening, and somebody deletes an event reminder Called when the client is listening, and somebody deletes a plan
:param mid: The action ID :param mid: The action ID
:param event: Deleted event reminder :param plan: Deleted plan
:param author_id: The ID of the person who deleted the event reminder :param author_id: The ID of the person who deleted the plan
:param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads` :param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
:param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads` :param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads`
:param ts: A timestamp of the action :param ts: A timestamp of the action
:param metadata: Extra metadata about the action :param metadata: Extra metadata about the action
:param msg: A full set of the data recieved :param msg: A full set of the data recieved
:type event: models.Event :type plan: models.Plan
:type thread_type: models.ThreadType :type thread_type: models.ThreadType
""" """
log.info("{} deleted event reminder {} in {} ({})".format(author_id, event, thread_id, thread_type.name)) log.info("{} deleted plan {} in {} ({})".format(author_id, plan, thread_id, thread_type.name))
def onEventParticipationChange(self, mid=None, event=None, take_part=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None): def onPlanParticipation(self, mid=None, plan=None, take_part=None, author_id=None, thread_id=None, thread_type=None, ts=None, metadata=None, msg=None):
""" """
Called when the client is listening, and somebody takes part in an event or not Called when the client is listening, and somebody takes part in a plan or not
:param mid: The action ID :param mid: The action ID
:param event: Event reminder :param plan: Plan
:param take_part: Whether the person takes part in the event or not :param take_part: Whether the person takes part in the plan or not
:param author_id: The ID of the person who deleted the event reminder :param author_id: The ID of the person who will participate in the plan or not
:param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads` :param thread_id: Thread ID that the action was sent to. See :ref:`intro_threads`
:param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads` :param thread_type: Type of thread that the action was sent to. See :ref:`intro_threads`
:param ts: A timestamp of the action :param ts: A timestamp of the action
:param metadata: Extra metadata about the action :param metadata: Extra metadata about the action
:param msg: A full set of the data recieved :param msg: A full set of the data recieved
:type event: models.Event :type plan: models.Plan
:type thread_type: models.ThreadType :type thread_type: models.ThreadType
""" """
if take_part: if take_part:
log.info("{} will take part in {} in {} ({})".format(author_id, event, thread_id, thread_type.name)) log.info("{} will take part in {} in {} ({})".format(author_id, plan, thread_id, thread_type.name))
else: else:
log.info("{} won't take part in {} in {} ({})".format(author_id, event, thread_id, thread_type.name)) log.info("{} won't take part in {} in {} ({})".format(author_id, plan, thread_id, thread_type.name))
""" """
END EVENTS END EVENTS