Skip to content

Instantly share code, notes, and snippets.

@maxpoletaev
Last active December 17, 2015 14:39
Show Gist options
  • Save maxpoletaev/5625829 to your computer and use it in GitHub Desktop.
Save maxpoletaev/5625829 to your computer and use it in GitHub Desktop.
CookieTransport for xmlrpclib
import xmlrpclib
def xmlrpc(url):
api = xmlrpclib.Server(url, transport=CookieTransport())
return api
class CookieTransport(xmlrpclib.Transport):
cookies = []
def send_cookies(self, connection):
if self.cookies:
for cookie in self.cookies:
connection.putheader("Cookie", cookie)
def request(self, host, handler, request_body, verbose=0):
self.verbose = verbose
h = self.make_connection(host)
self.send_request(h, handler, request_body)
self.send_host(h, host)
self.send_cookies(h)
self.send_user_agent(h)
self.send_content(h, request_body)
response = h.getresponse()
for header in response.msg.getallmatchingheaders("Set-Cookie"):
val = header.split(": ", 1)[1]
cookie = val.split(";", 1)[0]
self.cookies.append(cookie)
return self.parse_response(response)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment