All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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(""); _builder.newLine(); { for(final String parameter : parameters) { _builder.append("\t"); _builder.append(""); _builder.newLineIfNotEmpty(); } } _builder.append("
    NameValue
    "); _builder.append(parameter, "\t"); _builder.append(""); Map _parameters_1 = link.getParameters(); String _get = _parameters_1.get(parameter); _builder.append(_get, "\t"); _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