|
196 | 196 | }); |
197 | 197 | }); |
198 | 198 |
|
199 | | - var Referer = { |
200 | | - referer : null, |
201 | | - |
202 | | - addBeforeSendHeader : function (filter, referer) { |
203 | | - this.removeBeforeSendHeader(filter); |
204 | | - settings.debug && console.info('addBeforeSendHeader', filter, referer); |
205 | | - this.referer = referer; |
206 | | - chrome.webRequest.onBeforeSendHeaders.addListener( |
207 | | - this.setRefererHeader, |
208 | | - { urls: [filter] }, |
209 | | - [ "blocking", "requestHeaders" ] |
210 | | - ); |
| 199 | + var WebRequest = { |
| 200 | + headers : null, |
| 201 | + |
| 202 | + addBeforeSendHeader : function (headers) { |
| 203 | + settings.debug && console.info('addBeforeSendHeader', headers); |
| 204 | + headers.forEach(function (header) { |
| 205 | + header.listener = function (details) { |
| 206 | + settings.debug && console.info('onBeforeSendHeaders', header); |
| 207 | + var requestHeaders = details.requestHeaders; |
| 208 | + requestHeaders = WebRequest.setHTTPHeader(requestHeaders, header.name, header.value); |
| 209 | + return {requestHeaders: requestHeaders}; |
| 210 | + }; |
| 211 | + chrome.webRequest.onBeforeSendHeaders.addListener( |
| 212 | + header.listener, |
| 213 | + { urls: [header.filter] }, |
| 214 | + [ "blocking", "requestHeaders" ] |
| 215 | + ); |
| 216 | + }); |
| 217 | + this.headers = headers; |
211 | 218 | }, |
212 | 219 |
|
213 | | - removeBeforeSendHeader : function (filter) { |
214 | | - settings.debug && console.info('removeBeforeSendHeader', filter, this.referer); |
215 | | - this.referer = null; |
216 | | - chrome.webRequest.onBeforeSendHeaders.removeListener( |
217 | | - this.setRefererHeader, |
218 | | - { urls: [filter] }, |
219 | | - [ "blocking", "requestHeaders" ] |
220 | | - ); |
| 220 | + removeBeforeSendHeader : function () { |
| 221 | + settings.debug && console.info('removeBeforeSendHeader', this.headers); |
| 222 | + if (!this.headers) { |
| 223 | + return; |
| 224 | + } |
| 225 | + this.headers.forEach(function (header) { |
| 226 | + chrome.webRequest.onBeforeSendHeaders.removeListener( |
| 227 | + header.listener, |
| 228 | + { urls: [header.filter] }, |
| 229 | + [ "blocking", "requestHeaders" ] |
| 230 | + ); |
| 231 | + }); |
| 232 | + this.headers = null; |
221 | 233 | }, |
222 | 234 |
|
223 | 235 | setHTTPHeader : function (headers, name, value) { |
|
229 | 241 | } |
230 | 242 | } |
231 | 243 | return overwite ? headers : headers.concat({ name: name, value: value }); |
232 | | - }, |
233 | | - |
234 | | - setRefererHeader : function (details) { |
235 | | - var headers = details.requestHeaders; |
236 | | - if (Referer.referer) { |
237 | | - settings.debug && console.info('Set Referer', Referer.referer); |
238 | | - headers = Referer.setHTTPHeader(headers, 'Referer', Referer.referer); |
239 | | - } |
240 | | - return {requestHeaders: headers}; |
241 | 244 | } |
242 | 245 | }; |
243 | 246 |
|
244 | 247 | TBRL.setRequestHandler('addBeforeSendHeader', function (req, sender, func) { |
245 | | - Referer.addBeforeSendHeader(req.filter, req.referer); |
| 248 | + WebRequest.addBeforeSendHeader(req.headers); |
246 | 249 | func(); |
247 | 250 | }); |
248 | 251 | TBRL.setRequestHandler('removeBeforeSendHeader', function (req, sender, func) { |
249 | | - Referer.removeBeforeSendHeader(req.filter); |
| 252 | + WebRequest.removeBeforeSendHeader(); |
250 | 253 | func(); |
251 | 254 | }); |
252 | 255 | return; |
|
311 | 314 | this.lastPageDoc = null; |
312 | 315 | this.images = []; |
313 | 316 |
|
314 | | - if (this.siteinfo.needReferer) { |
| 317 | + if (this.siteinfo.options.needReferer) { |
315 | 318 | chrome.runtime.sendMessage(TBRL.id, { |
316 | | - request : "addBeforeSendHeader", |
317 | | - filter : this.siteinfo.needReferer, |
318 | | - referer : this.siteinfo.url |
| 319 | + request : "addBeforeSendHeader", |
| 320 | + headers : [{ |
| 321 | + filter : this.siteinfo.options.needReferer, |
| 322 | + name : 'Referer', |
| 323 | + value : this.siteinfo.url |
| 324 | + }] |
319 | 325 | }, function () { |
320 | 326 | self.requestNextPage(); |
321 | 327 | self.eventListener = eventListener; |
|
329 | 335 | } |
330 | 336 | }, |
331 | 337 | stop: function () { |
332 | | - if (this.siteinfo.needReferer) { |
| 338 | + if (this.siteinfo.options.needReferer) { |
333 | 339 | window.removeEventListener('beforeunload', this.removeFilter, false); |
334 | 340 | this.removeFilter(); |
335 | 341 | } |
|
345 | 351 | }, |
346 | 352 | removeFilter: function () { |
347 | 353 | chrome.runtime.sendMessage(TBRL.id, { |
348 | | - request : "removeBeforeSendHeader", |
349 | | - filter : iviewLoader.siteinfo.needReferer |
| 354 | + request : "removeBeforeSendHeader" |
350 | 355 | }, function () {}); |
351 | 356 | }, |
352 | 357 |
|
|
477 | 482 | for (var k in siteinfo) { |
478 | 483 | var xpath = siteinfo[k]; |
479 | 484 |
|
480 | | - if (k.match(/^url|needReferer|paragraph|nextLink|cdata$/)) { |
| 485 | + if (k.match(/^url|paragraph|nextLink|cdata|options$/)) { |
481 | 486 | continue; |
482 | 487 | } |
483 | 488 |
|
|
587 | 592 | }; |
588 | 593 |
|
589 | 594 | var ext; |
590 | | - if (iviewLoader.siteinfo.needReferer) { |
| 595 | + if (iviewLoader.siteinfo.options.needReferer) { |
591 | 596 | ext = Extractors['Photo - Upload from Cache']; |
592 | 597 | } |
593 | 598 | else { |
|
0 commit comments