com.reprezen.genflow.openapi3.doc.OpDoc Maven / Gradle / Ivy
/**
* Copyright © 2013, 2016 Modelsolv, Inc.
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains the property
* of ModelSolv, Inc. See the file license.html in the root directory of
* this project for further information.
*/
package com.reprezen.genflow.openapi3.doc;
import com.google.common.base.Objects;
import com.reprezen.genflow.openapi3.doc.DocHelper;
import com.reprezen.genflow.openapi3.doc.ExamplesHelper;
import com.reprezen.genflow.openapi3.doc.HelperHelper;
import com.reprezen.genflow.openapi3.doc.HtmlHelper;
import com.reprezen.genflow.openapi3.doc.KaiZenParserHelper;
import com.reprezen.genflow.openapi3.doc.MiscHelper;
import com.reprezen.genflow.openapi3.doc.OptionHelper;
import com.reprezen.genflow.openapi3.doc.ParamsDoc;
import com.reprezen.genflow.openapi3.doc.PathDoc;
import com.reprezen.genflow.openapi3.doc.ResponseHelper;
import com.reprezen.genflow.openapi3.doc.SchemaHelper;
import com.reprezen.genflow.openapi3.doc.TagHelper;
import com.reprezen.kaizen.oasparser.model3.Callback;
import com.reprezen.kaizen.oasparser.model3.Example;
import com.reprezen.kaizen.oasparser.model3.Link;
import com.reprezen.kaizen.oasparser.model3.MediaType;
import com.reprezen.kaizen.oasparser.model3.OpenApi3;
import com.reprezen.kaizen.oasparser.model3.Operation;
import com.reprezen.kaizen.oasparser.model3.Parameter;
import com.reprezen.kaizen.oasparser.model3.Path;
import com.reprezen.kaizen.oasparser.model3.RequestBody;
import com.reprezen.kaizen.oasparser.model3.Response;
import com.reprezen.kaizen.oasparser.model3.Schema;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
@SuppressWarnings("all")
public class OpDoc {
private final Operation op;
@Extension
private KaiZenParserHelper _kaiZenParserHelper = new KaiZenParserHelper();
@Extension
private DocHelper _docHelper = HelperHelper.getDocHelper();
@Extension
private TagHelper _tagHelper = HelperHelper.getTagHelper();
@Extension
private SchemaHelper _schemaHelper = HelperHelper.getSchemaHelper();
@Extension
private ResponseHelper _responseHelper = HelperHelper.getResponseHelper();
@Extension
private HtmlHelper _htmlHelper = HelperHelper.getHtmlHelper();
@Extension
private MiscHelper _miscHelper = HelperHelper.getMiscHelper();
@Extension
private OptionHelper _optionHelper = HelperHelper.getOptionHelper();
@Extension
private ExamplesHelper _examplesHelper = HelperHelper.getExamplesHelper();
public OpDoc(final Operation op, final OpenApi3 model, final Path path) {
this.op = op;
}
public String getHtml(final String method) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLineIfNotEmpty();
_builder.append("");
_builder.append(method, "");
_builder.append("");
_builder.newLineIfNotEmpty();
_builder.append("");
String _operationId = this.op.getOperationId();
boolean _isDeprecated = this.op.isDeprecated();
CharSequence _deprecate = this.deprecate(_operationId, Boolean.valueOf(_isDeprecated));
_builder.append(_deprecate, "");
_builder.append("");
_builder.newLineIfNotEmpty();
CharSequence _tagBadges = this._tagHelper.getTagBadges(this.op);
_builder.append(_tagBadges, "");
_builder.newLineIfNotEmpty();
{
Boolean _isPreview = this._optionHelper.isPreview();
if ((_isPreview).booleanValue()) {
_builder.append(" ");
_builder.newLine();
_builder.append("");
_builder.newLine();
_builder.append("\t\t");
_builder.append("");
_builder.newLineIfNotEmpty();
_builder.append("");
_builder.newLine();
}
}
_builder.append("");
_builder.newLine();
_builder.append(" ");
String _summary = this.op.getSummary();
String _description = this.op.getDescription();
String _docHtml = this._docHelper.getDocHtml(_summary, _description);
_builder.append(_docHtml, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
ParamsDoc _paramsDoc = new ParamsDoc();
List _nonBodyParameters = this.getNonBodyParameters(this.op);
CharSequence _paramsHtml = _paramsDoc.paramsHtml(_nonBodyParameters);
_builder.append(_paramsHtml, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
CharSequence _messageBodyHtml = this.getMessageBodyHtml(this.op);
_builder.append(_messageBodyHtml, " ");
_builder.newLineIfNotEmpty();
{
Map _callbacks = this.op.getCallbacks();
Set _keySet = _callbacks.keySet();
for(final String callback : _keySet) {
_builder.append(" ");
Map _callbacks_1 = this.op.getCallbacks();
Callback _get = _callbacks_1.get(callback);
CharSequence _callbackHtml = this.getCallbackHtml(_get, callback);
_builder.append(_callbackHtml, " ");
_builder.newLineIfNotEmpty();
}
}
_builder.append("
");
_builder.newLine();
return _builder.toString();
}
public List getNonBodyParameters(final Operation op) {
List _parameters = op.getParameters();
Iterable _filter = null;
if (_parameters!=null) {
final Function1 _function = (Parameter it) -> {
String _in = it.getIn();
return Boolean.valueOf((!Objects.equal(_in, "body")));
};
_filter=IterableExtensions.filter(_parameters, _function);
}
return IterableExtensions.toList(_filter);
}
public CharSequence getMessageBodyHtml(final Operation op) {
StringConcatenation _builder = new StringConcatenation();
RequestBody _requestBody = op.getRequestBody();
RequestBody _asNullIfMissing = this._kaiZenParserHelper.asNullIfMissing(_requestBody);
CharSequence _requestBodyHtml = null;
if (_asNullIfMissing!=null) {
_requestBodyHtml=this.getRequestBodyHtml(_asNullIfMissing);
}
_builder.append(_requestBodyHtml, "");
_builder.newLineIfNotEmpty();
{
Map _responses = op.getResponses();
Set _keySet = _responses.keySet();
Map _responses_1 = op.getResponses();
List _sortByPosition = this._miscHelper.sortByPosition(_keySet, _responses_1);
for(final String code : _sortByPosition) {
Map _responses_2 = op.getResponses();
Response _get = _responses_2.get(code);
CharSequence _responseHtml = this.getResponseHtml(_get, code);
_builder.append(_responseHtml, "");
}
}
_builder.newLineIfNotEmpty();
return _builder;
}
public CharSequence getRequestBodyHtml(final RequestBody bodyParam) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLine();
{
Map _contentMediaTypes = bodyParam.getContentMediaTypes();
Set _keySet = _contentMediaTypes.keySet();
for(final String contentType : _keySet) {
_builder.append(" ");
_builder.append("Request ");
_builder.append(contentType, " ");
_builder.append("");
String _chevron = this.chevron();
_builder.append(_chevron, " ");
Map _contentMediaTypes_1 = bodyParam.getContentMediaTypes();
MediaType _get = _contentMediaTypes_1.get(contentType);
Schema _schema = _get.getSchema();
String _schemaTitle = null;
if (_schema!=null) {
_schemaTitle=this._schemaHelper.getSchemaTitle(_schema);
}
_builder.append(_schemaTitle, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Map _contentMediaTypes_2 = bodyParam.getContentMediaTypes();
MediaType _get_1 = _contentMediaTypes_2.get(contentType);
CharSequence _mediaTypeHtml = this.getMediaTypeHtml(contentType, _get_1);
_builder.append(_mediaTypeHtml, " ");
_builder.newLineIfNotEmpty();
}
}
_builder.append(" ");
_builder.newLine();
return _builder;
}
public CharSequence getMediaTypeHtml(final String name, final MediaType mediaType) {
StringConcatenation _builder = new StringConcatenation();
Schema _schema = mediaType.getSchema();
String _description = null;
if (_schema!=null) {
_description=_schema.getDescription();
}
String _docHtml = null;
if (_description!=null) {
_docHtml=this._docHelper.getDocHtml(_description);
}
_builder.append(_docHtml, "");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Schema _schema_1 = mediaType.getSchema();
CharSequence _renderSchema = null;
if (_schema_1!=null) {
_renderSchema=this._schemaHelper.renderSchema(_schema_1);
}
_builder.append(_renderSchema, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Map _examples = mediaType.getExamples();
String _renderExamples = this._examplesHelper.renderExamples(_examples);
_builder.append(_renderExamples, " ");
_builder.newLineIfNotEmpty();
return _builder;
}
public CharSequence getResponseHtml(final Response response, final String status) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLine();
_builder.append("\t");
_builder.append("Response ");
CharSequence _statusLabel = this.statusLabel(status);
_builder.append(_statusLabel, "\t");
_builder.append("
");
_builder.newLineIfNotEmpty();
_builder.append("\t");
String _description = response.getDescription();
String _docHtml = null;
if (_description!=null) {
_docHtml=this._docHelper.getDocHtml(_description);
}
_builder.append(_docHtml, "\t");
_builder.newLineIfNotEmpty();
{
Map _contentMediaTypes = response.getContentMediaTypes();
Set _keySet = _contentMediaTypes.keySet();
for(final String contentType : _keySet) {
_builder.append("\t");
Map _contentMediaTypes_1 = response.getContentMediaTypes();
MediaType _get = _contentMediaTypes_1.get(contentType);
CharSequence _responseContentHtml = this.getResponseContentHtml(response, contentType, _get, status);
_builder.append(_responseContentHtml, "\t");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("
");
_builder.newLine();
}
}
_builder.append("\t");
CharSequence _responseHeaders = this.getResponseHeaders(response);
_builder.append(_responseHeaders, "\t");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
return _builder;
}
public CharSequence getResponseContentHtml(final Response response, final String contentType, final MediaType mediaType, final String status) {
CharSequence _xblockexpression = null;
{
Schema _schema = null;
if (mediaType!=null) {
_schema=mediaType.getSchema();
}
final Schema schema = _schema;
StringConcatenation _builder = new StringConcatenation();
String _chevron = this.chevron();
_builder.append(_chevron, "");
_builder.append(" ");
_builder.append(contentType, "");
_builder.append(" ");
_builder.newLineIfNotEmpty();
String _schemaTitle = null;
if (schema!=null) {
_schemaTitle=this._schemaHelper.getSchemaTitle(schema);
}
_builder.append(_schemaTitle, "");
_builder.newLineIfNotEmpty();
CharSequence _renderSchema = null;
if (schema!=null) {
_renderSchema=this._schemaHelper.renderSchema(schema);
}
_builder.append(_renderSchema, "");
_builder.append("\t\t\t");
_builder.newLineIfNotEmpty();
Object _example = null;
if (mediaType!=null) {
_example=mediaType.getExample();
}
String _renderExample = this._examplesHelper.renderExample(_example);
_builder.append(_renderExample, "");
_builder.newLineIfNotEmpty();
Map _examples = null;
if (mediaType!=null) {
_examples=mediaType.getExamples();
}
String _renderExamples = this._examplesHelper.renderExamples(_examples);
_builder.append(_renderExamples, "");
_builder.newLineIfNotEmpty();
CharSequence _responseLinks = this.getResponseLinks(response);
_builder.append(_responseLinks, "");
_builder.newLineIfNotEmpty();
_xblockexpression = _builder;
}
return _xblockexpression;
}
private CharSequence getResponseHeaders(final Response response) {
CharSequence _xblockexpression = null;
{
final CharSequence html = this._responseHelper.getHeadersHtml(response);
CharSequence _xifexpression = null;
if ((html != null)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("Headers
");
_builder.newLine();
_builder.append(html, "");
_builder.newLineIfNotEmpty();
_xifexpression = _builder;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
public CharSequence getCallbackHtml(final Callback callback, final String name) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLine();
_builder.append("\t");
_builder.append("Callback ");
_builder.append(name, "\t");
_builder.append("
");
_builder.newLineIfNotEmpty();
{
Map _callbackPaths = callback.getCallbackPaths();
Set _keySet = _callbackPaths.keySet();
for(final String path : _keySet) {
_builder.append("\t");
Map _callbackPaths_1 = callback.getCallbackPaths();
Path _get = _callbackPaths_1.get(path);
PathDoc _pathDoc = new PathDoc(path, _get);
CharSequence _html = _pathDoc.getHtml();
_builder.append(_html, "\t");
_builder.newLineIfNotEmpty();
}
}
_builder.append(" ");
_builder.newLine();
return _builder;
}
public CharSequence getResponseLinks(final Response response) {
CharSequence _xifexpression = null;
Map _links = response.getLinks();
boolean _isEmpty = _links.isEmpty();
if (_isEmpty) {
StringConcatenation _builder = new StringConcatenation();
_xifexpression = _builder;
} else {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("Links
");
_builder_1.newLine();
{
Map _links_1 = response.getLinks();
Set _keySet = _links_1.keySet();
for(final String link : _keySet) {
_builder_1.append("\t");
Map _links_2 = response.getLinks();
Link _get = _links_2.get(link);
CharSequence _linkHtml = this.getLinkHtml(link, _get);
_builder_1.append(_linkHtml, "\t");
_builder_1.newLineIfNotEmpty();
}
}
_builder_1.append(" ");
_builder_1.newLine();
_xifexpression = _builder_1;
}
return _xifexpression;
}
public CharSequence getLinkHtml(final String name, final Link link) {
CharSequence _xblockexpression = null;
{
Map _parameters = link.getParameters();
final Set parameters = _parameters.keySet();
StringConcatenation _builder = new StringConcatenation();
String _chevron = this.chevron();
_builder.append(_chevron, "");
_builder.append(" ");
_builder.append(name, "");
_builder.append(" ");
String _operationId = link.getOperationId();
_builder.append(_operationId, "");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
_builder.append("");
String _description = link.getDescription();
_builder.append(_description, "");
_builder.append("
");
_builder.newLineIfNotEmpty();
_builder.append("Parameters
");
_builder.newLine();
_builder.append("\t\t\t\t\t");
_builder.newLine();
_builder.append("\t");
_builder.append("Name Value ");
_builder.newLine();
{
for(final String parameter : parameters) {
_builder.append("\t");
_builder.append("");
_builder.append(parameter, "\t");
_builder.append(" ");
Map _parameters_1 = link.getParameters();
String _get = _parameters_1.get(parameter);
_builder.append(_get, "\t");
_builder.append(" ");
_builder.newLineIfNotEmpty();
}
}
_builder.append("
");
_builder.newLine();
_xblockexpression = _builder;
}
return _xblockexpression;
}
public String chevron() {
return "";
}
public CharSequence statusLabel(final String status) {
CharSequence _xblockexpression = null;
{
String _xtrycatchfinallyexpression = null;
try {
String _switchResult = null;
int _parseInt = Integer.parseInt(status);
final int s = _parseInt;
boolean _matched = false;
if (!_matched) {
if (((s >= 100) && (s < 200))) {
_matched=true;
_switchResult = "info";
}
}
if (!_matched) {
if (((s >= 200) && (s < 300))) {
_matched=true;
_switchResult = "success";
}
}
if (!_matched) {
if (((s >= 300) && (s < 400))) {
_matched=true;
_switchResult = "info";
}
}
if (!_matched) {
if (((s >= 400) && (s < 500))) {
_matched=true;
_switchResult = "danger";
}
}
if (!_matched) {
if (((s >= 500) && (s < 600))) {
_matched=true;
_switchResult = "danger";
}
}
if (!_matched) {
_switchResult = "default";
}
_xtrycatchfinallyexpression = _switchResult;
} catch (final Throwable _t) {
if (_t instanceof NumberFormatException) {
final NumberFormatException e = (NumberFormatException)_t;
_xtrycatchfinallyexpression = status;
} else {
throw Exceptions.sneakyThrow(_t);
}
}
final String context = _xtrycatchfinallyexpression;
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.append(status, "");
_builder.append("");
_xblockexpression = _builder;
}
return _xblockexpression;
}
public CharSequence deprecate(final String text, final Boolean deprecated) {
CharSequence _xifexpression = null;
boolean _and = false;
if (!(deprecated != null)) {
_and = false;
} else {
_and = (deprecated).booleanValue();
}
if (_and) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.append(text, "");
_builder.append("");
_xifexpression = _builder;
} else {
_xifexpression = text;
}
return _xifexpression;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy