/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.freedomotic.restapi.server;
import com.freedomotic.api.Plugin;
import java.util.Map;
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Form;
import org.restlet.data.Method;
import org.restlet.engine.header.Header;
import org.restlet.representation.EmptyRepresentation;
import org.restlet.routing.Filter;
import org.restlet.util.Series;
/**
*
* @author matteo
*/
public class OriginFilter extends Filter {
Plugin master;
public OriginFilter(Context context, Plugin master) {
super(context);
this.master=master;
}
@Override
protected int beforeHandle(Request request, Response response) {
if (Method.OPTIONS.equals(request.getMethod())) {
final Map<String, Object> responseAttributes = response.getAttributes();
@SuppressWarnings("unchecked")
Series<Header> responseHeaders = (Series<Header>) responseAttributes.get("org.restlet.http.headers");
// if(MyConfig.getAllowedOrigins().contains(origin)) {
if (responseHeaders == null) {
responseHeaders = new Series<Header>(Header.class);
response.getAttributes().put("org.restlet.http.headers", responseHeaders);
}
responseHeaders.add("Access-Control-Allow-Origin",
master.configuration.getStringProperty("Access-Control-Allow-Origin","*"));
responseHeaders.add("Access-Control-Allow-Methods",
master.configuration.getStringProperty("Access-Control-Allow-Methods", "GET,POST,DELETE,OPTIONS"));
responseHeaders.add("Access-Control-Allow-Headers",
master.configuration.getStringProperty("Access-Control-Allow-Headers",
"Accept,Accept-Version,Authorization,Content-Length,Content-MD5,Content-Type,Date,"
+ "Origin,X-Access-Token,X-Api-Version,X-CSRF-Token,X-File-Name,X-Requested-With"));
responseHeaders.add("Access-Control-Allow-Credentials", "true");
// responseHeaders.add("Access-Control-Max-Age", "60");
response.setEntity(new EmptyRepresentation());
return SKIP;
// }
}
return super.beforeHandle(request, response);
}
@Override
protected void afterHandle(Request request, Response response) {
if (!Method.OPTIONS.equals(request.getMethod())) {
final Map<String, Object> responseAttributes = response.getAttributes();
@SuppressWarnings("unchecked")
Series<Header> responseHeaders = (Series<Header>) responseAttributes.get("org.restlet.http.headers");
if (responseHeaders == null) {
responseHeaders = new Series<Header>(Header.class);
responseAttributes.put("org.restlet.http.headers", responseHeaders);
}
responseHeaders.add("Access-Control-Allow-Origin", "*");
// responseHeaders.add("Access-Control-Allow-Methods", "GET,POST,DELETE,OPTIONS");
responseHeaders.add("Access-Control-Allow-Headers", "Accept,Accept-Version,Content-Type,Api-Version,Authorization");
responseHeaders.add("Access-Control-Allow-Credentials", "true");
// responseHeaders.add("Access-Control-Max-Age", "60");
}
// }
super.afterHandle(request, response);
}
}