MCPcopy Create free account
hub / github.com/netlify/gotrue / NewAPIWithVersion

Function NewAPIWithVersion

api/api.go:80–193  ·  view source on GitHub ↗

NewAPIWithVersion creates a new REST API using the specified version

(ctx context.Context, globalConfig *conf.GlobalConfiguration, db *storage.Connection, version string)

Source from the content-addressed store, hash-verified

78
79// NewAPIWithVersion creates a new REST API using the specified version
80func NewAPIWithVersion(ctx context.Context, globalConfig *conf.GlobalConfiguration, db *storage.Connection, version string) *API {
81 api := &API{config: globalConfig, db: db, version: version}
82
83 xffmw, _ := xff.Default()
84 logger := newStructuredLogger(logrus.StandardLogger())
85
86 r := newRouter()
87 r.UseBypass(xffmw.Handler)
88 r.Use(addRequestID(globalConfig))
89 r.Use(recoverer)
90 r.UseBypass(tracer)
91
92 r.Get("/health", api.HealthCheck)
93
94 r.Route("/callback", func(r *router) {
95 r.UseBypass(logger)
96 r.Use(api.loadOAuthState)
97
98 if globalConfig.MultiInstanceMode {
99 r.Use(api.loadInstanceConfig)
100 }
101 r.Get("/", api.ExternalProviderCallback)
102 })
103
104 r.Route("/", func(r *router) {
105 r.UseBypass(logger)
106
107 if globalConfig.MultiInstanceMode {
108 r.Use(api.loadJWSSignatureHeader)
109 r.Use(api.loadInstanceConfig)
110 }
111
112 r.Get("/settings", api.Settings)
113
114 r.Get("/authorize", api.ExternalProviderRedirect)
115
116 r.With(api.requireAdminCredentials).Post("/invite", api.Invite)
117
118 r.With(api.requireEmailProvider).Post("/signup", api.Signup)
119 r.With(api.requireEmailProvider).Post("/recover", api.Recover)
120 r.With(api.requireEmailProvider).With(api.limitHandler(
121 // Allow requests at a rate of 30 per 5 minutes.
122 tollbooth.NewLimiter(30.0/(60*5), &limiter.ExpirableOptions{
123 DefaultExpirationTTL: time.Hour,
124 }).SetBurst(30),
125 )).Post("/token", api.Token)
126 r.Post("/verify", api.Verify)
127
128 r.With(api.requireAuthentication).Post("/logout", api.Logout)
129
130 r.Route("/user", func(r *router) {
131 r.Use(api.requireAuthentication)
132 r.Get("/", api.UserGet)
133 r.Put("/", api.UserUpdate)
134 })
135
136 r.Route("/admin", func(r *router) {
137 r.Use(api.requireAdminCredentials)

Callers 3

NewAPIFunction · 0.85
NewAPIFromConfigFileFunction · 0.85

Calls 13

limitHandlerMethod · 0.95
newStructuredLoggerFunction · 0.85
newRouterFunction · 0.85
addRequestIDFunction · 0.85
UseBypassMethod · 0.80
UseMethod · 0.80
GetMethod · 0.80
RouteMethod · 0.80
PostMethod · 0.80
WithMethod · 0.80
PutMethod · 0.80
DeleteMethod · 0.80

Tested by 1

Used in the wild real call sites across dependent graphs

searching dependent graphs…