1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _regenerator = require('babel-runtime/regenerator');
|
8 |
|
9 | var _regenerator2 = _interopRequireDefault(_regenerator);
|
10 |
|
11 | var _extends2 = require('babel-runtime/helpers/extends');
|
12 |
|
13 | var _extends3 = _interopRequireDefault(_extends2);
|
14 |
|
15 | var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
|
16 |
|
17 | var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 | var ISTEXScrollMerge = function () {
|
39 | var _ref = (0, _asyncToGenerator3.default)( _regenerator2.default.mark(function _callee(data, feed) {
|
40 | var query, sid, maxPage, size, scroll, field, fields, output, location, parameters, urlObj, urlStr, response, json, nbPages, prevScrollId, i, _json, nextScrollURI, scrollId, res;
|
41 |
|
42 | return _regenerator2.default.wrap(function _callee$(_context) {
|
43 | while (1) {
|
44 | switch (_context.prev = _context.next) {
|
45 | case 0:
|
46 | if (!this.isLast()) {
|
47 | _context.next = 2;
|
48 | break;
|
49 | }
|
50 |
|
51 | return _context.abrupt('return', feed.close());
|
52 |
|
53 | case 2:
|
54 | query = this.getParam('query') || data.query || '';
|
55 | sid = this.getParam('sid', 'ezs-istex');
|
56 | maxPage = Number(this.getParam('maxPage'));
|
57 | size = Number(this.getParam('size', 2000));
|
58 | scroll = this.getParam('duration', '5m');
|
59 | field = this.getParam('field', ['doi']);
|
60 | fields = Array.isArray(field) ? field : [field];
|
61 | output = 'arkIstex,' + fields.map(function (e) {
|
62 | return (/\w+/.exec(e)[0]
|
63 | );
|
64 | }).join();
|
65 | location = {
|
66 | protocol: 'https:',
|
67 | host: 'api.istex.fr',
|
68 | pathname: '/document/'
|
69 | };
|
70 | parameters = {
|
71 | q: query,
|
72 | scroll: scroll,
|
73 | output: output,
|
74 | size: size,
|
75 | sid: sid
|
76 | };
|
77 | urlObj = (0, _extends3.default)({}, location, {
|
78 | search: _qs2.default.stringify(parameters)
|
79 | });
|
80 | urlStr = _url2.default.format(urlObj);
|
81 | _context.next = 16;
|
82 | return (0, _fetchWithProxy2.default)(urlStr);
|
83 |
|
84 | case 16:
|
85 | response = _context.sent;
|
86 | _context.next = 19;
|
87 | return response.json();
|
88 |
|
89 | case 19:
|
90 | json = _context.sent;
|
91 |
|
92 | if (!(json.total === 0)) {
|
93 | _context.next = 22;
|
94 | break;
|
95 | }
|
96 |
|
97 | return _context.abrupt('return', feed.send(new Error('No result.')));
|
98 |
|
99 | case 22:
|
100 | if (!json._error) {
|
101 | _context.next = 24;
|
102 | break;
|
103 | }
|
104 |
|
105 | return _context.abrupt('return', feed.send(new Error(json._error)));
|
106 |
|
107 | case 24:
|
108 | if (!(json.total === undefined)) {
|
109 | _context.next = 26;
|
110 | break;
|
111 | }
|
112 |
|
113 | return _context.abrupt('return', feed.send(new Error('Unexpected response.')));
|
114 |
|
115 | case 26:
|
116 | nbPages = Math.ceil(json.total / size);
|
117 |
|
118 | if (nbPages > maxPage) {
|
119 | nbPages = maxPage;
|
120 | }
|
121 | if (json.noMoreScrollResults) {
|
122 | nbPages = 1;
|
123 | }
|
124 | prevScrollId = '';
|
125 | i = 0;
|
126 |
|
127 | case 31:
|
128 | if (!(i < nbPages)) {
|
129 | _context.next = 47;
|
130 | break;
|
131 | }
|
132 |
|
133 | _json = json, nextScrollURI = _json.nextScrollURI, scrollId = _json.scrollId;
|
134 |
|
135 | if (process.env.DEBUG) {
|
136 |
|
137 | console.assert(prevScrollId === scrollId, 'New ScrollId: ' + scrollId);
|
138 | prevScrollId = scrollId;
|
139 | }
|
140 | json = (0, _extends3.default)({}, json, data);
|
141 | feed.write(json);
|
142 |
|
143 | if (!json.noMoreScrollResults) {
|
144 | _context.next = 38;
|
145 | break;
|
146 | }
|
147 |
|
148 | return _context.abrupt('break', 47);
|
149 |
|
150 | case 38:
|
151 | _context.next = 40;
|
152 | return (0, _fetchWithProxy2.default)(nextScrollURI);
|
153 |
|
154 | case 40:
|
155 | res = _context.sent;
|
156 | _context.next = 43;
|
157 | return res.json();
|
158 |
|
159 | case 43:
|
160 | json = _context.sent;
|
161 |
|
162 | case 44:
|
163 | i += 1;
|
164 | _context.next = 31;
|
165 | break;
|
166 |
|
167 | case 47:
|
168 |
|
169 | feed.end();
|
170 |
|
171 | case 48:
|
172 | case 'end':
|
173 | return _context.stop();
|
174 | }
|
175 | }
|
176 | }, _callee, this);
|
177 | }));
|
178 |
|
179 | return function ISTEXScrollMerge(_x, _x2) {
|
180 | return _ref.apply(this, arguments);
|
181 | };
|
182 | }();
|
183 |
|
184 |
|
185 | var _url = require('url');
|
186 |
|
187 | var _url2 = _interopRequireDefault(_url);
|
188 |
|
189 | var _qs = require('qs');
|
190 |
|
191 | var _qs2 = _interopRequireDefault(_qs);
|
192 |
|
193 | var _fetchWithProxy = require('fetch-with-proxy');
|
194 |
|
195 | var _fetchWithProxy2 = _interopRequireDefault(_fetchWithProxy);
|
196 |
|
197 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
198 |
|
199 | exports.default = {
|
200 | ISTEXScrollMerge: ISTEXScrollMerge
|
201 | }; |
\ | No newline at end of file |