h-message-bus 0.0.37__py3-none-any.whl → 0.0.39__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.
- h_message_bus/domain/models/request_message_topic.py +3 -0
- h_message_bus/domain/request_messages/twitter_search_request_message.py +73 -0
- h_message_bus/domain/request_messages/twitter_search_response_message.py +73 -0
- h_message_bus/domain/request_messages/twitter_user_tweets_response_message.py +1 -1
- {h_message_bus-0.0.37.dist-info → h_message_bus-0.0.39.dist-info}/METADATA +1 -1
- {h_message_bus-0.0.37.dist-info → h_message_bus-0.0.39.dist-info}/RECORD +8 -6
- {h_message_bus-0.0.37.dist-info → h_message_bus-0.0.39.dist-info}/WHEEL +1 -1
- {h_message_bus-0.0.37.dist-info → h_message_bus-0.0.39.dist-info}/top_level.txt +0 -0
@@ -59,6 +59,9 @@ class RequestMessageTopic(str, Enum):
|
|
59
59
|
TWITTER_GET_TWEET= "hai.twitter.get.tweet"
|
60
60
|
TWITTER_GET_TWEET_RESPONSE = "hai.twitter.get.tweet.response"
|
61
61
|
|
62
|
+
TWITTER_SEARCH= "hai.twitter.search"
|
63
|
+
TWITTER_SEARCH_RESPONSE = "hai.twitter.search.response"
|
64
|
+
|
62
65
|
# tools
|
63
66
|
WEB_SEARCH = "hai.tools.web.search"
|
64
67
|
WEB_SEARCH_RESPONSE = "hai.tools.web.search.response"
|
@@ -0,0 +1,73 @@
|
|
1
|
+
from typing import Dict, Any, Type, TypeVar, Optional, Literal, cast
|
2
|
+
|
3
|
+
from ..models.request_message_topic import RequestMessageTopic
|
4
|
+
from ...domain.models.hai_message import HaiMessage
|
5
|
+
|
6
|
+
T = TypeVar('T', bound='HaiMessage')
|
7
|
+
|
8
|
+
|
9
|
+
class TwitterSearchRequestMessage(HaiMessage):
|
10
|
+
"""Message to request Twitter search"""
|
11
|
+
|
12
|
+
@classmethod
|
13
|
+
def create(cls: Type[T], topic: str, payload: Dict[Any, Any]) -> T:
|
14
|
+
"""Create a message - inherited from HaiMessage"""
|
15
|
+
return super().create(topic=topic, payload=payload)
|
16
|
+
|
17
|
+
@classmethod
|
18
|
+
def create_message(
|
19
|
+
cls,
|
20
|
+
query: str,
|
21
|
+
max_results: int = 10,
|
22
|
+
min_view_count: int = 50,
|
23
|
+
sort_order: Literal["relevancy", "recency"] = "relevancy"
|
24
|
+
) -> 'TwitterSearchRequestMessage':
|
25
|
+
"""Create a message requesting Twitter search"""
|
26
|
+
return cls.create(
|
27
|
+
topic=RequestMessageTopic.TWITTER_SEARCH,
|
28
|
+
payload={
|
29
|
+
"query": query,
|
30
|
+
"max_results": max_results,
|
31
|
+
"min_view_count": min_view_count,
|
32
|
+
"sort_order": sort_order
|
33
|
+
},
|
34
|
+
)
|
35
|
+
|
36
|
+
@property
|
37
|
+
def query(self) -> str:
|
38
|
+
"""Get the search query from the payload"""
|
39
|
+
return self.payload.get("query", "")
|
40
|
+
|
41
|
+
@property
|
42
|
+
def max_results(self) -> int:
|
43
|
+
"""Get the maximum number of results from the payload"""
|
44
|
+
return self.payload.get("max_results", 10)
|
45
|
+
|
46
|
+
@property
|
47
|
+
def min_view_count(self) -> int:
|
48
|
+
"""Get the minimum view count from the payload"""
|
49
|
+
return self.payload.get("min_view_count", 50)
|
50
|
+
|
51
|
+
@property
|
52
|
+
def sort_order(self) -> Literal["relevancy", "recency"]:
|
53
|
+
"""Get the sort order from the payload"""
|
54
|
+
sort_order_str = self.payload.get("sort_order", "relevancy")
|
55
|
+
if sort_order_str not in ("relevancy", "recency"):
|
56
|
+
sort_order_str = "relevancy"
|
57
|
+
return cast(Literal["relevancy", "recency"], sort_order_str)
|
58
|
+
|
59
|
+
@classmethod
|
60
|
+
def from_hai_message(cls, message: HaiMessage) -> 'TwitterSearchRequestMessage':
|
61
|
+
"""Create a TwitterSearchRequestMessage from a HaiMessage"""
|
62
|
+
payload = message.payload
|
63
|
+
query = payload.get("query", "")
|
64
|
+
max_results = payload.get("max_results", 10)
|
65
|
+
min_view_count = payload.get("min_view_count", 50)
|
66
|
+
sort_order = payload.get("sort_order", "relevancy")
|
67
|
+
|
68
|
+
return cls.create_message(
|
69
|
+
query=query,
|
70
|
+
max_results=max_results,
|
71
|
+
min_view_count=min_view_count,
|
72
|
+
sort_order=sort_order
|
73
|
+
)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
from typing import Dict, Any, Type, TypeVar, List, Optional
|
2
|
+
import json
|
3
|
+
|
4
|
+
from ..models.request_message_topic import RequestMessageTopic
|
5
|
+
from ...domain.models.hai_message import HaiMessage
|
6
|
+
|
7
|
+
T = TypeVar('T', bound='HaiMessage')
|
8
|
+
|
9
|
+
|
10
|
+
class TwitterSearchResponseMessage(HaiMessage):
|
11
|
+
"""Message containing Twitter search results"""
|
12
|
+
|
13
|
+
@classmethod
|
14
|
+
def create(cls: Type[T], topic: str, payload: Dict[Any, Any]) -> T:
|
15
|
+
"""Create a message - inherited from HaiMessage"""
|
16
|
+
return super().create(topic=topic, payload=payload)
|
17
|
+
|
18
|
+
@classmethod
|
19
|
+
def create_message(
|
20
|
+
cls,
|
21
|
+
query: str,
|
22
|
+
results: List[Dict[str, Any]],
|
23
|
+
result_count: int,
|
24
|
+
request_id: str
|
25
|
+
) -> 'TwitterSearchResponseMessage':
|
26
|
+
"""Create a message containing Twitter search results"""
|
27
|
+
return cls.create(
|
28
|
+
topic=RequestMessageTopic.TWITTER_SEARCH_RESPONSE,
|
29
|
+
payload={
|
30
|
+
"query": query,
|
31
|
+
"results": json.dumps(results),
|
32
|
+
"result_count": result_count,
|
33
|
+
"request_id": request_id
|
34
|
+
},
|
35
|
+
)
|
36
|
+
|
37
|
+
@property
|
38
|
+
def query(self) -> str:
|
39
|
+
"""Get the search query from the payload"""
|
40
|
+
return self.payload.get("query", "")
|
41
|
+
|
42
|
+
@property
|
43
|
+
def result_count(self) -> int:
|
44
|
+
"""Get the number of results from the payload"""
|
45
|
+
return self.payload.get("result_count", 0)
|
46
|
+
|
47
|
+
@property
|
48
|
+
def request_id(self) -> str:
|
49
|
+
"""Get the original request ID from the payload"""
|
50
|
+
return self.payload.get("request_id", "")
|
51
|
+
|
52
|
+
@property
|
53
|
+
def results(self) -> List[Dict[str, Any]]:
|
54
|
+
"""Get the search results from the payload"""
|
55
|
+
results_json = self.payload.get("results", "[]")
|
56
|
+
return json.loads(results_json)
|
57
|
+
|
58
|
+
@classmethod
|
59
|
+
def from_hai_message(cls, message: HaiMessage) -> 'TwitterSearchResponseMessage':
|
60
|
+
"""Create a TwitterSearchResponseMessage from a HaiMessage"""
|
61
|
+
payload = message.payload
|
62
|
+
query = payload.get("query", "")
|
63
|
+
results_json = payload.get("results", "[]")
|
64
|
+
results = json.loads(results_json)
|
65
|
+
result_count = payload.get("result_count", 0)
|
66
|
+
request_id = payload.get("request_id", "")
|
67
|
+
|
68
|
+
return cls.create_message(
|
69
|
+
query=query,
|
70
|
+
results=results,
|
71
|
+
result_count=result_count,
|
72
|
+
request_id=request_id
|
73
|
+
)
|
@@ -77,7 +77,7 @@ class TwitterUserTweetsResponseMessage(HaiMessage):
|
|
77
77
|
"view_count": message.view_count,
|
78
78
|
"retweet_count": message.retweet_count,
|
79
79
|
"reply_count": message.reply_count,
|
80
|
-
"user": message.user
|
80
|
+
"user": message.user,
|
81
81
|
}
|
82
82
|
|
83
83
|
tweets.append(tweet_data)
|
@@ -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=
|
16
|
+
h_message_bus/domain/models/request_message_topic.py,sha256=a4V_D5tZX6iWUwl9hdfcplxvTzqK1GkKDDlhfN-4wE8,4105
|
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
|
@@ -56,8 +56,10 @@ h_message_bus/domain/request_messages/twitter_reply_request_message.py,sha256=7m
|
|
56
56
|
h_message_bus/domain/request_messages/twitter_reply_response_message.py,sha256=6_yQzPSnbueYM3aDsh5GNPr_QRSonY4VA5LqB5ZpCtQ,2061
|
57
57
|
h_message_bus/domain/request_messages/twitter_retweet_request_message.py,sha256=UHnLrgnqgZixb2q5ugFEHcCJxNkuTzrToGCEVoXm4gU,1423
|
58
58
|
h_message_bus/domain/request_messages/twitter_retweet_response_message.py,sha256=OGanRbX7AcKJ35H01wvp0XvuL-Chhm7f5J6NSpGq7uQ,1616
|
59
|
+
h_message_bus/domain/request_messages/twitter_search_request_message.py,sha256=9gKYMAO0CFVY3aS6Il2iQ5VLFo8GMXeuVdcVutJf-dk,2651
|
60
|
+
h_message_bus/domain/request_messages/twitter_search_response_message.py,sha256=P0MagAKNIXQrhT68oeOFoogY1p5IbDYkKloguX4O9vg,2493
|
59
61
|
h_message_bus/domain/request_messages/twitter_user_tweets_request_message.py,sha256=9vAhRxbCCDTqQNNKgp5cDIkiGIsnHwRSOwc6PK6TmcA,2397
|
60
|
-
h_message_bus/domain/request_messages/twitter_user_tweets_response_message.py,sha256=
|
62
|
+
h_message_bus/domain/request_messages/twitter_user_tweets_response_message.py,sha256=1oMoefXWq8C3_3xEQ3FBWQU-ATiUTYxEzOmqDuidtDU,3171
|
61
63
|
h_message_bus/domain/request_messages/vector_query_collection_request_message.py,sha256=x1J8SLVBlNS4TFzVJY9UG7mo94l9i4azndwzAlyktZw,1800
|
62
64
|
h_message_bus/domain/request_messages/vector_query_collection_response_message.py,sha256=Q589JT_QE-oVsTh1GEmK__3Hct7ijfM1UTcPi0YTGn8,1767
|
63
65
|
h_message_bus/domain/request_messages/vector_read_metadata_request_message.py,sha256=P9t6pcynS112F9_Jmbvw8wlfXhs5NOnV48SUVq92xt8,873
|
@@ -68,7 +70,7 @@ h_message_bus/domain/request_messages/web_search_request_message.py,sha256=ZoB4i
|
|
68
70
|
h_message_bus/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
71
|
h_message_bus/infrastructure/nats_client_repository.py,sha256=bhaWRK94h2EmFIef2DALnoBJKnuTnx6-iU7IXO2S_EU,3642
|
70
72
|
h_message_bus/infrastructure/nats_config.py,sha256=Yzqqd1bCfmUv_4FOnA1dvqIpakzV0BUL2_nXQcndWvo,1304
|
71
|
-
h_message_bus-0.0.
|
72
|
-
h_message_bus-0.0.
|
73
|
-
h_message_bus-0.0.
|
74
|
-
h_message_bus-0.0.
|
73
|
+
h_message_bus-0.0.39.dist-info/METADATA,sha256=KmLu3QbSLShufr-5caSergImL_oW9vElqIRMmXM8eqo,8834
|
74
|
+
h_message_bus-0.0.39.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
|
75
|
+
h_message_bus-0.0.39.dist-info/top_level.txt,sha256=BArjhm_lwFR9yJJEIf-LT_X64psuLkXFdbpQRJUreFE,23
|
76
|
+
h_message_bus-0.0.39.dist-info/RECORD,,
|
File without changes
|