From 6ad7059e9ca52d63d22379a77a0c6e9857dd80b0 Mon Sep 17 00:00:00 2001 From: Chandramouleswaran Ravichandran Date: Sun, 13 Mar 2016 01:18:53 -0800 Subject: [PATCH] Set header per URL pattern --- _locales/en/messages.json | 3 +++ manifest.json | 4 ++-- src/html/options.html | 4 ++++ src/js/background.js | 11 ++++++----- src/js/common.js | 11 +++++++++++ src/js/options.js | 3 +++ src/js/upgrade.js | 34 ++++++++++++++++++++++++++++++++++ 7 files changed, 63 insertions(+), 7 deletions(-) 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(); + } } }); })();