MCPcopy Index your code
hub / github.com/coder/coder / ExtractWorkspaceBuildParam

Function ExtractWorkspaceBuildParam

coderd/httpmw/workspacebuildparam.go:26–54  ·  view source on GitHub ↗

ExtractWorkspaceBuildParam grabs workspace build from the "workspacebuild" URL parameter.

(db database.Store)

Source from the content-addressed store, hash-verified

24
25// ExtractWorkspaceBuildParam grabs workspace build from the "workspacebuild" URL parameter.
26func ExtractWorkspaceBuildParam(db database.Store) func(http.Handler) http.Handler {
27 return func(next http.Handler) http.Handler {
28 return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
29 ctx := r.Context()
30 workspaceBuildID, parsed := ParseUUIDParam(rw, r, "workspacebuild")
31 if !parsed {
32 return
33 }
34 workspaceBuild, err := db.GetWorkspaceBuildByID(ctx, workspaceBuildID)
35 if httpapi.Is404Error(err) {
36 httpapi.ResourceNotFound(rw)
37 return
38 }
39 if err != nil {
40 httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
41 Message: "Internal error fetching workspace build.",
42 Detail: err.Error(),
43 })
44 return
45 }
46
47 ctx = context.WithValue(ctx, workspaceBuildParamContextKey{}, workspaceBuild)
48 // This injects the "workspace" parameter, because it's expected the consumer
49 // will want to use the Workspace middleware to ensure the caller owns the workspace.
50 chi.RouteContext(ctx).URLParams.Add("workspace", workspaceBuild.WorkspaceID.String())
51 next.ServeHTTP(rw, r.WithContext(ctx))
52 })
53 }
54}

Callers 2

TestWorkspaceBuildParamFunction · 0.92
TestWorkspaceAgentParamFunction · 0.92

Calls 11

Is404ErrorFunction · 0.92
ResourceNotFoundFunction · 0.92
WriteFunction · 0.92
ParseUUIDParamFunction · 0.85
WithContextMethod · 0.80
ContextMethod · 0.65
GetWorkspaceBuildByIDMethod · 0.65
AddMethod · 0.65
ErrorMethod · 0.45
StringMethod · 0.45
ServeHTTPMethod · 0.45

Tested by 2

TestWorkspaceBuildParamFunction · 0.74
TestWorkspaceAgentParamFunction · 0.74