Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
881aa9adce | ||
|
4714be5697 | ||
|
cb7f4a72d7 | ||
|
fb63ff0db8 |
@@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 1.9.1
|
current_version = 1.9.3
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ from ._client import Client
|
|||||||
from ._util import log # TODO: Remove this (from examples too)
|
from ._util import log # TODO: Remove this (from examples too)
|
||||||
|
|
||||||
__title__ = "fbchat"
|
__title__ = "fbchat"
|
||||||
__version__ = "1.9.1"
|
__version__ = "1.9.3"
|
||||||
__description__ = "Facebook Chat (Messenger) for Python"
|
__description__ = "Facebook Chat (Messenger) for Python"
|
||||||
|
|
||||||
__copyright__ = "Copyright 2015 - 2019 by Taehoon Kim"
|
__copyright__ = "Copyright 2015 - 2019 by Taehoon Kim"
|
||||||
|
@@ -74,8 +74,8 @@ class Mqtt(object):
|
|||||||
def _on_message_handler(self, client, userdata, message):
|
def _on_message_handler(self, client, userdata, message):
|
||||||
# Parse payload JSON
|
# Parse payload JSON
|
||||||
try:
|
try:
|
||||||
j = _util.parse_json(message.payload)
|
j = _util.parse_json(message.payload.decode("utf-8"))
|
||||||
except _exception.FBchatFacebookError:
|
except (_exception.FBchatFacebookError, UnicodeDecodeError):
|
||||||
log.exception("Failed parsing MQTT data on %s as JSON", message.topic)
|
log.exception("Failed parsing MQTT data on %s as JSON", message.topic)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -122,6 +122,13 @@ class Mqtt(object):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
def _on_connect_handler(self, client, userdata, flags, rc):
|
def _on_connect_handler(self, client, userdata, flags, rc):
|
||||||
|
if rc == 21:
|
||||||
|
raise _exception.FBchatException(
|
||||||
|
"Failed connecting. Maybe your cookies are wrong?"
|
||||||
|
)
|
||||||
|
if rc != 0:
|
||||||
|
return # Don't try to send publish if the connection failed
|
||||||
|
|
||||||
# configure receiving messages.
|
# configure receiving messages.
|
||||||
payload = {
|
payload = {
|
||||||
"sync_api_version": 10,
|
"sync_api_version": 10,
|
||||||
@@ -228,7 +235,9 @@ class Mqtt(object):
|
|||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
# TODO: Make this access thread safe
|
# TODO: Make this access thread safe
|
||||||
"Cookie": _util.get_cookie_header(self._state._session, self._HOST),
|
"Cookie": _util.get_cookie_header(
|
||||||
|
self._state._session, "https://edge-chat.facebook.com/chat"
|
||||||
|
),
|
||||||
"User-Agent": self._state._session.headers["User-Agent"],
|
"User-Agent": self._state._session.headers["User-Agent"],
|
||||||
"Origin": "https://www.facebook.com",
|
"Origin": "https://www.facebook.com",
|
||||||
"Host": self._HOST,
|
"Host": self._HOST,
|
||||||
|
@@ -70,10 +70,11 @@ def strip_json_cruft(text):
|
|||||||
raise FBchatException("No JSON object found: {!r}".format(text))
|
raise FBchatException("No JSON object found: {!r}".format(text))
|
||||||
|
|
||||||
|
|
||||||
def get_cookie_header(session, host):
|
def get_cookie_header(session, url):
|
||||||
"""Extract a cookie header from a requests session."""
|
"""Extract a cookie header from a requests session."""
|
||||||
|
# The cookies are extracted this way to make sure they're escaped correctly
|
||||||
return requests.cookies.get_cookie_header(
|
return requests.cookies.get_cookie_header(
|
||||||
session.cookies, requests.Request("GET", host),
|
session.cookies, requests.Request("GET", url),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user