Skip to content

Commit

Permalink
use same timestamp for one goal
Browse files Browse the repository at this point in the history
  • Loading branch information
knorth55 committed Nov 30, 2022
1 parent df97cc0 commit c1d500c
Showing 1 changed file with 30 additions and 14 deletions.
44 changes: 30 additions & 14 deletions google_chat_ros/scripts/google_chat_ros_node.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env python3
import datetime
import gdown
import json
import os
Expand Down Expand Up @@ -109,6 +110,7 @@ def rest_cb(self, goal):

# Card
json_body['cards'] = []
timestamp = '{0:%Y%m%d%H%M%S}'.format(datetime.datetime.now())
if goal.cards:
if goal.update_message:
json_body['actionResponse'] = {"type": "UPDATE_MESSAGE"}
Expand All @@ -124,10 +126,12 @@ def rest_cb(self, goal):
if card.header.image_url:
header['imageUrl'] = card.header.image_url
elif card.header.image_filepath:
header['imageUrl'] = self._upload_file(card.header.image_filepath)
header['imageUrl'] = self._upload_file(
card.header.image_filepath, timestamp=timestamp)
# card/sections
sections = []
sections = self._make_sections_json(card.sections)
sections = self._make_sections_json(
card.sections, timestamp=timestamp)
# card/actions
card_actions = []
for card_action_msg in card.card_actions:
Expand Down Expand Up @@ -269,7 +273,7 @@ def _make_message_msg(self, event):

return message

def _make_sections_json(self, sections_msg):
def _make_sections_json(self, sections_msg, timestamp=None):
"""
:type msg: list of google_chat_ros.msgs/Section
:rtype json_body: list of json
Expand All @@ -279,11 +283,12 @@ def _make_sections_json(self, sections_msg):
section = {}
if msg.header:
section['header'] = msg.header
section['widgets'] = self._make_widget_markups_json(msg.widgets)
section['widgets'] = self._make_widget_markups_json(
msg.widgets, timestamp=timestamp)
json_body.append(section)
return json_body

def _make_widget_markups_json(self, widgets_msg):
def _make_widget_markups_json(self, widgets_msg, timestamp=None):
"""Make widget markup json lists.
See https://developers.google.com/chat/api/reference/rest/v1/cards#widgetmarkup for details.
:rtype widgets_msg: list of google_chat_ros.msgs/WidgetMarkup
Expand All @@ -298,7 +303,8 @@ def _make_widget_markups_json(self, widgets_msg):
buttons = []
buttons_msg = msg.buttons
for button_msg in buttons_msg:
buttons.append(self._make_button_json(button_msg))
buttons.append(
self._make_button_json(button_msg, timestamp=timestamp))
if buttons:
json_body.append({'buttons':buttons})

Expand All @@ -311,7 +317,8 @@ def _make_widget_markups_json(self, widgets_msg):
if msg.image.image_url:
image_json['imageUrl'] = msg.image.image_url
elif msg.image.localpath:
image_json['imageUrl'] = self._upload_file(msg.image.localpath)
image_json['imageUrl'] = self._upload_file(
msg.image.localpath, timestamp=timestamp)
if msg.image.on_click.action.action_method_name or msg.image.on_click.open_link_url:
image_json['onClick'] = self._make_on_click_json(msg.image.on_click)
if msg.image.aspect_ratio:
Expand All @@ -330,9 +337,12 @@ def _make_widget_markups_json(self, widgets_msg):
elif msg.key_value.original_icon_url:
keyval_json['iconUrl'] = msg.key_value.original_icon_url
elif msg.key_value.original_icon_localpath:
keyval_json['iconUrl'] = self._upload_file(msg.key_value.original_icon_localpath)
keyval_json['iconUrl'] = self._upload_file(
msg.key_value.original_icon_localpath,
timestamp=timestamp)
if msg.key_value.button.text_button_name or msg.key_value.button.image_button_name:
keyval_json['button'] = self._make_button_json(msg.key_value.button)
keyval_json['button'] = self._make_button_json(
msg.key_value.button, timestamp=timestamp)
json_body.append({'keyValue':keyval_json})
return json_body

Expand All @@ -357,7 +367,7 @@ def _make_on_click_json(self, on_click_msg):
json_body['openLink'] = {'url': on_click_msg.open_link_url}
return json_body

def _make_button_json(self, button_msg):
def _make_button_json(self, button_msg, timestamp=None):
"""Make button json.
See https://developers.google.com/chat/api/reference/rest/v1/cards#button for details.
:rtype button_msg: google_chat_ros.msg/Button.msg
Expand All @@ -381,7 +391,8 @@ def _make_button_json(self, button_msg):
elif button_msg.original_icon_url:
image_icon['iconUrl'] = button_msg.original_icon_url
elif button_msg.original_icon_filepath:
image_icon['iconUrl'] = self._upload_file(button_msg.original_icon_filepath)
image_icon['iconUrl'] = self._upload_file(
button_msg.original_icon_filepath, timestamp=timestamp)
return json_body

def _get_user_info(self, item):
Expand All @@ -396,7 +407,7 @@ def _get_user_info(self, item):
user.human = True if item.get('type') == "HUMAN" else False
return user

def _upload_file(self, filepath, return_id=False):
def _upload_file(self, filepath, return_id=False, timestamp=None):
"""Get local filepath and upload to Google Drive
:param filepath: local file's path you want to upload
:type filepath: string
Expand All @@ -412,11 +423,16 @@ def _upload_file(self, filepath, return_id=False):
rospy.logerr(e)
return
# upload
if timestamp is None:
parents_path = self.upload_parents_path
else:
parents_path = '{}/{}'.format(
self.upload_parents_path, timestamp)
try:
res = gdrive_upload(
file_path=filepath,
parents_path=self.upload_parents_path,
use_timestamp_folder=True,
parents_path=parents_path,
use_timestamp_folder=False,
)
except rospy.ServiceException as e:
rospy.logerr("Failed to call Google Drive upload service, status:{}".format(str(e)))
Expand Down

0 comments on commit c1d500c

Please sign in to comment.