func setupRouter(config *Config) (*mux.Router, error) { // Create catalog API object var api *catalog.WritableCatalogAPI if config.Storage.Type == utils.CatalogBackendMemory { api = catalog.NewWritableCatalogAPI( catalog.NewMemoryStorage(), config.ApiLocation, utils.StaticLocation, config.Description, ) } if api == nil { return nil, fmt.Errorf("Could not create catalog API structure. Unsupported storage type: %v", config.Storage.Type) } // Configure routers r := mux.NewRouter().StrictSlash(true) r.Methods("GET").Path(config.ApiLocation).HandlerFunc(api.List).Name("list") r.Methods("POST").Path(config.ApiLocation + "/").HandlerFunc(api.Add).Name("add") r.Methods("GET").Path(config.ApiLocation + "/{type}/{path}/{op}/{value}").HandlerFunc(api.Filter).Name("filter") url := config.ApiLocation + "/{hostid}/{regid}" r.Methods("GET").Path(url).HandlerFunc(api.Get).Name("get") r.Methods("PUT").Path(url).HandlerFunc(api.Update).Name("update") r.Methods("DELETE").Path(url).HandlerFunc(api.Delete).Name("delete") return r, nil }
// Constructs a RESTfulAPI data structure func newRESTfulAPI(conf *Config, dataCh chan<- DataRequest) *RESTfulAPI { restConfig, _ := conf.Protocols[ProtocolTypeREST].(RestProtocol) api := &RESTfulAPI{ config: conf, restConfig: &restConfig, router: mux.NewRouter().StrictSlash(true), dataCh: dataCh, } return api }