findExistingCredential(repositoryUrl) { const root = UrlConfig.getJenkinsRootURL(); const credUrl = Utils.cleanSlashes(`${root}/blue/rest/organizations/${this.organization}/scm/git/?repositoryUrl=${repositoryUrl}`); // Create error in sync code for better stack trace const possibleError = new TypedError(); return this._fetch(credUrl).then( result => this._findExistingCredentialSuccess(result), error => { const { responseBody } = error; if (responseBody.message.indexOf('Existing credential failed') >= 0) { throw possibleError.populate(LoadError.TOKEN_REVOKED, responseBody); } throw possibleError.populate(LoadError.TOKEN_INVALID, responseBody); } ); }
createCredential(repositoryUrl, userName, password, branchName, requirePush) { const path = UrlConfig.getJenkinsRootURL(); const validateCredUrl = Utils.cleanSlashes(`${path}/blue/rest/organizations/${this.organization}/scm/git/validate`); const requestBody: any = { userName, password, repositoryUrl, }; if (branchName) { requestBody.branch = branchName; } if (requirePush) { requestBody.repositoryUrl = true; // Only set if true! } const fetchOptions = { method: 'PUT', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(requestBody), }; // Create error in sync code for better stack trace const possibleError = new TypedError(); return this._fetch(validateCredUrl, { fetchOptions }).catch(error => { const { code = -1 } = error.responseBody || {}; if (code === 401) { throw possibleError.populate(SaveError.INVALID_CREDENTIAL, error); } throw possibleError.populate(SaveError.UNKNOWN_ERROR, error); }); }