private GoPluginApiResponse handlePipelineExportRequest(GoPluginApiRequest request) { return handlingErrors(() -> { ParsedRequest parsed = ParsedRequest.parse(request); Map<String, Object> pipeline = parsed.getParam("pipeline"); String name = (String) pipeline.get("name"); Map<String, String> responseMap = Collections.singletonMap("pipeline", new RootTransform().inverseTransformPipeline(pipeline)); DefaultGoPluginApiResponse response = success(gson.toJson(responseMap)); response.addResponseHeader("Content-Type", "application/x-yaml; charset=utf-8"); response.addResponseHeader("X-Export-Filename", name + ".gocd.yaml"); return response; }); }
private GoPluginApiResponse handleParseDirectoryRequest(GoPluginApiRequest request) { return handlingErrors(() -> { ParsedRequest parsed = ParsedRequest.parse(request); File baseDir = new File(parsed.getStringParam("directory")); String pattern = parsed.getConfigurationKey(PLUGIN_SETTINGS_FILE_PATTERN); if (isBlank(pattern)) { pattern = getFilePattern(); } YamlConfigParser parser = new YamlConfigParser(); String[] files = new AntDirectoryScanner().getFilesMatchingPattern(baseDir, pattern); JsonConfigCollection config = parser.parseFiles(baseDir, files); config.updateTargetVersionFromFiles(); return success(gson.toJson(config.getJsonObject())); }); }
static ParsedRequest parse(GoPluginApiRequest req) { JsonParser parser = new JsonParser(); String requestBody = req.requestBody(); if (null == requestBody || requestBody.trim().isEmpty()) { throw new RequestParseException(EMPTY_REQUEST_BODY_MESSAGE); } JsonElement parsed; try { parsed = parser.parse(requestBody); } catch (JsonParseException e) { throw new RequestParseException(INVALID_JSON, e); } if (parsed.equals(new JsonObject())) { throw new RequestParseException(EMPTY_REQUEST_BODY_MESSAGE); } try { return new ParsedRequest(req.requestName(), parsed.getAsJsonObject()); } catch (Exception e) { throw new ParsedRequest.RequestParseException(e); } }
private GoPluginApiResponse handleParseContentRequest(GoPluginApiRequest request) { return handlingErrors(() -> { ParsedRequest parsed = ParsedRequest.parse(request); YamlConfigParser parser = new YamlConfigParser(); Map<String, String> contents = parsed.getParam("contents"); JsonConfigCollection result = new JsonConfigCollection(); contents.forEach((filename, content) -> { parser.parseStream(result, new ByteArrayInputStream(content.getBytes()), filename); }); result.updateTargetVersionFromFiles(); return success(gson.toJson(result.getJsonObject())); }); }