11package com .browserstack .client ;
22
3- import java .io .IOException ;
4- import java .io .InputStream ;
5- import java .io .Reader ;
6- import java .lang .reflect .Type ;
7- import java .nio .charset .Charset ;
8- import java .util .ArrayList ;
9- import java .util .Arrays ;
10- import java .util .List ;
11- import java .util .Map ;
123import com .browserstack .automate .Automate .BuildStatus ;
134import com .browserstack .automate .exception .BuildNotFound ;
145import com .browserstack .automate .exception .SessionNotFound ;
2415import com .fasterxml .jackson .core .JsonProcessingException ;
2516import com .fasterxml .jackson .databind .ObjectMapper ;
2617import com .fasterxml .jackson .databind .node .ObjectNode ;
27- import com .google .api .client .http .BasicAuthentication ;
28- import com .google .api .client .http .GenericUrl ;
29- import com .google .api .client .http .HttpRequest ;
30- import com .google .api .client .http .HttpRequestFactory ;
31- import com .google .api .client .http .HttpRequestInitializer ;
32- import com .google .api .client .http .HttpResponse ;
33- import com .google .api .client .http .HttpTransport ;
18+ import com .google .api .client .http .*;
3419import com .google .api .client .http .javanet .NetHttpTransport ;
3520import com .google .api .client .util .ObjectParser ;
3621
3722import javax .annotation .Nonnull ;
23+ import java .io .IOException ;
24+ import java .io .InputStream ;
25+ import java .io .Reader ;
26+ import java .lang .reflect .Type ;
27+ import java .nio .charset .Charset ;
28+ import java .util .ArrayList ;
29+ import java .util .Arrays ;
30+ import java .util .List ;
31+ import java .util .Map ;
3832
3933public abstract class BrowserStackClient implements BrowserStackClientInterface {
4034 private static final String BASE_URL = "https://www.browserstack.com" ;
@@ -457,33 +451,11 @@ public List<Session> getSessions(final String buildId, final BuildStatus status,
457451 totalRequests ++;
458452 }
459453
460- BrowserStackRequest httpRequest = null ;
461454 final List <Session > sessions = new ArrayList <Session >();
462455
463456 // currReq will act as offset to fetch all* sessions from the build
464457 for (int currReq = 0 ; currReq < totalRequests ; currReq ++) {
465- try {
466- httpRequest =
467- newRequest (Method .GET , "/builds/{buildId}/sessions.json" ).routeParam ("buildId" , buildId );
468- } catch (BrowserStackException e ) {
469- throw e ;
470- }
471-
472- httpRequest .queryString (Constants .Filter .LIMIT , totalLimit );
473- httpRequest .queryString (Constants .Filter .OFFSET , currReq );
474-
475- if (status != null ) {
476- httpRequest .queryString (Constants .Filter .FILTER , status );
477- }
478-
479- final List <SessionNode > sessionNodes ;
480- try {
481- sessionNodes = Arrays .asList (httpRequest .asObject (SessionNode [].class ));
482- } catch (BrowserStackObjectNotFound e ) {
483- throw new BuildNotFound ("Build not found: " + buildId );
484- } catch (BrowserStackException e ) {
485- throw e ;
486- }
458+ final List <SessionNode > sessionNodes = getSessionNodes (buildId , status , totalLimit , currReq );
487459
488460 for (SessionNode sessionNode : sessionNodes ) {
489461 if (sessionNode != null && sessionNode .getSession () != null ) {
@@ -500,6 +472,33 @@ public List<Session> getSessions(final String buildId, final BuildStatus status,
500472 return sessions ;
501473 }
502474
475+ private List <SessionNode > getSessionNodes (String buildId , BuildStatus status , int totalLimit , int offset ) throws BrowserStackException {
476+ BrowserStackRequest httpRequest ;
477+ try {
478+ httpRequest =
479+ newRequest (Method .GET , "/builds/{buildId}/sessions.json" ).routeParam ("buildId" , buildId );
480+ } catch (BrowserStackException e ) {
481+ throw e ;
482+ }
483+
484+ httpRequest .queryString (Constants .Filter .LIMIT , totalLimit );
485+ httpRequest .queryString (Constants .Filter .OFFSET , offset );
486+
487+ if (status != null ) {
488+ httpRequest .queryString (Constants .Filter .FILTER , status );
489+ }
490+
491+ final List <SessionNode > sessionNodes ;
492+ try {
493+ sessionNodes = Arrays .asList (httpRequest .asObject (SessionNode [].class ));
494+ } catch (BrowserStackObjectNotFound e ) {
495+ throw new BuildNotFound ("Build not found: " + buildId );
496+ } catch (BrowserStackException e ) {
497+ throw e ;
498+ }
499+ return sessionNodes ;
500+ }
501+
503502 /**
504503 * Retrieves the list of sessions existing under a specific build.
505504 *
0 commit comments