Compare commits

...

2 Commits

Author SHA1 Message Date
Mads Marquart
cb7f4a72d7 Bump version: 1.9.1 → 1.9.2 2020-01-08 08:47:16 +01:00
Mads Marquart
fb63ff0db8 Fix cookie header extraction
Only worked when the cookies were loaded from file, hence the reason I
didn't spot it the first time. Thanks to @gave92 for the suggestion.

Fixes #495
2020-01-08 08:46:22 +01:00
4 changed files with 15 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.9.1
current_version = 1.9.2
commit = True
tag = True

View File

@@ -13,7 +13,7 @@ from ._client import Client
from ._util import log # TODO: Remove this (from examples too)
__title__ = "fbchat"
__version__ = "1.9.1"
__version__ = "1.9.2"
__description__ = "Facebook Chat (Messenger) for Python"
__copyright__ = "Copyright 2015 - 2019 by Taehoon Kim"

View File

@@ -122,6 +122,13 @@ class Mqtt(object):
raise
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.
payload = {
"sync_api_version": 10,
@@ -228,7 +235,9 @@ class Mqtt(object):
headers = {
# 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"],
"Origin": "https://www.facebook.com",
"Host": self._HOST,

View File

@@ -70,10 +70,11 @@ def strip_json_cruft(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."""
# The cookies are extracted this way to make sure they're escaped correctly
return requests.cookies.get_cookie_header(
session.cookies, requests.Request("GET", host),
session.cookies, requests.Request("GET", url),
)