Move client session into State
This commit is contained in:
@@ -130,7 +130,7 @@ class Client(object):
|
|||||||
allow_redirects=True,
|
allow_redirects=True,
|
||||||
):
|
):
|
||||||
payload = self._generatePayload(query)
|
payload = self._generatePayload(query)
|
||||||
r = self._session.get(
|
r = self._state._session.get(
|
||||||
prefix_url(url),
|
prefix_url(url),
|
||||||
headers=self._header,
|
headers=self._header,
|
||||||
params=payload,
|
params=payload,
|
||||||
@@ -163,7 +163,7 @@ class Client(object):
|
|||||||
error_retries=3,
|
error_retries=3,
|
||||||
):
|
):
|
||||||
payload = self._generatePayload(query)
|
payload = self._generatePayload(query)
|
||||||
r = self._session.post(
|
r = self._state._session.post(
|
||||||
prefix_url(url), headers=self._header, data=payload, verify=self.ssl_verify
|
prefix_url(url), headers=self._header, data=payload, verify=self.ssl_verify
|
||||||
)
|
)
|
||||||
if not fix_request:
|
if not fix_request:
|
||||||
@@ -200,7 +200,7 @@ class Client(object):
|
|||||||
headers = dict(
|
headers = dict(
|
||||||
(i, self._header[i]) for i in self._header if i != "Content-Type"
|
(i, self._header[i]) for i in self._header if i != "Content-Type"
|
||||||
)
|
)
|
||||||
r = self._session.post(
|
r = self._state._session.post(
|
||||||
prefix_url(url),
|
prefix_url(url),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
data=payload,
|
data=payload,
|
||||||
@@ -259,19 +259,18 @@ class Client(object):
|
|||||||
|
|
||||||
def _resetValues(self):
|
def _resetValues(self):
|
||||||
self._state = State()
|
self._state = State()
|
||||||
self._session = requests.session()
|
|
||||||
self._seq = "0"
|
self._seq = "0"
|
||||||
self._uid = None
|
self._uid = None
|
||||||
self._client_id = hex(int(random() * 2147483648))[2:]
|
self._client_id = hex(int(random() * 2147483648))[2:]
|
||||||
|
|
||||||
def _postLogin(self):
|
def _postLogin(self):
|
||||||
self._uid = self._session.cookies.get_dict().get("c_user")
|
self._uid = self._state._session.cookies.get_dict().get("c_user")
|
||||||
if self._uid is None:
|
if self._uid is None:
|
||||||
raise FBchatException("Could not find c_user cookie")
|
raise FBchatException("Could not find c_user cookie")
|
||||||
self._uid = str(self._uid)
|
self._uid = str(self._uid)
|
||||||
|
|
||||||
r = self._get("/")
|
r = self._get("/")
|
||||||
self._state = State.from_base_request(r.text)
|
self._state = State.from_base_request(self._state._session, r.text)
|
||||||
|
|
||||||
def _login(self, email, password):
|
def _login(self, email, password):
|
||||||
soup = bs(self._get("https://m.facebook.com/").text, "html.parser")
|
soup = bs(self._get("https://m.facebook.com/").text, "html.parser")
|
||||||
@@ -379,7 +378,7 @@ class Client(object):
|
|||||||
:return: A dictionay containing session cookies
|
:return: A dictionay containing session cookies
|
||||||
:rtype: dict
|
:rtype: dict
|
||||||
"""
|
"""
|
||||||
return self._session.cookies.get_dict()
|
return self._state._session.cookies.get_dict()
|
||||||
|
|
||||||
def setSession(self, session_cookies):
|
def setSession(self, session_cookies):
|
||||||
"""Loads session cookies
|
"""Loads session cookies
|
||||||
@@ -395,8 +394,8 @@ class Client(object):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Load cookies into current session
|
# Load cookies into current session
|
||||||
self._session.cookies = requests.cookies.merge_cookies(
|
self._state._session.cookies = requests.cookies.merge_cookies(
|
||||||
self._session.cookies, session_cookies
|
self._state._session.cookies, session_cookies
|
||||||
)
|
)
|
||||||
self._postLogin()
|
self._postLogin()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@@ -4,6 +4,7 @@ from __future__ import unicode_literals
|
|||||||
import attr
|
import attr
|
||||||
import bs4
|
import bs4
|
||||||
import re
|
import re
|
||||||
|
import requests
|
||||||
|
|
||||||
from . import _util
|
from . import _util
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ FB_DTSG_REGEX = re.compile(r'name="fb_dtsg" value="(.*?)"')
|
|||||||
class State(object):
|
class State(object):
|
||||||
"""Stores and manages state required for most Facebook requests."""
|
"""Stores and manages state required for most Facebook requests."""
|
||||||
|
|
||||||
|
_session = attr.ib(factory=requests.session)
|
||||||
fb_dtsg = attr.ib(None)
|
fb_dtsg = attr.ib(None)
|
||||||
_revision = attr.ib(None)
|
_revision = attr.ib(None)
|
||||||
_counter = attr.ib(0)
|
_counter = attr.ib(0)
|
||||||
@@ -35,7 +37,7 @@ class State(object):
|
|||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_base_request(cls, content):
|
def from_base_request(cls, session, content):
|
||||||
soup = bs4.BeautifulSoup(content, "html.parser")
|
soup = bs4.BeautifulSoup(content, "html.parser")
|
||||||
|
|
||||||
fb_dtsg_element = soup.find("input", {"name": "fb_dtsg"})
|
fb_dtsg_element = soup.find("input", {"name": "fb_dtsg"})
|
||||||
@@ -50,4 +52,6 @@ class State(object):
|
|||||||
logout_h_element = soup.find("input", {"name": "h"})
|
logout_h_element = soup.find("input", {"name": "h"})
|
||||||
logout_h = logout_h_element["value"] if logout_h_element else None
|
logout_h = logout_h_element["value"] if logout_h_element else None
|
||||||
|
|
||||||
return cls(fb_dtsg=fb_dtsg, revision=revision, logout_h=logout_h)
|
return cls(
|
||||||
|
session=session, fb_dtsg=fb_dtsg, revision=revision, logout_h=logout_h
|
||||||
|
)
|
||||||
|
Reference in New Issue
Block a user