def get(
        self, id, requester_user, download=False, compress=False, pretty_format=False
    ):
        """
        Retrieve raw action execution result object as a JSON string or optionally force result
        download as a (compressed) file.

        This is primarily to be used in scenarios where executions contain large results and JSON
        loading and parsing it can be slow (e.g. in the st2web) and we just want to display raw
        result.

        :param compress: True to compress the response using gzip (may come handy for executions
                         with large results).
        :param download: True to force downloading result to a file.
        :param pretty_format: True to pretty format returned JSON data - this adds quite some
                              overhead compared to the default behavior where we don't pretty
                              format the result.

        Handles requests:

            GET /executions/<id>/result[?download=1][&compress=1]

        TODO: Maybe we should also support pre-signed URLs for sharing externally with other
        people?

        It of course won't contain all the exection related data, but just sharing the result can
        come handy in many situations.

        :rtype: ``str``
        """
        # NOTE: Here we intentionally use as_pymongo() to avoid mongoengine layer even for old style
        # data
        try:
            result = (
                self.access.impl.model.objects.filter(id=id)
                .only("result")
                .as_pymongo()[0]
            )
        except IndexError:
            raise NotFoundException("Execution with id %s not found" % (id))

        if isinstance(result["result"], dict):
            # For backward compatibility we also support old non JSON field storage format
            if pretty_format:
                response_body = orjson.dumps(
                    result["result"], option=orjson.OPT_INDENT_2
                )
            else:
                response_body = orjson.dumps(result["result"])
        else:
            # For new JSON storage format we just use raw value since it's already JSON serialized
            # string
            response_body = result["result"]

            if pretty_format:
                # Pretty format is not a default behavior since it adds quite some overhead (e.g.
                # 10-30ms for non pretty format for 4 MB json vs ~120 ms for pretty formatted)
                response_body = orjson.dumps(
                    orjson.loads(result["result"]), option=orjson.OPT_INDENT_2
                )

        response = Response()
        response.headers["Content-Type"] = "text/json"

        if download:
            filename = "execution_%s_result.json" % (id)

            if compress:
                filename += ".gz"

            response.headers["Content-Disposition"] = "attachment; filename=%s" % (
                filename
            )

        if compress:
            response.headers["Content-Type"] = "application/x-gzip"
            response.headers["Content-Encoding"] = "gzip"
            response_body = gzip.compress(response_body)

        response.body = response_body
        return response

        Retrieve raw action execution result object as a JSON string or optionally force result
        download as a (compressed) file.

        This is primarily to be used in scenarios where executions contain large results and JSON
        loading and parsing it can be slow (e.g. in the st2web) and we just want to display raw
        result.

        :param compress: True to compress the response using gzip (may come handy for executions
                         with large results).
        :param download: True to force downloading result to a file.
        :param pretty_format: True to pretty format returned JSON data - this adds quite some
                              overhead compared to the default behavior where we don't pretty
                              format the result.

        Handles requests:

            GET /executions/<id>/result[?download=1][&compress=1]

        TODO: Maybe we should also support pre-signed URLs for sharing externally with other
        people?

        It of course won't contain all the exection related data, but just sharing the result can
        come handy in many situations.

        :rtype: ``str``
        
st2api/st2api/controllers/v1/actionexecutions.py