@@ -3,6 +3,7 @@ var async = require('async');
33var superagent = require ( 'superagent' ) ;
44var debug = require ( 'debug' ) ( 'strider-gitlab:api' ) ;
55var util = require ( 'util' ) ;
6+ var parseLinkHeader = require ( 'parse-link-header' ) ;
67
78module . exports = {
89 get : get ,
@@ -53,7 +54,44 @@ function get(config, uri, done) {
5354 if ( ! res . body ) {
5455 return done ( undefined , res . body , res ) ;
5556 }
56- done ( null , res . body , res ) ;
57+
58+ var results = res . body ;
59+
60+ if ( res . headers . link ) {
61+ var numberOfPages = parseLinkHeader ( res . headers . link ) . last . page ;
62+ var i = 1 ;
63+
64+ async . whilst (
65+ function ( ) {
66+ return i < numberOfPages ;
67+ } ,
68+ function ( callback ) {
69+ superagent
70+ . get ( url )
71+ . query ( {
72+ private_token : config . api_key ,
73+ per_page : 100 ,
74+ page : i
75+ } )
76+ . set ( 'User-Agent' , 'StriderCD (http://stridercd.com)' )
77+ . end ( function ( err , res ) {
78+ if ( err ) return callback ( err ) ;
79+
80+ results = results . concat ( res . body ) ;
81+ callback ( null , i ) ;
82+ } ) ;
83+
84+ i ++ ;
85+ } ,
86+ function ( err , n ) {
87+ if ( err ) return done ( err ) ;
88+
89+ return done ( null , results , res ) ;
90+ }
91+ ) ;
92+ } else {
93+ return done ( null , results , res ) ;
94+ }
5795 } ) ;
5896}
5997
0 commit comments