Index: experimental/webtry/webtry.go |
diff --git a/experimental/webtry/webtry.go b/experimental/webtry/webtry.go |
index 6daa43355e12d81f04713cda1ca773c5a6270046..ad0d84ecd57ad90531f0abe4773a387497c4531f 100644 |
--- a/experimental/webtry/webtry.go |
+++ b/experimental/webtry/webtry.go |
@@ -79,7 +79,7 @@ var ( |
iframeLink = regexp.MustCompile("^/iframe/([a-f0-9]+)$") |
// imageLink is the regex that matches URLs paths that are direct links to PNGs. |
- imageLink = regexp.MustCompile("^/i/([a-z0-9-]+.png)$") |
+ imageLink = regexp.MustCompile("^/i/([a-z0-9-_]+.png)$") |
// tryInfoLink is the regex that matches URLs paths that are direct links to data about a single try. |
tryInfoLink = regexp.MustCompile("^/json/([a-f0-9]+)$") |
@@ -407,7 +407,8 @@ func expandGyp(hash string) error { |
type response struct { |
Message string `json:"message"` |
CompileErrors []compileError `json:"compileErrors"` |
- Img string `json:"img"` |
+ RasterImg string `json:"rasterImg"` |
+ GPUImg string `json:"gpuImg"` |
Hash string `json:"hash"` |
} |
@@ -724,6 +725,8 @@ type TryRequest struct { |
Width int `json:"width"` |
Height int `json:"height"` |
GPU bool `json:"gpu"` |
+ Raster bool `json:"raster"` |
+ PDF bool `json:"pdf"` |
Name string `json:"name"` // Optional name of the workspace the code is in. |
Source int `json:"source"` // ID of the source image, 0 if none. |
} |
@@ -858,6 +861,10 @@ func mainHandler(w http.ResponseWriter, r *http.Request) { |
reportTryError(w, r, err, "Coulnd't decode JSON.", "") |
return |
} |
+ if !(request.GPU || request.Raster || request.PDF) { |
+ reportTryError(w, r, nil, "No run configuration supplied...", "") |
+ return |
+ } |
if hasPreProcessor(request.Code) { |
err := fmt.Errorf("Found preprocessor macro in code.") |
reportTryError(w, r, err, "Preprocessor macros aren't allowed.", "") |
@@ -875,9 +882,15 @@ func mainHandler(w http.ResponseWriter, r *http.Request) { |
return |
} |
cmd := fmt.Sprintf("scripts/fiddle_wrapper %s --width %d --height %d", hash, request.Width, request.Height) |
+ if request.Raster { |
+ cmd += " --raster" |
+ } |
if request.GPU { |
cmd += " --gpu" |
} |
+ if request.PDF { |
+ cmd += " --pdf" |
+ } |
if *useChroot { |
cmd = "schroot -c webtry --directory=/ -- /skia_build/skia/experimental/webtry/" + cmd |
} |
@@ -920,16 +933,30 @@ func mainHandler(w http.ResponseWriter, r *http.Request) { |
return |
} |
- png, err := ioutil.ReadFile("../../../inout/" + hash + ".png") |
- if err != nil { |
- reportTryError(w, r, err, "Failed to open the generated PNG.", hash) |
- return |
- } |
- |
m := response{ |
- Img: base64.StdEncoding.EncodeToString([]byte(png)), |
Hash: hash, |
} |
+ |
+ if request.Raster { |
+ png, err := ioutil.ReadFile("../../../inout/" + hash + "_raster.png") |
+ if err != nil { |
+ reportTryError(w, r, err, "Failed to open the raster-generated PNG.", hash) |
+ return |
+ } |
+ |
+ m.RasterImg = base64.StdEncoding.EncodeToString([]byte(png)) |
+ } |
+ |
+ if request.GPU { |
+ png, err := ioutil.ReadFile("../../../inout/" + hash + "_GPU.png") |
+ if err != nil { |
+ reportTryError(w, r, err, "Failed to open the GPU-generated PNG.", hash) |
+ return |
+ } |
+ |
+ m.GPUImg = base64.StdEncoding.EncodeToString([]byte(png)) |
+ } |
+ |
resp, err := json.Marshal(m) |
if err != nil { |
reportTryError(w, r, err, "Failed to serialize a response.", hash) |