/**
* Copyright (C) Zhang,Yuexiang (xfeep)
*
*/
package nginx.clojure.clj;
import static nginx.clojure.clj.Constants.BODY;
import static nginx.clojure.clj.Constants.HEADERS;
import static nginx.clojure.clj.Constants.STATUS;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import nginx.clojure.NginxRequest;
import nginx.clojure.NginxSimpleResponse;
import nginx.clojure.clj.Constants;
public class NginxClojureResponse extends NginxSimpleResponse {
protected Map response;
public NginxClojureResponse() {
}
public NginxClojureResponse(NginxRequest req, Map response) {
super(req);
this.response = response;
if (response == Constants.ASYNC_TAG) {
this.type = TYPE_FAKE_ASYNC_TAG;
}else if (response == Constants.PHRASE_DONE) {
this.type = TYPE_FAKE_PHASE_DONE;
}
}
public Map getResponse() {
return response;
}
public void setResponse(Map response) {
this.response = response;
}
@Override
public int fetchStatus(int defaultStatus) {
int status = defaultStatus;
Object statusObj = response.get(STATUS);
if (statusObj != null) {
if (statusObj instanceof Number){
status = ((Number)statusObj).intValue();
}else {
status = Integer.parseInt(statusObj.toString());
}
}
return status;
}
@Override
public Collection<Entry<?, ?>> fetchHeaders() {
Map headers = ((Map)response.get(HEADERS));
return headers == null ? null : headers.entrySet();
}
@Override
public Object fetchBody() {
return response.get(BODY);
}
}