package net.onrc.onos.ofcontroller.bgproute;

import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.routing.Router;

import net.floodlightcontroller.restserver.RestletRoutable;

public class BgpRouteWebRoutable implements RestletRoutable {
	@Override
	public Restlet getRestlet(Context context) {
		Router router = new Router(context);
		router.attach("/json", BgpRouteResource.class);
		router.attach("/rib/{dest}", BgpRouteResource.class);
		router.attach("/{sysuptime}/{sequence}/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);		
		router.attach("/{routerid}/{prefix}/{mask}/{nexthop}/synch", BgpRouteResourceSynch.class);
		router.attach("/{routerid}/{capability}", BgpRouteResource.class);
		return router;
	}
	
	@Override
	public String basePath() {
		return "/wm/bgp";
	}
}
