<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:http-policy="http://www.mulesoft.org/schema/mule/http-policy"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
    xmlns:http-transform="http://www.mulesoft.org/schema/mule/http-policy-transform" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/http-policy http://www.mulesoft.org/schema/mule/http-policy/current/mule-http-policy.xsd
               http://www.mulesoft.org/schema/mule/http-policy-transform http://www.mulesoft.org/schema/mule/http-policy-transform/current/mule-http-policy-transform.xsd http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">


    <http-policy:proxy name="{{{policyId}}}-custom-policy">
        <http-policy:source>

            <logger level="INFO" doc:name="Logger" doc:id="7e5a44d5-6939-49f8-9796-7097a0676dea" message="apiID - ${apiId} OrgID - ${csorganization.id}  EnvironmentID - ${environment.id} "/>
            <logger level="INFO" doc:name="Logger" doc:id="44241b22-0039-49a8-841b-410d8c77741e" message="clientIP #[attributes.headers.'x-real-ip']"/>
            <logger level="INFO" doc:name="Logger" doc:id="72487d2b-9b10-413a-bb07-129b2bd6c24e" message="EventID #[correlationId]"/>
            <logger level="INFO" doc:name="Logger" doc:id="cb302fd2-fcc6-4261-934c-676cd30c7064" message="ContentType #[attributes.headers.'content-type']"/>
            <ee:transform doc:name="Transform Message" doc:id="a38e7073-5951-46f6-a987-76d0c40b3a85">
                <ee:message >
                </ee:message>
                <ee:variables >
                    <ee:set-variable variableName="sizeOfRequestMessage"><![CDATA[%dw 2.0
output application/java
var var1=write(message, "application/json")
---
sizeOf(var1)]]></ee:set-variable>
                    <ee:set-variable variableName="requestTimestamp"><![CDATA[%dw 2.0
output application/java
---
now()]]></ee:set-variable>
                </ee:variables>
            </ee:transform>
            <logger level="INFO" doc:name="Logger" doc:id="7e5a44d5-6939-49f8-9796-7097a0676dea" message="RequestMessageSize #[vars.sizeOfRequestMessage]"/>
            <http-policy:execute-next/>
            <logger level="INFO" doc:name="Logger" doc:id="b59ba958-c52a-4e42-9f7b-d8279e210861" message='#[(now() - vars.requestTimestamp) as Number {unit: "milliseconds"} ++ " ms"]'/>
            <ee:transform doc:name="Transform Message" doc:id="15e3dcc2-77b5-4327-b201-a77c42039c34">
                <ee:message >
                </ee:message>
                <ee:variables >
                    <ee:set-variable variableName="sizeOfResponseMessage"><![CDATA[%dw 2.0
output application/java
var var1=write(message, "application/json")
---
sizeOf(var1)]]></ee:set-variable>
                </ee:variables>
            </ee:transform>
            <logger level="INFO" doc:name="Logger" doc:id="4fa73c01-8a5b-45b7-8095-5ebc3446f503" message="ResponseMessageSize #[vars.sizeOfResponseMessage]"/>
        </http-policy:source>
    </http-policy:proxy>
</mule>
