template.flow-http-router.xml.ftl Maven / Gradle / Ivy
<?xml version="1.0" encoding="UTF-8"?> <!-- ~ Copyright (c) Aeontronix 2021 --> <mule xmlns:tls="http://www.mulesoft.org/schema/mule/tls" xmlns:api-gateway="http://www.mulesoft.org/schema/mule/api-gateway" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:apikit="http://www.mulesoft.org/schema/mule/mule-apikit" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/mule-apikit http://www.mulesoft.org/schema/mule/mule-apikit/current/mule-apikit.xsd http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/api-gateway http://www.mulesoft.org/schema/mule/api-gateway/current/mule-api-gateway.xsd http://www.mulesoft.org/schema/mule/tls http://www.mulesoft.org/schema/mule/tls/current/mule-tls.xsd"> <#if domain != 'yes'> <http:listener-config name="http-listener" doc:name="HTTP Listener config" doc:id="${uuid()}" > <http:listener-connection host="${r"${listener.http.host}"}" port="${r"${listener.http.port}"}" protocol="HTTPS" doc:id="${uuid()}"> <tls:context> <tls:key-store type="jks" path="${r"${listener.http.ks.file}"}" alias="${r"${listener.http.ks.alias}"}" keyPassword="${r"${listener.http.ks.keypw}"}" password="${r"${listener.http.ks.storepw}"}" doc:id="${uuid()}" /> </tls:context> </http:listener-connection> </http:listener-config> </#if> <apikit:config name="api-config" api="/${artifactId}.${apiSpecType}" outboundHeadersMapName="outboundHeaders" httpStatusVarName="httpStatus" /> <flow name="api-main"> <#if domain == 'yes'> <http:listener config-ref="http-shared" path="/${artifactId}/*"> <#else> <http:listener config-ref="http-listener" path="/*"> </#if> <http:response statusCode="#[vars.httpStatus default 200]"> <http:headers>#[vars.outboundHeaders default {}]</http:headers> </http:response> <http:error-response statusCode="#[vars.httpStatus default 500]"> <http:body>#[payload]</http:body> <http:headers>#[vars.outboundHeaders default {}]</http:headers> </http:error-response> </http:listener> <apikit:router config-ref="api-config" /> <error-handler> <on-error-propagate type="APIKIT:BAD_REQUEST"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Bad request: " ++ error.description as String }]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus"><![CDATA[400]]></ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> <on-error-propagate type="APIKIT:NOT_FOUND"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Resource not found"}]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus">404</ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> <on-error-propagate type="APIKIT:METHOD_NOT_ALLOWED"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Method not allowed"}]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus">405</ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> <on-error-propagate type="APIKIT:NOT_ACCEPTABLE"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Not acceptable"}]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus">406</ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> <on-error-propagate type="APIKIT:UNSUPPORTED_MEDIA_TYPE"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Unsupported media type"}]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus">415</ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> <on-error-propagate type="APIKIT:NOT_IMPLEMENTED"> <ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd"> <ee:message> <ee:set-payload><![CDATA[%dw 2.0 output application/json --- {message: "Not Implemented"}]]></ee:set-payload> </ee:message> <ee:variables> <ee:set-variable variableName="httpStatus">501</ee:set-variable> </ee:variables> </ee:transform> </on-error-propagate> </error-handler> </flow> </mule>