github.com/uvalib/orcid-access-ws@v0.0.0-20250612130209-7d062dbabf9d/orcidaccessws/router.go (about) 1 package main 2 3 import ( 4 "github.com/gorilla/mux" 5 "github.com/uvalib/orcid-access-ws/orcidaccessws/handlers" 6 "net/http" 7 ) 8 9 type route struct { 10 Name string 11 Method string 12 Pattern string 13 HandlerFunc http.HandlerFunc 14 } 15 16 type routeSlice []route 17 18 var routes = routeSlice{ 19 20 route{ 21 "FaveIcon", 22 "GET", 23 "/favicon.ico", 24 handlers.FavIconHandler, 25 }, 26 27 route{ 28 "HealthCheck", 29 "GET", 30 "/healthcheck", 31 handlers.HealthCheck, 32 }, 33 34 route{ 35 "VersionInfo", 36 "GET", 37 "/version", 38 handlers.VersionInfo, 39 }, 40 41 route{ 42 "GetOrcidAttributes", 43 "GET", 44 "/cid/{id}", 45 handlers.GetOrcidAttributes, 46 }, 47 48 route{ 49 "GetAllOrcidAttributes", 50 "GET", 51 "/cid", 52 handlers.GetAllOrcidAttributes, 53 }, 54 55 route{ 56 "GetOrcidDetails", 57 "GET", 58 "/orcid/{id}", 59 handlers.GetOrcidDetails, 60 }, 61 62 route{ 63 "SearchOrcid", 64 "GET", 65 "/orcid", 66 handlers.SearchOrcid, 67 }, 68 69 route{ 70 "SetOrcidAttributes", 71 "PUT", 72 "/cid/{id}", 73 handlers.SetOrcidAttributes, 74 }, 75 76 route{ 77 "UpdateActivity", 78 "PUT", 79 "/cid/{id}/activity", 80 handlers.UpdateActivity, 81 }, 82 83 route{ 84 "DeleteOrcidAttributes", 85 "DELETE", 86 "/cid/{id}", 87 handlers.DeleteOrcidAttributes, 88 }, 89 } 90 91 // NewRouter -- build and return the router 92 func NewRouter() *mux.Router { 93 94 router := mux.NewRouter().StrictSlash(true) 95 96 // add the route for the prometheus metrics 97 //router.Handle("/metrics", HandlerLogger(promhttp.Handler(), "promhttp.Handler")) 98 99 for _, route := range routes { 100 101 var handler http.Handler = route.HandlerFunc 102 handler = HandlerLogger(handler, route.Name) 103 //handler = prometheus.InstrumentHandler(route.Name, handler) 104 105 router. 106 Methods(route.Method). 107 Path(route.Pattern). 108 Name(route.Name). 109 Handler(handler) 110 } 111 112 return router 113 } 114 115 // 116 // end of file 117 //