MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / httpRequestResource

Function httpRequestResource

pkg/ratelimit/resource.go:76–89  ·  view source on GitHub ↗

httpRequestResource represents an HTTP request. Avoid using directly, use HTTPMiddleware instead.

(r *http.Request, class string)

Source from the content-addressed store, hash-verified

74
75// httpRequestResource represents an HTTP request. Avoid using directly, use HTTPMiddleware instead.
76func httpRequestResource(r *http.Request, class string) Resource {
77 specificClasses := make([]string, 0, 3)
78 if template, ok := pathTemplate(r); ok {
79 specificClasses = append(specificClasses, fmt.Sprintf("%s:%s", class, template))
80 }
81 callerInfo := fmt.Sprintf("ip:%s", httpRemoteIP(r))
82 if authTokenID := authTokenID(r.Context()); authTokenID != unauthenticated {
83 callerInfo = fmt.Sprintf("token:%s", authTokenID)
84 }
85 return &resource{
86 key: fmt.Sprintf("%s:%s:url:%s", class, callerInfo, r.URL.Path),
87 classes: append(specificClasses, class, "http"),
88 }
89}
90
91// grpcMethodResource represents a gRPC request.
92func grpcMethodResource(ctx context.Context, fullMethod string, req any) Resource {

Callers 1

HTTPMiddlewareFunction · 0.85

Calls 3

httpRemoteIPFunction · 0.85
authTokenIDFunction · 0.85
ContextMethod · 0.65

Tested by

no test coverage detected