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  //