h-message-bus 0.0.34__py3-none-any.whl → 0.0.35__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,6 +53,9 @@ class RequestMessageTopic(str, Enum):
53
53
  TWITTER_POST_TWEET= "hai.twitter.post.tweet"
54
54
  TWITTER_POST_TWEET_RESPONSE = "hai.twitter.post.tweet.response"
55
55
 
56
+ TWITTER_QUOTE_RETWEET= "hai.twitter.quote.retweet"
57
+ TWITTER_QUOTE_RETWEET_RESPONSE = "hai.twitter.quote.retweet.response"
58
+
56
59
  # tools
57
60
  WEB_SEARCH = "hai.tools.web.search"
58
61
  WEB_SEARCH_RESPONSE = "hai.tools.web.search.response"
@@ -0,0 +1,48 @@
1
+ from dataclasses import dataclass
2
+ from typing import Type, Dict, Any, TypeVar
3
+
4
+ from ..models.request_message_topic import RequestMessageTopic
5
+ from ...domain.models.hai_message import HaiMessage
6
+
7
+ T = TypeVar('T', bound='TwitterQuoteRetweetRequestMessage')
8
+
9
+
10
+ @dataclass
11
+ class TwitterQuoteRetweetRequestMessage(HaiMessage):
12
+ """Message to request creating a quote retweet"""
13
+
14
+ @classmethod
15
+ def create(cls: Type[T], topic: str, payload: Dict[Any, Any]) -> T:
16
+ """Create a message - inherited from HaiMessage"""
17
+ return super().create(topic=topic, payload=payload)
18
+
19
+ @classmethod
20
+ def create_message(cls, tweet_id: str, text: str) -> 'TwitterQuoteRetweetRequestMessage':
21
+ """Create a message requesting to quote retweet a tweet"""
22
+ return cls.create(
23
+ topic=RequestMessageTopic.TWITTER_QUOTE_RETWEET, # You'll need to add this to RequestMessageTopic
24
+ payload={
25
+ "tweet_id": tweet_id,
26
+ "text": text
27
+ },
28
+ )
29
+
30
+ @property
31
+ def tweet_id(self) -> str:
32
+ """Get the tweet ID to quote retweet from the payload"""
33
+ return self.payload.get("tweet_id", "")
34
+
35
+ @property
36
+ def text(self) -> str:
37
+ """Get the text content to add to the quote retweet from the payload"""
38
+ return self.payload.get("text", "")
39
+
40
+ @classmethod
41
+ def from_hai_message(cls, message: HaiMessage) -> 'TwitterQuoteRetweetRequestMessage':
42
+ """Create a TwitterQuoteRetweetRequestMessage from a HaiMessage"""
43
+ payload = message.payload
44
+
45
+ return cls.create_message(
46
+ tweet_id=payload.get("tweet_id", ""),
47
+ text=payload.get("text", "")
48
+ )
@@ -0,0 +1,55 @@
1
+ from dataclasses import dataclass
2
+ from typing import Type, Dict, Any, TypeVar, Optional
3
+
4
+ from ..models.request_message_topic import RequestMessageTopic
5
+ from ...domain.models.hai_message import HaiMessage
6
+
7
+ T = TypeVar('T', bound='TwitterQuoteRetweetResponseMessage')
8
+
9
+
10
+ @dataclass
11
+ class TwitterQuoteRetweetResponseMessage(HaiMessage):
12
+ """Message to respond to a request to quote retweet a tweet"""
13
+
14
+ @classmethod
15
+ def create(cls: Type[T], topic: str, payload: Dict[Any, Any]) -> T:
16
+ """Create a message - inherited from HaiMessage"""
17
+ return super().create(topic=topic, payload=payload)
18
+
19
+ @classmethod
20
+ def create_message(cls,
21
+ original_tweet_id: str,
22
+ success: bool,
23
+ quote_tweet: Optional[Dict[str, Any]] = None,
24
+ error_message: str = "") -> 'TwitterQuoteRetweetResponseMessage':
25
+ """Create a response message for a request to quote retweet a tweet"""
26
+ return cls.create(
27
+ topic=RequestMessageTopic.TWITTER_QUOTE_RETWEET_RESPONSE,
28
+ # You'll need to add this to ResponseMessageTopic
29
+ payload={
30
+ "original_tweet_id": original_tweet_id,
31
+ "success": success,
32
+ "quote_tweet": quote_tweet,
33
+ "error_message": error_message
34
+ },
35
+ )
36
+
37
+ @property
38
+ def original_tweet_id(self) -> str:
39
+ """Get the original tweet ID that was quote retweeted"""
40
+ return self.payload.get("original_tweet_id", "")
41
+
42
+ @property
43
+ def success(self) -> bool:
44
+ """Get whether the quote retweet operation was successful"""
45
+ return self.payload.get("success", False)
46
+
47
+ @property
48
+ def quote_tweet(self) -> Optional[Dict[str, Any]]:
49
+ """Get the quote tweet data if the operation was successful"""
50
+ return self.payload.get("quote_tweet", None)
51
+
52
+ @property
53
+ def error_message(self) -> str:
54
+ """Get the error message if the quote retweet operation failed"""
55
+ return self.payload.get("error_message", "")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: h_message_bus
3
- Version: 0.0.34
3
+ Version: 0.0.35
4
4
  Summary: Message bus integration for HAI
5
5
  Author-email: shoebill <shoebill.hai@gmail.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -13,7 +13,7 @@ h_message_bus/domain/event_messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
13
13
  h_message_bus/domain/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  h_message_bus/domain/models/event_message_topic.py,sha256=fSjRMBwMD2RE9GBUud38XMrgLZcngURERrbuoAhQ0Hk,717
15
15
  h_message_bus/domain/models/hai_message.py,sha256=b5CfX7hi5uNq77IVnZzEi9iotc4b_U2MNYwV6JY7JcU,2146
16
- h_message_bus/domain/models/request_message_topic.py,sha256=2RpZjTmMxf1OFt5Sl5qCABeNdvZz2uldf15Oeg8NeRA,3750
16
+ h_message_bus/domain/models/request_message_topic.py,sha256=uXc3F68WU7O813QQARmObcBrlJ-PODs_259fq7OStuw,3883
17
17
  h_message_bus/domain/models/twitter_message_metadata.py,sha256=Cj0dSVQi0Com9nPlJeEM0c-ZAQKGqIq_txvdzYg0myw,1203
18
18
  h_message_bus/domain/models/twitter_user_metadata.py,sha256=N7GVyn2txmlMQ19aatNh7lvzO6FNSj4dKVujestha9o,2827
19
19
  h_message_bus/domain/models/vector_collection_metadata.py,sha256=fSy3ZQ-zkYISTpc-_M6XWf1JkufVAlzlS2ZT60TzA2s,891
@@ -48,6 +48,8 @@ h_message_bus/domain/request_messages/twitter_home_timeline_request_message.py,s
48
48
  h_message_bus/domain/request_messages/twitter_home_timeline_response_message.py,sha256=SayIWgfMBFJMGN5fBk4vWACb7eL-hDajAF2wXy5e6kg,2631
49
49
  h_message_bus/domain/request_messages/twitter_post_tweet_request_message.py,sha256=zStezEUsJMhqQEsP3vkdVvvGSfaFpEykIwpIlOs8X8M,1427
50
50
  h_message_bus/domain/request_messages/twitter_post_tweet_response_message.py,sha256=FrlRs_lYfcuJ65b0nYcMee6kxXG22iFVXT3r5Cy8zJo,1777
51
+ h_message_bus/domain/request_messages/twitter_quote_retweet_request_message.py,sha256=swnbdSjCRdc7FA2NPONdlnH5V2WgAptKVIAdaotpwP8,1741
52
+ h_message_bus/domain/request_messages/twitter_quote_retweet_response_message.py,sha256=xNGfGfET0CHbn1Uk02T7h8v7zlSduVtTLva-7jwYWs4,2133
51
53
  h_message_bus/domain/request_messages/twitter_reply_request_message.py,sha256=7mJhRaZxZJczV1dDraXC0uLIn6ZAtWSNusM3zKASQmw,1668
52
54
  h_message_bus/domain/request_messages/twitter_reply_response_message.py,sha256=6_yQzPSnbueYM3aDsh5GNPr_QRSonY4VA5LqB5ZpCtQ,2061
53
55
  h_message_bus/domain/request_messages/twitter_retweet_request_message.py,sha256=UHnLrgnqgZixb2q5ugFEHcCJxNkuTzrToGCEVoXm4gU,1423
@@ -64,7 +66,7 @@ h_message_bus/domain/request_messages/web_search_request_message.py,sha256=ZoB4i
64
66
  h_message_bus/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
67
  h_message_bus/infrastructure/nats_client_repository.py,sha256=bhaWRK94h2EmFIef2DALnoBJKnuTnx6-iU7IXO2S_EU,3642
66
68
  h_message_bus/infrastructure/nats_config.py,sha256=Yzqqd1bCfmUv_4FOnA1dvqIpakzV0BUL2_nXQcndWvo,1304
67
- h_message_bus-0.0.34.dist-info/METADATA,sha256=D8pIkAWqC-TBoAsTNgN-K0WQ9PhD6GecMaxJ2vAye2k,8834
68
- h_message_bus-0.0.34.dist-info/WHEEL,sha256=7ciDxtlje1X8OhobNuGgi1t-ACdFSelPnSmDPrtlobY,91
69
- h_message_bus-0.0.34.dist-info/top_level.txt,sha256=BArjhm_lwFR9yJJEIf-LT_X64psuLkXFdbpQRJUreFE,23
70
- h_message_bus-0.0.34.dist-info/RECORD,,
69
+ h_message_bus-0.0.35.dist-info/METADATA,sha256=IsK8LwYq_OgBL1ut9W0-4Bm2dp5uKbkR4UesiNQ7490,8834
70
+ h_message_bus-0.0.35.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
71
+ h_message_bus-0.0.35.dist-info/top_level.txt,sha256=BArjhm_lwFR9yJJEIf-LT_X64psuLkXFdbpQRJUreFE,23
72
+ h_message_bus-0.0.35.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.2.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5