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

com.reprezen.genflow.swagger.doc.OpDoc Maven / Gradle / Ivy

The newest version!
/**
 * 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.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 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("");
    CharSequence _deprecate = this.deprecate(this.op.getOperationId(), this.op.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 _docHtml = this._docHelper.getDocHtml(this.op.getSummary(), this.op.getDescription()); _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(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append(""); _builder.newLineIfNotEmpty(); _builder.append(" "); _builder.append("
    Consumes"); CharSequence _html = MimeTypeHelper.getHtml(this.op.getConsumes()); _builder.append(_html, " "); _builder.append("
    Produces"); CharSequence _html_1 = MimeTypeHelper.getHtml(this.op.getProduces()); _builder.append(_html_1, " "); _builder.append("
    "); _builder.newLine(); _builder.append(" "); _builder.append("
  • "); _builder.newLine(); _builder.append(" "); CharSequence _paramsHtml = new ParamsDoc().paramsHtml(this.getNonBodyParameters(this.op)); _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(); { List _sortByPosition = this._miscHelper.sortByPosition(op.getResponses().keySet(), op.getResponses()); for(final String code : _sortByPosition) { CharSequence _responseHtml = this.getResponseHtml(op.getResponses().get(code), 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(" "); String _schemaTitle = this._schemaHelper.getSchemaTitle(bodyParam.getSchema()); _builder.append(_schemaTitle, " "); _builder.newLineIfNotEmpty(); _builder.append(" "); CharSequence _renderSchema = this._schemaHelper.renderSchema(bodyParam.getSchema()); _builder.append(_renderSchema, " "); _builder.newLineIfNotEmpty(); _builder.append(" "); CharSequence _renderExamples = this._examplesHelper.renderExamples(bodyParam.getExamples()); _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(" "); CharSequence _renderExamples = this._examplesHelper.renderExamples(response.getExamples()); _builder.append(_renderExamples, " "); _builder.newLineIfNotEmpty(); _builder.append(""); _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 (((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) { _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; if (((deprecated != null) && (deprecated).booleanValue())) { StringConcatenation _builder = new StringConcatenation(); _builder.append(""); _builder.append(text); _builder.append(""); _xifexpression = _builder; } else { _xifexpression = text; } return _xifexpression; } }