andreped commited on
Commit
d56adb4
·
1 Parent(s): 6bbfb30

Implemented methods in Postly client for likes

Browse files
Files changed (1) hide show
  1. postly/clients/postly_client.py +33 -0
postly/clients/postly_client.py CHANGED
@@ -214,3 +214,36 @@ class PostlyClient:
214
 
215
  # retrieve top topics in descending order
216
  return [topic for topic, _ in topics_frequency.most_common()]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
 
215
  # retrieve top topics in descending order
216
  return [topic for topic, _ in topics_frequency.most_common()]
217
+
218
+ def like_post(self, user_name: str, post_id: int) -> None:
219
+ """
220
+ Like or unlike a post.
221
+
222
+ Args:
223
+ user_name: The name of the user liking the post.
224
+ post_id: The ID of the post to like or unlike.
225
+ Returns:
226
+ None
227
+ """
228
+ post = self.get_post_by_id(post_id)
229
+ if user_name in post.liked_by:
230
+ post.liked_by.remove(user_name)
231
+ post.likes -= 1
232
+ else:
233
+ post.liked_by.add(user_name)
234
+ post.likes += 1
235
+
236
+ def get_post_by_id(self, post_id: int) -> Post:
237
+ """
238
+ Get a post by its ID.
239
+
240
+ Args:
241
+ post_id: The ID of the post to retrieve.
242
+ Returns:
243
+ The post with the given ID.
244
+ """
245
+ for user_posts in self.userPosts.values():
246
+ for post in user_posts:
247
+ if post.timestamp == post_id:
248
+ return post
249
+ raise KeyError("Post not found")