com.reprezen.genflow.swagger.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.swagger.doc;
import com.google.common.base.Objects;
import com.reprezen.genflow.api.normal.openapi.RepreZenVendorExtension;
import com.reprezen.genflow.swagger.doc.AttributeHelper;
import com.reprezen.genflow.swagger.doc.DocHelper;
import com.reprezen.genflow.swagger.doc.ExamplesHelper;
import com.reprezen.genflow.swagger.doc.HelperHelper;
import com.reprezen.genflow.swagger.doc.HtmlHelper;
import com.reprezen.genflow.swagger.doc.MimeTypeHelper;
import com.reprezen.genflow.swagger.doc.MiscHelper;
import com.reprezen.genflow.swagger.doc.OptionHelper;
import com.reprezen.genflow.swagger.doc.ParamsDoc;
import com.reprezen.genflow.swagger.doc.ResponseHelper;
import com.reprezen.genflow.swagger.doc.SchemaHelper;
import com.reprezen.genflow.swagger.doc.TagHelper;
import io.swagger.models.HttpMethod;
import io.swagger.models.Model;
import io.swagger.models.Operation;
import io.swagger.models.Response;
import io.swagger.models.parameters.BodyParameter;
import io.swagger.models.parameters.Parameter;
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 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 AttributeHelper _attributeHelper = HelperHelper.getAttributeHelper();
@Extension
private ExamplesHelper _examplesHelper = HelperHelper.getExamplesHelper();
public OpDoc(final Operation op) {
this.op = op;
}
public CharSequence getHtml(final HttpMethod 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, _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(" ");
_builder.append("- ");
String _summary = this.op.getSummary();
String _description = this.op.getDescription();
String _docHtml = this._docHelper.getDocHtml(_summary, _description);
_builder.append(_docHtml, " ");
_builder.append("
");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("- ");
_builder.newLine();
_builder.append(" ");
_builder.append("
Media Types
");
_builder.newLine();
_builder.append(" ");
_builder.append("");
_builder.newLine();
_builder.append(" ");
_builder.append("Consumes ");
List _consumes = this.op.getConsumes();
CharSequence _html = MimeTypeHelper.getHtml(_consumes);
_builder.append(_html, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("Produces ");
List _produces = this.op.getProduces();
CharSequence _html_1 = MimeTypeHelper.getHtml(_produces);
_builder.append(_html_1, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.append("
");
_builder.newLine();
_builder.append(" ");
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
ParamsDoc _paramsDoc = new ParamsDoc();
List _nonBodyParameters = this.getNonBodyParameters(this.op);
CharSequence _paramsHtml = _paramsDoc.paramsHtml(_nonBodyParameters);
_builder.append(_paramsHtml, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
String _messageBodyHtml = this.getMessageBodyHtml(this.op, method);
_builder.append(_messageBodyHtml, " ");
_builder.newLineIfNotEmpty();
_builder.append("
");
_builder.newLine();
return _builder;
}
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 BodyParameter getBodyParameter(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);
}
Parameter _last = IterableExtensions.last(_filter);
return ((BodyParameter) _last);
}
public String getMessageBodyHtml(final Operation op, final HttpMethod method) {
StringConcatenation _builder = new StringConcatenation();
BodyParameter _bodyParameter = this.getBodyParameter(op);
CharSequence _requestHtml = null;
if (_bodyParameter!=null) {
_requestHtml=this.getRequestHtml(_bodyParameter);
}
_builder.append(_requestHtml, "");
_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.toString();
}
public CharSequence getRequestHtml(final BodyParameter bodyParam) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLine();
_builder.append(" ");
_builder.append("Request ");
String _chevron = this.chevron();
_builder.append(_chevron, " ");
_builder.append(" ");
Model _schema = bodyParam.getSchema();
String _schemaTitle = this._schemaHelper.getSchemaTitle(_schema);
_builder.append(_schemaTitle, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Model _schema_1 = bodyParam.getSchema();
CharSequence _renderSchema = this._schemaHelper.renderSchema(_schema_1);
_builder.append(_renderSchema, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Map _examples = bodyParam.getExamples();
CharSequence _renderExamples = this._examplesHelper.renderExamples(_examples);
_builder.append(_renderExamples, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
_builder.newLine();
return _builder;
}
public CharSequence getResponseHtml(final Response response, final String status) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("");
_builder.newLine();
_builder.append(" ");
_builder.append("Response ");
CharSequence _statusLabel = this.statusLabel(status);
_builder.append(_statusLabel, " ");
_builder.append(" ");
String _chevron = this.chevron();
_builder.append(_chevron, " ");
_builder.append(" ");
Model _responseSchema = response.getResponseSchema();
String _schemaTitle = null;
if (_responseSchema!=null) {
_schemaTitle=this._schemaHelper.getSchemaTitle(_responseSchema);
}
_builder.append(_schemaTitle, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
String _description = response.getDescription();
String _docHtml = null;
if (_description!=null) {
_docHtml=this._docHelper.getDocHtml(_description);
}
_builder.append(_docHtml, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Model _responseSchema_1 = response.getResponseSchema();
CharSequence _renderSchema = null;
if (_responseSchema_1!=null) {
_renderSchema=this._schemaHelper.renderSchema(_responseSchema_1);
}
_builder.append(_renderSchema, " ");
_builder.append(" ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
CharSequence _responseHeaders = this.getResponseHeaders(response);
_builder.append(_responseHeaders, " ");
_builder.newLineIfNotEmpty();
_builder.append(" ");
Map _examples = response.getExamples();
CharSequence _renderExamples = this._examplesHelper. ");
_builder.newLine();
return _builder;
}
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 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