@@ -44,27 +44,28 @@ func New(options *Options) (http.Handler, func()) {
44
44
r .Post ("/login" , api .postLogin )
45
45
r .Post ("/logout" , api .postLogout )
46
46
47
- // Used for setup.
48
- r .Get ("/user" , api .user )
49
- r .Post ("/user" , api .postUser )
50
- r .Route ("/users" , func (r chi.Router ) {
51
- r .Use (
52
- httpmw .ExtractAPIKey (options .Database , nil ),
53
- )
54
- r .Post ("/" , api .postUsers )
55
-
56
- r .Route ("/{user}" , func (r chi.Router ) {
57
- r .Use (httpmw .ExtractUserParam (options .Database ))
58
- r .Get ("/" , api .userByName )
59
- r .Get ("/organizations" , api .organizationsByUser )
60
- r .Post ("/keys" , api .postKeyForUser )
47
+ r .Route ("/user" , func (r chi.Router ) {
48
+ r .Get ("/first" , api .user )
49
+ r .Post ("/first" , api .user )
50
+ r .Group (func (r chi.Router ) {
51
+ r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
52
+ r .Post ("/" , nil )
53
+ r .Route ("/{user}" , func (r chi.Router ) {
54
+ r .Use (httpmw .ExtractUserParam (options .Database ))
55
+ r .Get ("/" , api .userByName )
56
+ r .Get ("/organizations" , api .organizationsByUser )
57
+ r .Post ("/keys" , api .postKeyForUser )
58
+ })
61
59
})
62
60
})
61
+
63
62
r .Route ("/organization/{organization}" , func (r chi.Router ) {
64
63
r .Use (
65
64
httpmw .ExtractAPIKey (options .Database , nil ),
66
65
httpmw .ExtractOrganizationParam (options .Database ),
67
66
)
67
+ r .Post ("/users" , nil )
68
+ r .Get ("/provisionerdaemons" , nil )
68
69
r .Route ("/projects" , func (r chi.Router ) {
69
70
r .Post ("/" , api .postProjectsByOrganization )
70
71
r .Get ("/" , api .projectsByOrganization )
@@ -75,172 +76,70 @@ func New(options *Options) (http.Handler, func()) {
75
76
r .Use (
76
77
httpmw .ExtractAPIKey (options .Database , nil ),
77
78
httpmw .ExtractProjectParam (options .Database ),
79
+ httpmw .ExtractOrganizationParam (options .Database ),
78
80
)
79
81
r .Get ("/" , api .projectByOrganization )
80
82
r .Get ("/workspaces" , api .workspacesByProject )
81
- r .Route ("/parameters" , func (r chi.Router ) {
82
- r .Get ("/" , api .parametersByProject )
83
- r .Post ("/" , api .postParametersByProject )
84
- })
85
- r .Route ("/versions" , func (r chi.Router ) {
86
- r .Get ("/" , api .projectVersionsByOrganization )
87
- r .Post ("/" , api .postProjectVersionByOrganization )
88
- r .Route ("/{projectversion}" , func (r chi.Router ) {
89
- r .Use (httpmw .ExtractProjectVersionParam (api .Database ))
90
- r .Get ("/" , api .projectVersionByOrganizationAndName )
91
- })
92
- })
93
- r .Get ("/" , api .projects )
94
- r .Route ("/{organization}" , func (r chi.Router ) {
95
- r .Use (httpmw .ExtractOrganizationParam (options .Database ))
96
- r .Get ("/" , api .projectsByOrganization )
97
- r .Post ("/" , api .postProjectsByOrganization )
98
- r .Route ("/{project}" , func (r chi.Router ) {
99
-
100
- })
101
- })
83
+ r .Get ("/parameters" , api .parametersByProject )
84
+ r .Post ("/parameters" , api .postParametersByProject )
85
+ r .Get ("/versions" , api .projectVersionsByOrganization )
86
+ r .Post ("/versions" , api .postProjectVersionByOrganization )
102
87
})
103
-
104
- // Upload - Uploads a file.
105
-
106
- // CreateProject(organization) - Creates a project with a version.
107
- // ImportProjectVersion(organization, project?) - If a project is provided, it's attached. If a project isn't, it's detached.
108
- // ProjectVersions - Returns a list of project versions by project.
109
- // ProjectVersionSchema(projectversion) - Return parameter schemas for a job.
110
- // ProjectVersionParameters(projectversion) - Returns computed parameters for a job.
111
- // ProjectVersionParameters(projectversion) - Returns computed parameters for a job.
112
- // ProjectVersionLogs(projectversion) - Returns logs for an executing project version.
113
- // ProjectVersionLogsAfter(projectversion, timestamp) - Streams logs that occur after a specific timestamp.
114
- // ProjectVersionResources(projectversion, resources) - Returns resources to be created for a project version.
115
-
116
- // CreateWorkspace - Creates a workspace for a project.
117
- // ProvisionWorkspace - Creates a new build.
118
- // Workspaces - Returns all workspaces the user has access to.
119
- // WorkspacesByProject - Returns workspaces inside a project.
120
- // WorkspaceByName - Returns a workspace by name.
121
- // Workspace - Returns a single workspace by ID.
122
- // WorkspaceProvisions - Returns a timeline of provisions for a workspace.
123
- // WorkspaceProvisionResources - List resources for a specific workspace version.
124
- // WorkspaceProvisionResource - Get a specific resource.
125
- // WorkspaceProvisionLogs - Returns a stream of logs.
126
- // WorkspaceProvisionLogsAfter - Returns a stream of logs after.
127
- // DialWorkspaceAgent - Creates the connection to a workspace agent.
128
- // ListenWorkspaceAgent - Listens to the workspace agent as the ID.
129
- // AuthWorkspaceAgentWithGoogleInstanceIdentity - Exchanges SA for token.
130
-
131
- // User - Returns the currently authenticated user.
132
- // HasFirstUser - Returns whether the first user has been created.
133
- // CreateFirstUser - Creates a new user and the organization provided.
134
- // CreateUser - Creates a new user and adds them to the organization.
135
- // CreateAPIKey - Creates a new API key.
136
- // LoginWithPassword - Authenticates with email and password.
137
- // Logout - Should clear the session token.
138
-
139
- // ProvisionerDaemons
140
- // ListenProvisionerDaemon
141
-
142
- // OrganizationsByUser - Returns organizations by user.
143
-
144
- r .Route ("/agent" , func (r chi.Router ) {
145
-
146
- })
147
-
148
- r .Route ("/daemon" , func (r chi.Router ) {
149
-
150
- })
151
-
152
- r .Route ("/job" , func (r chi.Router ) {
88
+ r .Route ("/projectversion/{projectversion}" , func (r chi.Router ) {
153
89
r .Use (
154
90
httpmw .ExtractAPIKey (options .Database , nil ),
91
+ httpmw .ExtractProjectVersionParam (options .Database ),
155
92
httpmw .ExtractOrganizationParam (options .Database ),
156
93
)
157
- r .Post ("/" , api .postProjectImportByOrganization )
158
- })
159
-
160
- r .Route ("/provisioner/job/{job}/resources" , func (r chi.Router ) {
161
94
95
+ r .Get ("/" , nil )
96
+ r .Get ("/schema" , nil )
97
+ r .Get ("/parameters" , nil )
98
+ r .Get ("/logs" , nil )
99
+ r .Get ("/resources" , nil )
162
100
})
163
-
164
- // ProjectVersionLogs
165
-
166
- // Listing operations specific to resources should go under
167
- // their respective routes. eg. /orgs/<name>/workspaces
168
- r .Route ("/workspaces" , func (r chi.Router ) {
169
- r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
170
- r .Get ("/" , api .workspaces )
171
- r .Route ("/{user}" , func (r chi.Router ) {
172
- r .Use (httpmw .ExtractUserParam (options .Database ))
173
- r .Post ("/" , api .postWorkspaceByUser )
174
- r .Route ("/{workspace}" , func (r chi.Router ) {
175
- r .Use (httpmw .ExtractWorkspaceParam (options .Database ))
176
- r .Get ("/" , api .workspaceByUser )
177
- r .Route ("/version" , func (r chi.Router ) {
178
- r .Post ("/" , api .postWorkspaceBuildByUser )
179
- r .Get ("/" , api .workspaceBuildByUser )
180
- r .Route ("/{workspacebuild}" , func (r chi.Router ) {
181
- r .Use (httpmw .ExtractWorkspaceBuildParam (options .Database ))
182
- r .Get ("/" , api .workspaceBuildByName )
183
- })
184
- })
185
- })
101
+ r .Route ("/workspace/{workspace}" , func (r chi.Router ) {
102
+ r .Use (
103
+ httpmw .ExtractAPIKey (options .Database , nil ),
104
+ httpmw .ExtractWorkspaceParam (options .Database ),
105
+ httpmw .ExtractUserParam (options .Database ),
106
+ )
107
+ r .Get ("/" , nil )
108
+ r .Get ("/builds" , nil )
109
+ r .Post ("/builds" , nil )
110
+ })
111
+ r .Route ("/workspacebuild/{workspacebuild}" , func (r chi.Router ) {
112
+ r .Use (
113
+ httpmw .ExtractAPIKey (options .Database , nil ),
114
+ httpmw .ExtractWorkspaceBuildParam (options .Database ),
115
+ httpmw .ExtractWorkspaceParam (options .Database ),
116
+ )
117
+ r .Get ("/logs" , nil )
118
+ r .Get ("/resources" , nil )
119
+ r .Route ("/resources/{workspaceresource}" , func (r chi.Router ) {
120
+ r .Use (httpmw .ExtractWorkspaceResourceParam (options .Database ))
121
+ r .Get ("/" , nil )
122
+ r .Get ("/dial" , nil )
186
123
})
187
124
})
188
-
189
125
r .Route ("/workspaceagent" , func (r chi.Router ) {
190
- r .Route ("/authenticate " , func (r chi.Router ) {
126
+ r .Route ("/auth " , func (r chi.Router ) {
191
127
r .Post ("/google-instance-identity" , api .postAuthenticateWorkspaceAgentUsingGoogleInstanceIdentity )
192
128
})
193
- r .Group ( func (r chi.Router ) {
129
+ r .Route ( "/me" , func (r chi.Router ) {
194
130
r .Use (httpmw .ExtractWorkspaceAgent (options .Database ))
195
- r .Get ("/serve" , api .workspaceAgentServe )
131
+ r .Get ("/listen" , nil )
132
+ })
133
+ })
134
+ r .Route ("/provisionerdaemon" , func (r chi.Router ) {
135
+ r .Route ("/me" , func (r chi.Router ) {
136
+ r .Get ("/listen" , api .provisionerDaemonsServe )
196
137
})
197
138
})
198
-
199
139
r .Route ("/upload" , func (r chi.Router ) {
200
140
r .Use (httpmw .ExtractAPIKey (options .Database , nil ))
201
141
r .Post ("/" , api .postUpload )
202
142
})
203
-
204
- r .Route ("/projectimport/{organization}" , func (r chi.Router ) {
205
- r .Use (
206
- httpmw .ExtractAPIKey (options .Database , nil ),
207
- httpmw .ExtractOrganizationParam (options .Database ),
208
- )
209
- r .Post ("/" , api .postProjectImportByOrganization )
210
- r .Route ("/{provisionerjob}" , func (r chi.Router ) {
211
- r .Use (httpmw .ExtractProvisionerJobParam (options .Database ))
212
- r .Get ("/" , api .provisionerJobByID )
213
- r .Get ("/schemas" , api .projectImportJobSchemasByID )
214
- r .Get ("/parameters" , api .projectImportJobParametersByID )
215
- r .Get ("/resources" , api .provisionerJobResourcesByID )
216
- r .Get ("/logs" , api .provisionerJobLogsByID )
217
- })
218
- })
219
-
220
- r .Route ("/workspaceprovision/{organization}" , func (r chi.Router ) {
221
- r .Use (
222
- httpmw .ExtractAPIKey (options .Database , nil ),
223
- httpmw .ExtractOrganizationParam (options .Database ),
224
- )
225
- r .Route ("/{provisionerjob}" , func (r chi.Router ) {
226
- r .Use (httpmw .ExtractProvisionerJobParam (options .Database ))
227
- r .Get ("/" , api .provisionerJobByID )
228
- r .Get ("/logs" , api .provisionerJobLogsByID )
229
- r .Route ("/resources" , func (r chi.Router ) {
230
- r .Get ("/" , api .provisionerJobResourcesByID )
231
- r .Route ("/{workspaceresource}" , func (r chi.Router ) {
232
- r .Use (httpmw .ExtractWorkspaceResourceParam (options .Database ))
233
- r .Get ("/" , api .provisionerJobResourceByID )
234
- r .Get ("/agent" , api .workspaceAgentConnectByResource )
235
- })
236
- })
237
- })
238
- })
239
-
240
- r .Route ("/provisioners/daemons" , func (r chi.Router ) {
241
- r .Get ("/" , api .provisionerDaemons )
242
- r .Get ("/serve" , api .provisionerDaemonsServe )
243
- })
244
143
})
245
144
r .NotFound (site .Handler (options .Logger ).ServeHTTP )
246
145
return r , api .websocketWaitGroup .Wait
0 commit comments