@@ -367,7 +367,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
367367 mux .HandlePath (http .MethodGet , "/favicon.ico" , frontEndHandlerWithLocation (o .consolePath ))
368368 mux .HandlePath (http .MethodGet , "/swagger.json" , frontEndHandlerWithLocation (o .consolePath ))
369369 mux .HandlePath (http .MethodGet , "/data/{data}" , o .dataFromExtension (remoteServer .(server.UIExtensionServer )))
370- mux .HandlePath (http .MethodGet , "/extensionProxy/{extension}/{path}" , func (w http.ResponseWriter , r * http.Request , pathParams map [string ]string ) {
370+ mux .HandlePath (http .MethodPost , "/extensionProxy/{extension}/{path}" , func (w http.ResponseWriter , r * http.Request , pathParams map [string ]string ) {
371371 fmt .Println (pathParams )
372372 extServer := remoteServer .(server.UIExtensionServer )
373373 fmt .Println (extServer )
@@ -386,6 +386,52 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
386386 return
387387 }
388388 fmt .Println (resp )
389+ if ! resp .Success {
390+ w .WriteHeader (http .StatusInternalServerError )
391+ return
392+ }
393+
394+ req , err := http .NewRequestWithContext (ctx , http .MethodPost , resp .Message , r .Body )
395+ if err != nil {
396+ fmt .Println (err )
397+ return
398+ }
399+ req .Header = r .Header
400+ fmt .Println ("request url" , req .URL )
401+
402+ rsp , err := http .DefaultClient .Do (req )
403+ if err != nil {
404+ fmt .Println (err )
405+ return
406+ }
407+ fmt .Println ("response status" , rsp .Status )
408+ defer rsp .Body .Close ()
409+ for k , v := range rsp .Header {
410+ w .Header ().Add (k , v [0 ])
411+ }
412+
413+ flusher , ok := w .(http.Flusher )
414+ if ! ok {
415+ http .Error (w , "Streaming unsupported" , http .StatusInternalServerError )
416+ return
417+ }
418+
419+ fmt .Println ("start to read response body" , rsp .Header )
420+ data := make ([]byte , 1024 )
421+ var count int
422+ for {
423+ count , err = rsp .Body .Read (data )
424+ if count == - 1 || err != nil {
425+ fmt .Println ("failed to read response body" , err )
426+ break
427+ }
428+ if count == 0 {
429+ break
430+ }
431+ w .Write (data [:count ])
432+ flusher .Flush ()
433+ fmt .Print (string (data [:count ]))
434+ }
389435 })
390436 mux .HandlePath (http .MethodGet , "/get" , o .getAtestBinary )
391437 mux .HandlePath (http .MethodPost , "/runner/{suite}/{case}" , service .WebRunnerHandler )
0 commit comments