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