|
22 | 22 |
|
23 | 23 |
|
24 | 24 | class Beam: |
25 | | - path = "https://beam.pro/api/v1/" |
26 | | - |
27 | | - message_id = 0 |
| 25 | + PATH = "https://beam.pro/api/v1/" |
28 | 26 |
|
29 | 27 | def __init__(self, debug="INFO", **kwargs): |
30 | 28 | self._init_logger(debug, kwargs.get("log_to_file", True)) |
| 29 | + |
| 30 | + self.message_id = 0 |
| 31 | + self.csrf_token = None |
| 32 | + |
31 | 33 | self.http_session = Session() |
32 | 34 |
|
33 | 35 | def _init_logger(self, level="INFO", file_logging=True, **kwargs): |
@@ -94,7 +96,18 @@ def _init_users(self): |
94 | 96 | def _request(self, url, method="GET", **kwargs): |
95 | 97 | """Send HTTP request to Beam.""" |
96 | 98 | response = self.http_session.request( |
97 | | - method, urljoin(self.path, url.lstrip('/')), **kwargs) |
| 99 | + method, |
| 100 | + urljoin(self.PATH, url.lstrip('/')), |
| 101 | + headers={"X-CSRF-Token": self.csrf_token}, |
| 102 | + **kwargs |
| 103 | + ) |
| 104 | + |
| 105 | + if self.csrf_token is None: |
| 106 | + self.csrf_token = response.headers.get("X-CSRF-Token") |
| 107 | + elif response.status_code == 461: |
| 108 | + self.csrf_token = response.headers.get("X-CSRF-Token") |
| 109 | + self._request(url, method, **kwargs) |
| 110 | + |
98 | 111 | try: |
99 | 112 | return response.json() |
100 | 113 | except Exception: |
@@ -221,10 +234,9 @@ def send_message(self, *args, method="msg"): |
221 | 234 | user=args[0], |
222 | 235 | message=args[1])) |
223 | 236 |
|
224 | | - def remove_message(self, channel_id, message_id): |
| 237 | + def remove_message(self, message_id): |
225 | 238 | """Remove a message from chat.""" |
226 | | - return self._request("/chats/{id}/message/{message}".format( |
227 | | - id=channel_id, message=message_id), method="DELETE") |
| 239 | + return self.send_message(message_id, method="deleteMessage") |
228 | 240 |
|
229 | 241 | @coroutine |
230 | 242 | def read_chat(self, handler=None): |
@@ -407,5 +419,5 @@ def watch_liveloading(self, handler=None): |
407 | 419 | self.logger.info("- {} hosted the channel.".format( |
408 | 420 | packet["data"][1]["hoster"]["token"])) |
409 | 421 | self.send_message( |
410 | | - "Thanks for the hosting the channel, @{}!".format( |
| 422 | + "Thanks for hosting the channel, @{}!".format( |
411 | 423 | packet["data"][1]["hoster"]["token"])) |
0 commit comments