diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 44709dd..12ac391 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -29,6 +29,9 @@
"headers_value": {
"message": "Value"
},
+ "headers_pattern": {
+ "message": "URL Pattern"
+ },
"headers_active": {
"message": "Active"
},
diff --git a/manifest.json b/manifest.json
index 5674d0b..1b60df4 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,8 +1,8 @@
{
"manifest_version": 2,
- "name": "Header-Editor",
+ "name": "Header Editor",
"description": "Alter your HTTP request headers on the fly",
- "version": "2.2.0",
+ "version": "2.3.0",
"default_locale": "en",
"options_page": "/src/html/options.html",
diff --git a/src/html/options.html b/src/html/options.html
index 4685dc4..ab1f5a3 100644
--- a/src/html/options.html
+++ b/src/html/options.html
@@ -37,6 +37,7 @@
|
|
|
+ |
|
|
@@ -46,6 +47,7 @@
|
|
|
+ |
|
|
@@ -65,6 +67,7 @@
|
|
|
+ |
|
|
@@ -74,6 +77,7 @@
|
|
|
+ |
|
|
|
diff --git a/src/js/background.js b/src/js/background.js
index 523461f..271ff63 100644
--- a/src/js/background.js
+++ b/src/js/background.js
@@ -1,13 +1,14 @@
(function() {
- var transformHeaders = function(headers) {
+ var transformHeaders = function(headers, details) {
// [ { name: "", value: "" } ]
var list = [];
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
-
- if (header.active) {
+
+ var isMatching = details.url.match(header.pattern);
+ if (header.active && isMatching) {
list.push({
name: header.header,
value: header.value
@@ -36,7 +37,7 @@
var EXTRAS = ["requestHeaders", "blocking"];
var modify = function(details) {
- details.requestHeaders = details.requestHeaders.concat(transformHeaders(getHeaders(/^backbone\.requestHeaders.+$/)));
+ details.requestHeaders = details.requestHeaders.concat(transformHeaders(getHeaders(/^backbone\.requestHeaders.+$/), details));
return { requestHeaders: details.requestHeaders };
};
@@ -50,7 +51,7 @@
var EXTRAS = ["responseHeaders", "blocking"];
var modify = function(details) {
- details.responseHeaders = details.responseHeaders.concat(transformHeaders(getHeaders(/^backbone\.responseHeaders.+$/)));
+ details.responseHeaders = details.responseHeaders.concat(transformHeaders(getHeaders(/^backbone\.responseHeaders.+$/), details));
return { responseHeaders: details.responseHeaders };
};
diff --git a/src/js/common.js b/src/js/common.js
index 79b2eb3..e6de1c7 100644
--- a/src/js/common.js
+++ b/src/js/common.js
@@ -13,6 +13,7 @@ var HeaderSDK = {
description: "",
header: "",
value: "",
+ pattern: ".*",
active: true
};
}
@@ -70,6 +71,15 @@ var HeaderSDK = {
.val(this.model.get("value"))
.addClass("options-header-input"))
.addClass("options-header-cell");
+
+ var $patternCell = $(document.createElement("td"))
+ .append(this.model.get("pattern"))
+ .append($(document.createElement("input"))
+ .attr("type", "text")
+ .attr("name", "pattern")
+ .val(this.model.get("pattern"))
+ .addClass("options-header-input"))
+ .addClass("options-header-cell");
var $activeCell = $(document.createElement("td"))
.append($(document.createElement("input"))
@@ -91,6 +101,7 @@ var HeaderSDK = {
this.$el.append($descriptionCell);
this.$el.append($headerCell);
this.$el.append($valueCell);
+ this.$el.append($patternCell);
this.$el.append($activeCell);
this.$el.append($actionCell);
diff --git a/src/js/options.js b/src/js/options.js
index 868603e..eb9980b 100644
--- a/src/js/options.js
+++ b/src/js/options.js
@@ -48,6 +48,7 @@
this.$createDescription = this.$el.find(".options-headers-create-description");
this.$createHeader = this.$el.find(".options-headers-create-header");
this.$createValue = this.$el.find(".options-headers-create-value");
+ this.$createPattern = this.$el.find(".options-headers-create-pattern");
this.$createActive = this.$el.find(".options-headers-create-active");
this.listenTo(this.headers, "add", this.renderSingle);
@@ -74,12 +75,14 @@
description: this.$createDescription.val(),
header: this.$createHeader.val(),
value: this.$createValue.val(),
+ pattern: this.$createPattern.val(),
active: this.$createActive.is(":checked")
});
this.$createDescription.val("");
this.$createHeader.val("");
this.$createValue.val("");
+ this.$createPattern.val(".*");
this.$createActive.prop("checked", true);
}
});
diff --git a/src/js/upgrade.js b/src/js/upgrade.js
index 1986965..a5f8622 100644
--- a/src/js/upgrade.js
+++ b/src/js/upgrade.js
@@ -119,6 +119,36 @@
}
}
+ // Methods for updating pattern matching
+ function update_2_3_0() {
+ function updateHeaders(headerKeys, headerPrefix) {
+ console.log(headerKeys);
+
+ for (var i = 0; i < headerKeys.length; i++) {
+ var headerKey = headerPrefix + headerKeys[i];
+ var header = JSON.parse(localStorage.getItem(headerKey));
+
+ console.log(headerPrefix, headerKey);
+
+ // Create the new header field if one does not exist
+ header.pattern = header.pattern || ".*";
+
+ localStorage.setItem(headerKey, JSON.stringify(header));
+ }
+ }
+
+ var requestHeaders = localStorage.getItem("backbone.requestHeaders");
+ var responseHeaders = localStorage.getItem("backbone.requestHeaders");
+
+ if (!!requestHeaders) {
+ updateHeaders(requestHeaders.split(","), "backbone.requestHeaders-");
+ }
+
+ if (!!responseHeaders) {
+ updateHeaders(responseHeaders.split(","), "backbone.responseHeaders-");
+ }
+ }
+
chrome.runtime.onInstalled.addListener(function(details) {
var previousVersion = details.previousVersion;
var currentVersion = chrome.app.getDetails().version;
@@ -131,6 +161,10 @@
if (0 > compareVersions(previousVersion, "2.2.0")) {
update_2_2_0();
}
+
+ if (0 > compareVersions(previousVersion, "2.3.0")) {
+ update_2_3_0();
+ }
}
});
})();