Skip to content

Commit ad5c6a8

Browse files
committed
Revise addBeforeSendHeader for generic uses
- and move needReferer to under options
1 parent 99dbd29 commit ad5c6a8

File tree

1 file changed

+45
-40
lines changed

1 file changed

+45
-40
lines changed

iview.for.taberareloo.tbrl.js

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -196,28 +196,40 @@
196196
});
197197
});
198198

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;
211218
},
212219

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;
221233
},
222234

223235
setHTTPHeader : function (headers, name, value) {
@@ -229,24 +241,15 @@
229241
}
230242
}
231243
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};
241244
}
242245
};
243246

244247
TBRL.setRequestHandler('addBeforeSendHeader', function (req, sender, func) {
245-
Referer.addBeforeSendHeader(req.filter, req.referer);
248+
WebRequest.addBeforeSendHeader(req.headers);
246249
func();
247250
});
248251
TBRL.setRequestHandler('removeBeforeSendHeader', function (req, sender, func) {
249-
Referer.removeBeforeSendHeader(req.filter);
252+
WebRequest.removeBeforeSendHeader();
250253
func();
251254
});
252255
return;
@@ -311,11 +314,14 @@
311314
this.lastPageDoc = null;
312315
this.images = [];
313316

314-
if (this.siteinfo.needReferer) {
317+
if (this.siteinfo.options.needReferer) {
315318
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+
}]
319325
}, function () {
320326
self.requestNextPage();
321327
self.eventListener = eventListener;
@@ -329,7 +335,7 @@
329335
}
330336
},
331337
stop: function () {
332-
if (this.siteinfo.needReferer) {
338+
if (this.siteinfo.options.needReferer) {
333339
window.removeEventListener('beforeunload', this.removeFilter, false);
334340
this.removeFilter();
335341
}
@@ -345,8 +351,7 @@
345351
},
346352
removeFilter: function () {
347353
chrome.runtime.sendMessage(TBRL.id, {
348-
request : "removeBeforeSendHeader",
349-
filter : iviewLoader.siteinfo.needReferer
354+
request : "removeBeforeSendHeader"
350355
}, function () {});
351356
},
352357

@@ -477,7 +482,7 @@
477482
for (var k in siteinfo) {
478483
var xpath = siteinfo[k];
479484

480-
if (k.match(/^url|needReferer|paragraph|nextLink|cdata$/)) {
485+
if (k.match(/^url|paragraph|nextLink|cdata|options$/)) {
481486
continue;
482487
}
483488

@@ -587,7 +592,7 @@
587592
};
588593

589594
var ext;
590-
if (iviewLoader.siteinfo.needReferer) {
595+
if (iviewLoader.siteinfo.options.needReferer) {
591596
ext = Extractors['Photo - Upload from Cache'];
592597
}
593598
else {

0 commit comments

Comments
 (0)