func AddRoutes(r *mux.Router, cfg config.Config, pigeonSys jobqueue.System) error { store := sessions.NewCookieStore([]byte(cfg.OptProductionSecret())) outbox := pigeonSys.NewOutbox() forwardAsPigeonJob := func(httpEndpoint, httpMethods, jobKey string) { canolog.Info("Registering route: ", httpEndpoint, " to ", jobKey) r.HandleFunc( httpEndpoint, CanopyRestJobForwarder( jobKey, store, cfg.OptAllowOrigin(), outbox, ), ).Methods(httpMethods) } // TODO: Need to handle allow-origin correctly! // TODO: Can we automate all this? r.HandleFunc("/", rootRedirectHandler).Methods("GET") forwardAsPigeonJob("/api/activate", "POST", "api/activate") forwardAsPigeonJob("/api/create_devices", "POST", "api/create_devices") forwardAsPigeonJob("/api/create_user", "POST", "api/create_user") forwardAsPigeonJob("/api/device/{id}", "GET", "GET:api/device/id") forwardAsPigeonJob("/api/device/{id}", "POST", "POST:api/device/id") forwardAsPigeonJob("/api/device/{id}", "DELETE", "DELETE:api/device/id") forwardAsPigeonJob("/api/device/{id}/{var}", "GET", "api/device/id/var") forwardAsPigeonJob("/api/finish_share_transaction", "POST", "api/finish_share_transaction") forwardAsPigeonJob("/api/info", "GET", "api/info") forwardAsPigeonJob("/api/login", "POST", "api/login") forwardAsPigeonJob("/api/logout", "GET", "api/logout") forwardAsPigeonJob("/api/logout", "POST", "api/logout") forwardAsPigeonJob("/api/user/self", "GET", "GET:api/user/self") forwardAsPigeonJob("/api/user/self", "POST", "POST:api/user/self") forwardAsPigeonJob("/api/user/self", "DELETE", "DELETE:api/user/self") forwardAsPigeonJob("/api/user/self/devices", "GET", "api/devices") forwardAsPigeonJob("/api/reset_password", "POST", "api/reset_password") forwardAsPigeonJob("/api/share", "POST", "api/share") return nil }