package com.philemonworks.critter.ui.fixed; import com.philemonworks.critter.action.Respond; import com.philemonworks.critter.action.ResponseBody; import com.philemonworks.critter.action.ResponseHeader; import com.philemonworks.critter.condition.*; import com.philemonworks.critter.rule.Rule; import javax.ws.rs.core.HttpHeaders; import java.net.MalformedURLException; import java.net.URL; public class FixedResponseBuilder { public Rule buildRuleFrom(RecordingInput input) { Rule r = new Rule(); if (input.hasId()) { r.id = input.id; } if (input.hasMethod()) { Method m = new Method(); m.matches = input.method; r.getConditions().add(m); } if (input.hasUrl()) { Host h = new Host(); Path p = new Path(); URL url; try { url = new URL(input.url); } catch (MalformedURLException e) { throw new IllegalArgumentException(e); } h.matches = url.getHost(); p.matches = url.getPath(); r.getConditions().add(h); r.getConditions().add(p); } if (input.hasContenttype() && input.hasRequestContent()) { RequestHeader h = new RequestHeader(); h.name = HttpHeaders.CONTENT_TYPE; h.matches = input.contenttype; r.getConditions().add(h); } if (input.hasAccepttype()) { RequestHeader h = new RequestHeader(); h.name = HttpHeaders.ACCEPT; h.matches = input.accepttype; r.getConditions().add(h); } if (input.hasResponseContentType() && input.hasResponsecontent()) { ResponseHeader h = new ResponseHeader(); h.with("add", HttpHeaders.CONTENT_TYPE + ": " + input.responsecontenttype); r.getActions().add(h); } if (input.hasResponsecontent()) { ResponseBody rb = new ResponseBody(); rb.body = input.responsecontent; r.getActions().add(rb); } // if (input.hasRequestContent()) { // RequestBody rb = new RequestBody(); // rb.matches = input.requestcontent; // r.getConditions().add(rb); // } r.getActions().add(new Respond()); return r; } }