def useSession(self, sessionId, serverUrl): """Initialize from an existing sessionId & serverUrl Useful if we're being launched via a custom link """ self.sessionId = sessionId self.__serverUrl = serverUrl (scheme, host, path, params, query, frag) = urlparse(self.__serverUrl) self.__conn = makeConnection(scheme, host)
def post(self, conn=None, alwaysReturnList=False): """Complete the envelope and send the request does all the grunt work, serializes the request, makes a http request, passes the response to tramp checks for soap fault todo: check for mU='1' headers returns the relevant result from the body child """ headers = { "User-Agent": "BeatBox/" + __version__, "SOAPAction": '""', "Content-Type": "text/xml; charset=utf-8" } if beatbox.gzipResponse: headers['accept-encoding'] = 'gzip' if beatbox.gzipRequest: headers['content-encoding'] = 'gzip' close = False (scheme, host, path, params, query, frag) = urlparse(self.serverUrl) if conn is None: conn = makeConnection(scheme, host) close = True rawRequest = self.makeEnvelope() # print(rawRequest) conn.request("POST", self.serverUrl, rawRequest, headers) response = conn.getresponse() rawResponse = response.read() if response.getheader('content-encoding', '') == 'gzip': rawResponse = gzip.GzipFile(fileobj=BytesIO(rawResponse)).read() if close: conn.close() tramp = xmltramp.parse(rawResponse) try: faultString = str(tramp[_tSoapNS.Body][_tSoapNS.Fault].faultstring) faultCode = str( tramp[_tSoapNS.Body][_tSoapNS.Fault].faultcode).split(':')[-1] raise SoapFaultError(faultCode, faultString) except KeyError: pass # first child of body is XXXXResponse result = tramp[_tSoapNS.Body][0] # it contains either a single child, or for a batch call multiple children if alwaysReturnList or len(result) > 1: return result[:] else: return result[0]
def post(self, conn=None, alwaysReturnList=False): """Complete the envelope and send the request does all the grunt work, serializes the request, makes a http request, passes the response to tramp checks for soap fault todo: check for mU='1' headers returns the relevant result from the body child """ headers = {"User-Agent": "BeatBox/" + __version__, "SOAPAction": '""', "Content-Type": "text/xml; charset=utf-8"} if beatbox.gzipResponse: headers['accept-encoding'] = 'gzip' if beatbox. gzipRequest: headers['content-encoding'] = 'gzip' close = False (scheme, host, path, params, query, frag) = urlparse(self.serverUrl) if conn is None: conn = makeConnection(scheme, host) close = True rawRequest = self.makeEnvelope() # print(rawRequest) conn.request("POST", self.serverUrl, rawRequest, headers) response = conn.getresponse() rawResponse = response.read() if response.getheader('content-encoding', '') == 'gzip': rawResponse = gzip.GzipFile(fileobj=BytesIO(rawResponse)).read() if close: conn.close() tramp = xmltramp.parse(rawResponse) try: faultString = str(tramp[_tSoapNS.Body][_tSoapNS.Fault].faultstring) faultCode = str(tramp[_tSoapNS.Body][_tSoapNS.Fault].faultcode).split(':')[-1] raise SoapFaultError(faultCode, faultString) except KeyError: pass # first child of body is XXXXResponse result = tramp[_tSoapNS.Body][0] # it contains either a single child, or for a batch call multiple children if alwaysReturnList or len(result) > 1: return result[:] else: return result[0]