Example #1
0
    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)
Example #2
0
    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)
Example #3
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]
Example #4
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]