fetch-ckan
Version:
Fetch ckan api like data.gov
96 lines (72 loc) • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fetchRecords = exports.fetchApi = undefined;
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _nodeFetch = require('node-fetch');
var _nodeFetch2 = _interopRequireDefault(_nodeFetch);
var _querystring = require('querystring');
var _querystring2 = _interopRequireDefault(_querystring);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var withoutUndefined = function withoutUndefined(obj) {
var dest = {};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(obj)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var key = _step.value;
var val = obj[key];
if (val !== undefined) {
dest[key] = val;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return dest;
};
// http://docs.ckan.org/en/latest/maintaining/datastore.html
// https://inventory.data.gov/dataset/032e19b4-5a90-41dc-83ff-6e4cd234f565/resource/38625c3d-5388-4c16-a30f-d105432553a4?filters=OPEID%3A100200
var fetchApi = function fetchApi(endpoint, _ref) {
var filters = _ref.filters;
var rest = (0, _objectWithoutProperties3.default)(_ref, ['filters']);
var query = withoutUndefined(rest);
if (filters && (0, _keys2.default)(filters).length) {
query.filters = (0, _stringify2.default)(filters);
}
var qs = _querystring2.default.stringify(query);
return (0, _nodeFetch2.default)(endpoint + '?' + qs).then(function (res) {
return res.json();
});
};
var fetchRecords = function fetchRecords() {
return fetchApi.apply(undefined, arguments).then(function (response) {
return response.success ? response.result.records : [];
});
};
exports.fetchApi = fetchApi;
exports.fetchRecords = fetchRecords;
exports.default = {
fetchApi: fetchApi,
fetchRecords: fetchRecords
};