From 2cea85b0b4b18af73ed6afd7d837d443da43fd2b Mon Sep 17 00:00:00 2001 From: SerenaFeng Date: Tue, 18 Oct 2016 17:30:31 +0800 Subject: rename result_collection_api to testapi Change-Id: Iec4e3db23cd44f30831e17c127eda74e9d9b5d14 Signed-off-by: SerenaFeng --- testapi/3rd_party/static/lib/swagger-oauth.js | 211 ++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 testapi/3rd_party/static/lib/swagger-oauth.js (limited to 'testapi/3rd_party/static/lib/swagger-oauth.js') diff --git a/testapi/3rd_party/static/lib/swagger-oauth.js b/testapi/3rd_party/static/lib/swagger-oauth.js new file mode 100644 index 0000000..7c8839a --- /dev/null +++ b/testapi/3rd_party/static/lib/swagger-oauth.js @@ -0,0 +1,211 @@ +var appName; +var popupMask; +var popupDialog; +var clientId; +var realm; + +function handleLogin() { + var scopes = []; + + if(window.swaggerUi.api.authSchemes + && window.swaggerUi.api.authSchemes.oauth2 + && window.swaggerUi.api.authSchemes.oauth2.scopes) { + scopes = window.swaggerUi.api.authSchemes.oauth2.scopes; + } + + if(window.swaggerUi.api + && window.swaggerUi.api.info) { + appName = window.swaggerUi.api.info.title; + } + + if(popupDialog.length > 0) + popupDialog = popupDialog.last(); + else { + popupDialog = $( + [ + '
', + '
Select OAuth2.0 Scopes
', + '
', + '

Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.', + 'Learn how to use', + '

', + '

' + appName + ' API requires the following scopes. Select which ones you want to grant to Swagger UI.

', + '
    ', + '
', + '

', + '
', + '
', + '
'].join('')); + $(document.body).append(popupDialog); + + popup = popupDialog.find('ul.api-popup-scopes').empty(); + for (i = 0; i < scopes.length; i ++) { + scope = scopes[i]; + str = '
  • ' + '
  • '; + popup.append(str); + } + } + + var $win = $(window), + dw = $win.width(), + dh = $win.height(), + st = $win.scrollTop(), + dlgWd = popupDialog.outerWidth(), + dlgHt = popupDialog.outerHeight(), + top = (dh -dlgHt)/2 + st, + left = (dw - dlgWd)/2; + + popupDialog.css({ + top: (top < 0? 0 : top) + 'px', + left: (left < 0? 0 : left) + 'px' + }); + + popupDialog.find('button.api-popup-cancel').click(function() { + popupMask.hide(); + popupDialog.hide(); + }); + popupDialog.find('button.api-popup-authbtn').click(function() { + popupMask.hide(); + popupDialog.hide(); + + var authSchemes = window.swaggerUi.api.authSchemes; + var host = window.location; + var redirectUrl = "o2c.html"; + var url = null; + + var p = window.swaggerUi.api.authSchemes; + for (var key in p) { + if (p.hasOwnProperty(key)) { + var o = p[key].grantTypes; + for(var t in o) { + if(o.hasOwnProperty(t) && t === 'implicit') { + var dets = o[t]; + url = dets.loginEndpoint.url + "?response_type=token"; + window.swaggerUi.tokenName = dets.tokenName; + } + } + } + } + var scopes = [] + var o = $('.api-popup-scopes').find('input:checked'); + + for(k =0; k < o.length; k++) { + scopes.push($(o[k]).attr("scope")); + } + + window.enabledScopes=scopes; + + url += '&redirect_uri=' + encodeURIComponent(redirectUrl); + url += '&realm=' + encodeURIComponent(realm); + url += '&client_id=' + encodeURIComponent(clientId); + url += '&scope=' + encodeURIComponent(scopes); + + window.open(url); + }); + + popupMask.show(); + popupDialog.show(); + return; +} + + +function handleLogout() { + for(key in window.authorizations.authz){ + window.authorizations.remove(key) + } + window.enabledScopes = null; + $('.api-ic.ic-on').addClass('ic-off'); + $('.api-ic.ic-on').removeClass('ic-on'); + + // set the info box + $('.api-ic.ic-warning').addClass('ic-error'); + $('.api-ic.ic-warning').removeClass('ic-warning'); +} + +function initOAuth(opts) { + var o = (opts||{}); + var errors = []; + + appName = (o.appName||errors.push("missing appName")); + popupMask = (o.popupMask||$('#api-common-mask')); + popupDialog = (o.popupDialog||$('.api-popup-dialog')); + clientId = (o.clientId||errors.push("missing client id")); + realm = (o.realm||errors.push("missing realm")); + + if(errors.length > 0){ + log("auth unable initialize oauth: " + errors); + return; + } + + $('pre code').each(function(i, e) {hljs.highlightBlock(e)}); + $('.api-ic').click(function(s) { + if($(s.target).hasClass('ic-off')) + handleLogin(); + else { + handleLogout(); + } + false; + }); +} + +function onOAuthComplete(token) { + if(token) { + if(token.error) { + var checkbox = $('input[type=checkbox],.secured') + checkbox.each(function(pos){ + checkbox[pos].checked = false; + }); + alert(token.error); + } + else { + var b = token[window.swaggerUi.tokenName]; + if(b){ + // if all roles are satisfied + var o = null; + $.each($('.auth #api_information_panel'), function(k, v) { + var children = v; + if(children && children.childNodes) { + var requiredScopes = []; + $.each((children.childNodes), function (k1, v1){ + var inner = v1.innerHTML; + if(inner) + requiredScopes.push(inner); + }); + var diff = []; + for(var i=0; i < requiredScopes.length; i++) { + var s = requiredScopes[i]; + if(window.enabledScopes && window.enabledScopes.indexOf(s) == -1) { + diff.push(s); + } + } + if(diff.length > 0){ + o = v.parentNode; + $(o.parentNode).find('.api-ic.ic-on').addClass('ic-off'); + $(o.parentNode).find('.api-ic.ic-on').removeClass('ic-on'); + + // sorry, not all scopes are satisfied + $(o).find('.api-ic').addClass('ic-warning'); + $(o).find('.api-ic').removeClass('ic-error'); + } + else { + o = v.parentNode; + $(o.parentNode).find('.api-ic.ic-off').addClass('ic-on'); + $(o.parentNode).find('.api-ic.ic-off').removeClass('ic-off'); + + // all scopes are satisfied + $(o).find('.api-ic').addClass('ic-info'); + $(o).find('.api-ic').removeClass('ic-warning'); + $(o).find('.api-ic').removeClass('ic-error'); + } + } + }); + + window.authorizations.add("key", new ApiKeyAuthorization("Authorization", "Bearer " + b, "header")); + } + } + } +} \ No newline at end of file -- cgit 1.2.3-korg