Example #1
0
def request2har(request, operation, outgoing_data=None):
    """ Serialize QNetworkRequest to HAR. """
    return {
        "method": OPERATION_NAMES.get(operation, '?'),
        "url": six.text_type(request.url().toString()),
        "httpVersion": "HTTP/1.1",
        "cookies": request_cookies2har(request),
        "queryString": querystring2har(request.url()),
        "headers": headers2har(request),
        "headersSize": headers_size(request),
        "bodySize": outgoing_data.size() if outgoing_data is not None else -1,
    }
Example #2
0
def request2har(request, operation, outgoing_data=None):
    """ Serialize QNetworkRequest to HAR. """
    return {
        "method": OPERATION_NAMES.get(operation, '?'),
        "url": six.text_type(request.url().toString()),
        "httpVersion": "HTTP/1.1",
        "cookies": request_cookies2har(request),
        "queryString": querystring2har(request.url()),
        "headers": headers2har(request),
        "headersSize": headers_size(request),
        "bodySize": outgoing_data.size() if outgoing_data is not None else -1,
    }
Example #3
0
def request2har(request, operation, content=None):
    """ Serialize QNetworkRequest to HAR. """
    har = {
        "method": OPERATION_NAMES.get(operation, '?'),
        "url": str(request.url().toString()),
        "httpVersion": "HTTP/1.1",
        "cookies": request_cookies2har(request),
        "queryString": querystring2har(request.url()),
        "headers": headers2har(request),
        "headersSize": headers_size(request),
        "bodySize": -1
    }
    if content is not None:
        har["bodySize"] = len(content)
        content_type = request.header(QNetworkRequest.ContentTypeHeader)
        har["postData"] = _har_postdata(content, content_type)
    else:
        content_length = request.header(QNetworkRequest.ContentLengthHeader)
        if content_length is not None:
            har["bodySize"] = content_length
    return har
Example #4
0
    def createRequest(self, operation, request, outgoingData=None):
        """
        This method is called when a new request is sent;
        it must return a reply object to work with.
        """
        start_time = datetime.utcnow()

        request = self._wrapRequest(request)
        har_entry = self._harEntry(request, create=True)
        if har_entry is not None:
            if outgoingData is None:
                bodySize = -1
            else:
                bodySize = outgoingData.size()
            har_entry.update({
                '_tmp': {
                    'start_time': start_time,
                    'request_start_sending_time': start_time,
                    'request_sent_time': start_time,
                    'response_start_time': start_time,

                    # 'outgoingData': outgoingData,
                    'state': self.REQUEST_CREATED,
                },
                "startedDateTime": har.format_datetime(start_time),
                "request": {
                    "method": OPERATION_NAMES.get(operation, '?'),
                    "url": unicode(request.url().toString()),
                    "httpVersion": "HTTP/1.1",
                    "cookies": har_qt.request_cookies2har(request),
                    "queryString": har_qt.querystring2har(request.url()),
                    "headers": har_qt.headers2har(request),

                    "headersSize" : har_qt.headers_size(request),
                    "bodySize": bodySize,
                },
                "response": {
                    "bodySize": -1,
                },
                "cache": {},
                "timings": {
                    "blocked": -1,
                    "dns": -1,
                    "connect": -1,
                    "ssl": -1,

                    "send": 0,
                    "wait": 0,
                    "receive": 0,
                },
                "time": 0,
            })

        with self._proxyApplied(request):
            reply = super(ProxiedQNetworkAccessManager, self).createRequest(
                operation, request, outgoingData
            )
            if har_entry is not None:
                har_entry["response"].update(har_qt.reply2har(reply))

            reply.error.connect(self._handleError)
            reply.finished.connect(self._handleFinished)
            reply.metaDataChanged.connect(self._handleMetaData)
            reply.downloadProgress.connect(self._handleDownloadProgress)

        return reply
Example #5
0
    def createRequest(self, operation, request, outgoingData=None):
        """
        This method is called when a new request is sent;
        it must return a reply object to work with.
        """
        start_time = datetime.utcnow()

        request = self._wrapRequest(request)
        self._handle_custom_headers(request)
        self._handle_request_cookies(request)

        har_entry = self._harEntry(request, create=True)
        if har_entry is not None:
            if outgoingData is None:
                bodySize = -1
            else:
                bodySize = outgoingData.size()
            har_entry.update({
                '_tmp': {
                    'start_time': start_time,
                    'request_start_sending_time': start_time,
                    'request_sent_time': start_time,
                    'response_start_time': start_time,

                    # 'outgoingData': outgoingData,
                    'state': self.REQUEST_CREATED,
                },
                "startedDateTime": har.format_datetime(start_time),
                "request": {
                    "method": OPERATION_NAMES.get(operation, '?'),
                    "url": unicode(request.url().toString()),
                    "httpVersion": "HTTP/1.1",
                    "cookies": har_qt.request_cookies2har(request),
                    "queryString": har_qt.querystring2har(request.url()),
                    "headers": har_qt.headers2har(request),
                    "headersSize": har_qt.headers_size(request),
                    "bodySize": bodySize,
                },
                "response": {
                    "bodySize": -1,
                },
                "cache": {},
                "timings": {
                    "blocked": -1,
                    "dns": -1,
                    "connect": -1,
                    "ssl": -1,
                    "send": 0,
                    "wait": 0,
                    "receive": 0,
                },
                "time": 0,
            })

        with self._proxyApplied(request):
            reply = super(ProxiedQNetworkAccessManager,
                          self).createRequest(operation, request, outgoingData)
            if har_entry is not None:
                har_entry["response"].update(har_qt.reply2har(reply))

            reply.error.connect(self._handleError)
            reply.finished.connect(self._handleFinished)
            reply.metaDataChanged.connect(self._handleMetaData)
            reply.downloadProgress.connect(self._handleDownloadProgress)

        return reply