/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.jembi.openhim.transformers; import java.util.Arrays; import java.util.List; import org.jembi.openhim.RestfulHttpRequest; import org.mule.api.MuleMessage; import org.mule.api.transformer.TransformerException; import org.mule.api.transport.PropertyScope; import org.mule.transformer.AbstractMessageTransformer; public class RestfulHttpRequestToHttpRequestTransformer extends AbstractMessageTransformer { // http headers not to copy over private List httpHeaderBlackList = Arrays.asList(new String[] { "Authorization", "Host", "User-Agent", "Keep-Alive" }); @Override public Object transformMessage(MuleMessage msg, String enc) throws TransformerException { RestfulHttpRequest req = (RestfulHttpRequest) msg.getPayload(); msg.setProperty("http.method", req.getHttpMethod(), PropertyScope.OUTBOUND); msg.setProperty("http.path", req.buildUrlWithRequestParams(), PropertyScope.OUTBOUND); for (String header : req.getHttpHeaders().keySet()) { if (!httpHeaderBlackList.contains(header)) { msg.setProperty(header, req.getHttpHeaders().get(header), PropertyScope.OUTBOUND); } } String auth = msg.getProperty("http.auth", PropertyScope.OUTBOUND); if (auth!=null && !auth.isEmpty()) { msg.setProperty("Authorization", auth, PropertyScope.OUTBOUND); } else { msg.removeProperty("Authorization", PropertyScope.OUTBOUND); } if (req.getHttpMethod().equals("PUT") || req.getHttpMethod().equals("POST")) { msg.setPayload(req.getBody()); return msg; } return msg; } }