1010import io .tpd .quboo .sonarplugin .pojos .Users ;
1111import io .tpd .quboo .sonarplugin .settings .QubooProperties ;
1212import okhttp3 .*;
13- import org .apache .commons .lang3 .StringUtils ;
1413import org .sonar .api .ce .posttask .PostProjectAnalysisTask ;
1514import org .sonar .api .platform .Server ;
1615import org .sonar .api .utils .log .Logger ;
1716import org .sonar .api .utils .log .Loggers ;
1817
18+ import java .util .Base64 ;
19+
1920import static io .tpd .quboo .sonarplugin .settings .QubooProperties .DEFAULT_ACCESS_KEY ;
21+ import static org .apache .commons .lang3 .StringUtils .isEmpty ;
2022
2123/**
2224 * Sends stats to the Quboo server after an analysis
@@ -38,12 +40,16 @@ public QubooConnector(final Server server) {
3840 public void finished (ProjectAnalysis analysis ) {
3941 final String qubooKey = analysis .getScannerContext ().getProperties ().get (QubooProperties .ACCESS_KEY );
4042 final String qubooSecret = analysis .getScannerContext ().getProperties ().get (QubooProperties .SECRET_KEY );
41- if (!StringUtils .isEmpty (qubooKey ) && !DEFAULT_ACCESS_KEY .equals (qubooKey )) {
43+ final String token = analysis .getScannerContext ().getProperties ().get (QubooProperties .TOKEN_KEY );
44+ if (!isEmpty (token )) {
45+ log .info ("A token will be used to connect to SonarQube server" );
46+ }
47+ if (!isEmpty (qubooKey ) && !DEFAULT_ACCESS_KEY .equals (qubooKey )) {
4248 log .info ("Connecting to Quboo with quboo key: " + qubooKey );
4349 try {
44- final UsersWrapper allUsers = getUsers ();
50+ final UsersWrapper allUsers = getUsers (token );
4551 sendUsersToQuboo (allUsers , qubooKey , qubooSecret );
46- final IssuesWrapper allIssues = getIssues ();
52+ final IssuesWrapper allIssues = getIssues (token );
4753 sendIssuesToQuboo (allIssues , qubooKey , qubooSecret );
4854 } catch (final Exception e ) {
4955 log .error ("Error while trying to connect to Quboo" , e );
@@ -65,13 +71,15 @@ private void sendIssuesToQuboo(final IssuesWrapper allIssues, final String quboo
6571 log .info ("Response " + response .code () + " | " + body );
6672 }
6773
68- private IssuesWrapper getIssues () throws Exception {
74+ private IssuesWrapper getIssues (final String token ) throws Exception {
6975 int pageNumber = 1 ;
7076 boolean moreData = true ;
7177 IssuesWrapper wrapper = new IssuesWrapper ();
7278 while (moreData ) {
73- final Request request = new Request .Builder ().url (server .getPublicRootUrl () + "/api/issues/search?assigned=true&ps=200&p=" + pageNumber ).get ().build ();
74- final Response response = http .newCall (request ).execute ();
79+ final Request .Builder request = new Request .Builder ()
80+ .url (server .getPublicRootUrl () + "/api/issues/search?assigned=true&ps=200&p=" + pageNumber ).get ();
81+ addAuthorizationIfNeeded (request , token );
82+ final Response response = http .newCall (request .build ()).execute ();
7583 final String body = response .body ().string ();
7684 final Issues issues = mapper .readValue (body , Issues .class );
7785 wrapper .filterAndAddIssues (issues , server .getVersion ());
@@ -94,14 +102,15 @@ private void sendUsersToQuboo(final UsersWrapper allUsers, final String qubooKey
94102 log .info ("Response " + response .code () + " | " + body );
95103 }
96104
97- private UsersWrapper getUsers () {
105+ private UsersWrapper getUsers (final String token ) {
98106 int pageNumber = 1 ;
99107 boolean moreData = true ;
100108 UsersWrapper wrapper = new UsersWrapper ();
101109 while (moreData ) {
102110 try {
103- final Request request = new Request .Builder ().url (server .getPublicRootUrl () + "/api/users/search?ps=200&p=" + pageNumber ).get ().build ();
104- final Response response = http .newCall (request ).execute ();
111+ final Request .Builder request = new Request .Builder ().url (server .getPublicRootUrl () + "/api/users/search?ps=200&p=" + pageNumber ).get ();
112+ addAuthorizationIfNeeded (request , token );
113+ final Response response = http .newCall (request .build ()).execute ();
105114 final String body = response .body ().string ();
106115 final Users users = mapper .readValue (body , Users .class );
107116 wrapper .filterAndAddUsers (users , server .getVersion ());
@@ -120,4 +129,12 @@ private boolean moreData(final Paging paging, final int elementsInPage) {
120129 return elementsInPage == paging .getPageSize () && paging .getTotal () > paging .getPageSize () * paging .getPageIndex ();
121130 }
122131
132+ private Request .Builder addAuthorizationIfNeeded (final Request .Builder requestBuilder , final String token ) {
133+ if (!isEmpty (token )) {
134+ final String headerValue = "Basic " + Base64 .getEncoder ().encodeToString ((token + ":" ).getBytes ());
135+ requestBuilder .header ("Authorization" , headerValue );
136+ }
137+ return requestBuilder ;
138+ }
139+
123140}
0 commit comments