@@ -281,3 +281,39 @@ func (s *server) readFileInWorkspace(w http.ResponseWriter, r *http.Request) {
281
281
282
282
writeResponse (logger , w , map [string ]any {"stdout" : out })
283
283
}
284
+
285
+ type statFileInWorkspaceRequest struct {
286
+ workspaceCommonRequest `json:",inline"`
287
+ FilePath string `json:"filePath"`
288
+ }
289
+
290
+ func (s * server ) statFileInWorkspace (w http.ResponseWriter , r * http.Request ) {
291
+ logger := gcontext .GetLogger (r .Context ())
292
+ var reqObject statFileInWorkspaceRequest
293
+ if err := json .NewDecoder (r .Body ).Decode (& reqObject ); err != nil {
294
+ writeError (logger , w , http .StatusBadRequest , fmt .Errorf ("invalid request body: %w" , err ))
295
+ return
296
+ }
297
+
298
+ prg , err := loader .Program (r .Context (), s .getWorkspaceTool (reqObject .workspaceCommonRequest ), "Stat File In Workspace" , loader.Options {Cache : s .client .Cache })
299
+ if err != nil {
300
+ writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to load program: %w" , err ))
301
+ return
302
+ }
303
+
304
+ out , err := s .client .Run (
305
+ r .Context (),
306
+ prg ,
307
+ reqObject .Env ,
308
+ fmt .Sprintf (
309
+ `{"workspace_id": "%s", "file_path": "%s"}` ,
310
+ reqObject .ID , reqObject .FilePath ,
311
+ ),
312
+ )
313
+ if err != nil {
314
+ writeError (logger , w , http .StatusInternalServerError , fmt .Errorf ("failed to run program: %w" , err ))
315
+ return
316
+ }
317
+
318
+ writeResponse (logger , w , map [string ]any {"stdout" : out })
319
+ }
0 commit comments