def get_one(
        self,
        ref_or_id,
        file_path,
        requester_user,
        if_none_match=None,
        if_modified_since=None,
    ):
        """
        Outputs the content of a specific file in a pack.

        Handles requests:
            GET /packs/views/file/<pack_ref_or_id>/<file path>
        """
        pack_db = self._get_by_ref_or_id(ref_or_id=ref_or_id)

        if not pack_db:
            msg = 'Pack with ref_or_id "%s" does not exist' % (ref_or_id)
            raise StackStormDBObjectNotFoundError(msg)

        if not file_path:
            raise ValueError("Missing file path")

        pack_ref = pack_db.ref

        # Note: Until list filtering is in place we don't require RBAC check for icon file
        permission_type = PermissionType.PACK_VIEW
        if file_path not in WHITELISTED_FILE_PATHS:
            rbac_utils = get_rbac_backend().get_utils_class()
            rbac_utils.assert_user_has_resource_db_permission(
                user_db=requester_user,
                resource_db=pack_db,
                permission_type=permission_type,
            )

        normalized_file_path = get_pack_file_abs_path(
            pack_ref=pack_ref, file_path=file_path
        )
        if not normalized_file_path or not os.path.isfile(normalized_file_path):
            # Ignore references to files which don't exist on disk
            raise StackStormDBObjectNotFoundError('File "%s" not found' % (file_path))

        file_size, file_mtime = self._get_file_stats(file_path=normalized_file_path)

        response = Response()

        if not self._is_file_changed(
            file_mtime, if_none_match=if_none_match, if_modified_since=if_modified_since
        ):
            response.status = http_client.NOT_MODIFIED
        else:
            if file_size is not None and file_size > MAX_FILE_SIZE:
                msg = "File %s exceeds maximum allowed file size (%s bytes)" % (
                    file_path,
                    MAX_FILE_SIZE,
                )
                raise ValueError(msg)

            content_type = (
                mimetypes.guess_type(normalized_file_path)[0]
                or "application/octet-stream"
            )

            response.headers["Content-Type"] = content_type
            response.body = self._get_file_content(file_path=normalized_file_path)

        response.headers["Last-Modified"] = format_date_time(file_mtime)
        response.headers["ETag"] = repr(file_mtime)

        return response

        Outputs the content of a specific file in a pack.

        Handles requests:
            GET /packs/views/file/<pack_ref_or_id>/<file path>
        
st2api/st2api/controllers/v1/pack_views.py