Skip to content

fix bug sequence post give wrong content-type #116

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 11 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions tls_client/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from typing import Union
import json
import base64


class Response:
Expand Down Expand Up @@ -72,7 +73,7 @@ def build_response(res: Union[dict, list], res_cookies: RequestsCookieJar) -> Re
# Add cookies
response.cookies = res_cookies
# Add response body
response.text = res["body"]
response.text = base64.b64decode(res["body"].split(',')[1]).decode(errors='ignore')
# Add response content (bytes)
response._content = res["body"].encode()
response._content = base64.b64decode(res["body"].split(',')[1])
return response
13 changes: 9 additions & 4 deletions tls_client/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import base64
import ctypes
import uuid
import urllib3


class Session:
Expand Down Expand Up @@ -310,7 +311,8 @@ def execute_request(
headers: Optional[dict] = None, # Optional[dict[str, str]]
cookies: Optional[dict] = None, # Optional[dict[str, str]]
json: Optional[dict] = None, # Optional[dict]
allow_redirects: Optional[bool] = False,
files = None,
allow_redirects: Optional[bool] = True,
insecure_skip_verify: Optional[bool] = False,
timeout_seconds: Optional[int] = None,
proxy: Optional[dict] = None # Optional[dict[str, str]]
Expand All @@ -319,7 +321,7 @@ def execute_request(
# Prepare URL - add params to url
if params is not None:
url = f"{url}?{urllib.parse.urlencode(params, doseq=True)}"

if headers is None: headers = {}
# --- Request Body ---------------------------------------------------------------------------------------------
# Prepare request body - build request body
# Data has priority. JSON is only used if data is None.
Expand All @@ -328,15 +330,17 @@ def execute_request(
json = dumps(json)
request_body = json
content_type = "application/json"
elif data is None and files is not None:
request_body, content_type = urllib3.encode_multipart_formdata(files)
elif data is not None and type(data) not in [str, bytes]:
request_body = urllib.parse.urlencode(data, doseq=True)
content_type = "application/x-www-form-urlencoded"
else:
request_body = data
content_type = None
# set content type if it isn't set
if content_type is not None and "content-type" not in self.headers:
self.headers["Content-Type"] = content_type
if content_type is not None and "content-type" not in self.headers and "content-type" not in headers:
headers["Content-Type"] = content_type

# --- Headers --------------------------------------------------------------------------------------------------
if self.headers is None:
Expand Down Expand Up @@ -397,6 +401,7 @@ def execute_request(
"headerOrder": self.header_order,
"insecureSkipVerify": insecure_skip_verify,
"isByteRequest": is_byte_request,
"isByteResponse": True,
"additionalDecode": self.additional_decode,
"proxyUrl": proxy,
"requestUrl": url,
Expand Down