Skip to content

Commit 49695e7

Browse files
committed
Parse from string
1 parent ef4c8d8 commit 49695e7

File tree

1 file changed

+52
-26
lines changed

1 file changed

+52
-26
lines changed

src/main/java/com/apiflows/parser/OpenAPIWorkflowParser.java

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,44 +17,71 @@ public class OpenAPIWorkflowParser {
1717

1818
private static final Logger LOGGER = LoggerFactory.getLogger(OpenAPIWorkflowParser.class);
1919

20-
public OpenAPIWorkflowParserResult parse(String location) {
21-
return parse(location, new ParseOptions());
20+
/**
21+
* Parse an OpenAPI Workflow file
22+
* @param input url, filepath or content (as string)
23+
* @return instance of OpenAPIWorkflowParserResult
24+
*/
25+
public OpenAPIWorkflowParserResult parse(String input) {
26+
return parse(input, new ParseOptions());
2227
}
2328

24-
public OpenAPIWorkflowParserResult parse(String location, ParseOptions options) {
29+
/**
30+
* Parse an OpenAPI Workflow file
31+
* @param input url, filepath or content (as string)
32+
* @param options Options
33+
* @return instance of OpenAPIWorkflowParserResult
34+
*/
35+
public OpenAPIWorkflowParserResult parse(String input, ParseOptions options) {
2536

2637
OpenAPIWorkflowParserResult result = new OpenAPIWorkflowParserResult();
2738

28-
PathUtil pathUtil = new PathUtil();
29-
HttpUtil httpUtil = new HttpUtil();
30-
3139
try {
40+
41+
PathUtil pathUtil = new PathUtil();
42+
HttpUtil httpUtil = new HttpUtil();
43+
3244
String content;
3345

34-
if (httpUtil.isUrl(location)) {
35-
content = httpUtil.call(location);
46+
if (httpUtil.isUrl(input)) {
47+
content = httpUtil.call(input);
48+
result.setLocation(input);
49+
} else if (pathUtil.isFile(input)) {
50+
content = pathUtil.getFromFile(input);
51+
result.setLocation(input);
3652
} else {
37-
content = pathUtil.getFromFile(location);
53+
// content as string
54+
content = input;
55+
result.setLocation(null);
3856
}
3957

40-
final ObjectMapper mapper = getObjectMapper(content);
58+
result.setContent(content);
59+
result.setFormat(getFormat(content));
4160

42-
OpenAPIWorkflow openAPIWorkflow = mapper.readValue(content, OpenAPIWorkflow.class);
43-
openAPIWorkflow.setLocation(location);
44-
openAPIWorkflow.setContent(content);
45-
openAPIWorkflow.setFormat(getFormat(content));
61+
try {
4662

47-
result.setOpenAPIWorkflow(openAPIWorkflow);
63+
final ObjectMapper mapper = getObjectMapper(content);
4864

49-
if(options != null && options.isApplyValidation()) {
50-
OpenAPIWorkflowValidatorResult validatorResult = new OpenAPIWorkflowValidator().validate(openAPIWorkflow);
51-
result.setValid(validatorResult.isValid());
52-
result.setErrors(validatorResult.getErrors());
53-
}
65+
OpenAPIWorkflow openAPIWorkflow = mapper.readValue(content, OpenAPIWorkflow.class);
66+
67+
result.setOpenAPIWorkflow(openAPIWorkflow);
5468

55-
new OperationBinder().bind(openAPIWorkflow);
69+
if(options != null && options.isApplyValidation()) {
70+
OpenAPIWorkflowValidatorResult validatorResult = new OpenAPIWorkflowValidator().validate(openAPIWorkflow);
71+
result.setValid(validatorResult.isValid());
72+
result.setErrors(validatorResult.getErrors());
73+
}
74+
75+
new OperationBinder().bind(openAPIWorkflow, result.getLocation());
76+
77+
new WorkflowBinder().bind(openAPIWorkflow);
78+
79+
} catch (Exception e) {
80+
LOGGER.error(e.getMessage(), e);
81+
result.setValid(false);
82+
result.addError(e.getMessage());
83+
}
5684

57-
new WorkflowBinder().bind(openAPIWorkflow);
5885

5986
} catch (Exception e) {
6087
LOGGER.error(e.getMessage(), e);
@@ -64,15 +91,14 @@ public OpenAPIWorkflowParserResult parse(String location, ParseOptions options)
6491
return result;
6592
}
6693

67-
OpenAPIWorkflow.Format getFormat(String content) {
94+
OpenAPIWorkflowParserResult.Format getFormat(String content) {
6895
if (content.trim().startsWith("{")) {
69-
return OpenAPIWorkflow.Format.JSON;
96+
return OpenAPIWorkflowParserResult.Format.JSON;
7097
} else {
71-
return OpenAPIWorkflow.Format.YAML;
98+
return OpenAPIWorkflowParserResult.Format.YAML;
7299
}
73100
}
74101

75-
76102
private ObjectMapper getObjectMapper(String content) {
77103
ObjectMapper objectMapper = null;
78104
if (content.trim().startsWith("{")) {

0 commit comments

Comments
 (0)