UNPKG

2.29 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _url = require('url');
12
13var _url2 = _interopRequireDefault(_url);
14
15var _dotProp = require('dot-prop');
16
17var _dotProp2 = _interopRequireDefault(_dotProp);
18
19var _omniFetch = require('omni-fetch');
20
21var _omniFetch2 = _interopRequireDefault(_omniFetch);
22
23var _qs = require('qs');
24
25var _qs2 = _interopRequireDefault(_qs);
26
27var _utils = require('./utils');
28
29function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
31/**
32 * Take `Object` with `id` and returns the document's metadata
33 *
34 * @param {string} [source="id"] Field to use to fetch documents
35 * @param {string} target
36 * @param {string} [id=data.id] ISTEX Identifier of a document
37 * @param {string} [sid="ezs-istex"] User-agent identifier
38 * @returns {Array<Object>}
39 */
40function ISTEXFetch(data, feed) {
41 if (this.isLast()) {
42 return feed.close();
43 }
44 var source = this.getParam('source', 'id');
45 var target = this.getParam('target');
46 var id = this.getParam('id', _dotProp2.default.get(data, source, data));
47 var sid = this.getParam('sid', 'ezs-istex');
48 var location = {
49 protocol: 'https:',
50 host: 'api.istex.fr'
51 };
52 if (id.length === 40) {
53 location.pathname = '/document/'.concat(id);
54 } else if (id.search(/^ark:/) === 0) {
55 location.pathname = String(id).concat('/record.json');
56 } else {
57 throw new Error('Unexpected id.');
58 }
59 var parameters = {
60 sid: sid
61 };
62 var urlObj = (0, _extends3.default)({}, location, {
63 search: _qs2.default.stringify(parameters)
64 });
65 var urlStr = _url2.default.format(urlObj);
66 (0, _omniFetch2.default)(urlStr).then(function (response) {
67 return response.json();
68 }).then(function (json) {
69 if (json._error) {
70 throw new Error(json._error);
71 }
72 return feed.send((0, _utils.newValue)(json, target, data));
73 }).catch(function (err) {
74 err.url = urlStr;
75 err.input = data;
76 err.target = target;
77 feed.send(err);
78 });
79}
80
81exports.default = {
82 ISTEXFetch: ISTEXFetch
83};
\No newline at end of file