@@ -23,6 +23,7 @@ type Options struct {
23
23
func New (options * Options ) http.Handler {
24
24
api := & api {
25
25
Database : options .Database ,
26
+ Logger : options .Logger ,
26
27
Pubsub : options .Pubsub ,
27
28
}
28
29
@@ -61,9 +62,18 @@ func New(options *Options) http.Handler {
61
62
r .Use (httpmw .ExtractProjectParam (options .Database ))
62
63
r .Get ("/" , api .projectByOrganization )
63
64
r .Get ("/workspaces" , api .workspacesByProject )
64
- r .Route ("/history" , func (r chi.Router ) {
65
- r .Get ("/" , api .projectHistoryByOrganization )
66
- r .Post ("/" , api .postProjectHistoryByOrganization )
65
+ r .Route ("/parameters" , func (r chi.Router ) {
66
+ r .Get ("/" , api .parametersByProject )
67
+ r .Post ("/" , api .postParametersByProject )
68
+ })
69
+ r .Route ("/versions" , func (r chi.Router ) {
70
+ r .Get ("/" , api .projectVersionsByOrganization )
71
+ r .Post ("/" , api .postProjectVersionByOrganization )
72
+ r .Route ("/{projectversion}" , func (r chi.Router ) {
73
+ r .Use (httpmw .ExtractProjectVersionParam (api .Database ))
74
+ r .Get ("/" , api .projectVersionByOrganizationAndName )
75
+ r .Get ("/parameters" , api .projectVersionParametersByOrganizationAndName )
76
+ })
67
77
})
68
78
})
69
79
})
@@ -76,27 +86,54 @@ func New(options *Options) http.Handler {
76
86
r .Get ("/" , api .workspaces )
77
87
r .Route ("/{user}" , func (r chi.Router ) {
78
88
r .Use (httpmw .ExtractUserParam (options .Database ))
79
- r .Get ("/" , api .workspaces )
80
89
r .Post ("/" , api .postWorkspaceByUser )
81
90
r .Route ("/{workspace}" , func (r chi.Router ) {
82
91
r .Use (httpmw .ExtractWorkspaceParam (options .Database ))
83
92
r .Get ("/" , api .workspaceByUser )
84
- r .Route ("/history " , func (r chi.Router ) {
93
+ r .Route ("/version " , func (r chi.Router ) {
85
94
r .Post ("/" , api .postWorkspaceHistoryByUser )
86
95
r .Get ("/" , api .workspaceHistoryByUser )
87
- r .Get ("/latest" , api .latestWorkspaceHistoryByUser )
96
+ r .Route ("/{workspacehistory}" , func (r chi.Router ) {
97
+ r .Use (httpmw .ExtractWorkspaceHistoryParam (options .Database ))
98
+ r .Get ("/" , api .workspaceHistoryByName )
99
+ })
88
100
})
89
101
})
90
102
})
91
103
})
104
+
105
+ r .Route ("/files" , func (r chi.Router ) {
106
+ r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
107
+ r .Post ("/" , api .postFiles )
108
+ })
109
+
110
+ r .Route ("/provisioners" , func (r chi.Router ) {
111
+ r .Route ("/daemons" , func (r chi.Router ) {
112
+ r .Get ("/" , api .provisionerDaemons )
113
+ r .Get ("/serve" , api .provisionerDaemonsServe )
114
+ })
115
+ r .Route ("/jobs/{organization}" , func (r chi.Router ) {
116
+ r .Use (
117
+ httpmw .ExtractAPIKey (options .Database , nil ),
118
+ httpmw .ExtractOrganizationParam (options .Database ),
119
+ )
120
+ r .Post ("/import" , api .postProvisionerImportJobByOrganization )
121
+ r .Route ("/{provisionerjob}" , func (r chi.Router ) {
122
+ r .Use (httpmw .ExtractProvisionerJobParam (options .Database ))
123
+ r .Get ("/" , api .provisionerJobByOrganization )
124
+ r .Get ("/logs" , api .provisionerJobLogsByID )
125
+ })
126
+ })
127
+ })
92
128
})
93
- r .NotFound (site .Handler ().ServeHTTP )
129
+ r .NotFound (site .Handler (options . Logger ).ServeHTTP )
94
130
return r
95
131
}
96
132
97
133
// API contains all route handlers. Only HTTP handlers should
98
134
// be added to this struct for code clarity.
99
135
type api struct {
100
136
Database database.Store
137
+ Logger slog.Logger
101
138
Pubsub database.Pubsub
102
139
}
0 commit comments