Sha256: eef58a78e862fd9fb669382beba1062c97d0af603741b4f2b9780e0f65f1ba49

Contents?: true

Size: 1.4 KB

Versions: 21

Compression:

Stored size: 1.4 KB

Contents

const Path = require('./path');
const SecuritySchemes = require('./securitySchemes');
const { bestPathInfo } = require('./util');

class Model {
  constructor() {
    this.paths = {};
    this.securitySchemes = new SecuritySchemes();
  }

  swagger() {
    const paths = Object.keys(this.paths)
      .sort()
      .reduce((memo, path) => {
        // eslint-disable-next-line no-param-reassign
        memo[path] = this.paths[path].swagger();
        return memo;
      }, {});
    const securitySchemes = this.securitySchemes.swagger();
    return { paths, components: { securitySchemes } };
  }

  addRequest(event) {
    this.addPath(Model.basePath(event), event);
  }

  addPath(path, event) {
    if (!this.paths[path]) {
      this.paths[path] = new Path(this.securitySchemes);
    }
    const pathObj = this.paths[path];
    pathObj.addRequest(event);
  }

  static basePath(event) {
    const { httpServerRequest } = event;
    let pathInfo = bestPathInfo(httpServerRequest);
    // eslint-disable-next-line prefer-destructuring
    pathInfo = pathInfo.split('(')[0];
    const path = pathInfo.split('/').map((entry) => {
      if (entry.match(/^:(.*)/)) {
        // eslint-disable-next-line no-param-reassign
        entry = `{${entry.substring(1)}}`;
      }
      return entry;
    });
    if (path.length === 1 && path[0] === '') {
      path.push('');
    }
    return path.join('/');
  }
}

module.exports = Model;

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
appmap-0.72.2 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.72.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.72.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.71.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.70.2 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.70.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.70.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.69.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.68.2 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.68.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.68.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.67.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.67.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.66.2 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.66.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.66.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.65.1 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.65.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.64.0 ./node_modules/@appland/appmap/src/swagger/model.js
appmap-0.63.0 ./node_modules/@appland/appmap/src/swagger/model.js