magento-swagger.js 1.84 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

/*global SwaggerTranslator SwaggerUIBundle SwaggerUIStandalonePreset */

/**
 * @api
 */
(function () {
    'use strict';

    var elementBaseUrl = document.querySelector('#input_baseUrl'),
        url = elementBaseUrl.value,
        ui;

    // Pre load translate...
    if (SwaggerTranslator) {
        SwaggerTranslator.translate();
    }

    /**
     * Takes token from input and adds it to request header.
     */
    function addApiKeyAuthorization(e) {
        var key = encodeURIComponent(e.target.value).trim();

        if (key) {
            /**
             * Adds Auth token to request header.
             *
             * @param {Object} req
             *
             * @returns {Object} req
             */
            ui.getConfigs().requestInterceptor = function (req) {
                req.headers.Authorization = 'Bearer ' + key;

                return req;
            };
        }
    }

    ui = new SwaggerUIBundle({
        url: url,
        // jscs:disable requireCamelCaseOrUpperCaseIdentifiers
        dom_id: '#swagger-ui-container',
        presets: [
            SwaggerUIBundle.presets.apis,
            SwaggerUIStandalonePreset
        ],
        plugins: [
            SwaggerUIBundle.plugins.DownloadUrl
        ],
        deepLinking: true,
        // jscs:enable requireCamelCaseOrUpperCaseIdentifiers
        supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
        docExpansion: 'none',
        apisSorter: 'alpha',
        showRequestHeaders: false,
        layout: 'StandaloneLayout'
    });

    document.querySelector('#input_apiKey').addEventListener('change', addApiKeyAuthorization);
    document.querySelector('#explore').addEventListener('click', function () {
        ui.specActions.download();
    });
})();