mapbox
Version:
interface to mapbox services
40 lines (32 loc) • 1.12 kB
JavaScript
;
// install ES6 Promise polyfill
require('./promise');
var interceptor = require('rest/interceptor');
var linkParser = require('rest/parsers/rfc5988');
var url = require('url');
var querystring = require('querystring');
var paginator = interceptor({
success: function (response, config) {
var link = response && response.headers && response.headers.Link;
var client = response && response.request && response.request.originator;
if (link) {
var nextLink = linkParser.parse(link).filter(function (link) {
return link.rel === 'next';
})[0];
if (nextLink) {
response.nextPage = function (callback) {
var linkParts = url.parse(nextLink.href);
var linkQuery = querystring.parse(linkParts.query);
linkQuery.access_token = linkQuery.access_token || config.access_token;
linkParts.search = querystring.stringify(linkQuery);
return client({
path: url.format(linkParts),
callback: callback
});
};
}
}
return response;
}
});
module.exports = paginator;