From 99744cc780a5100ac028bbbf43e8a42e1167047e Mon Sep 17 00:00:00 2001 From: arjun23496 Date: Mon, 29 Aug 2016 16:50:14 +0530 Subject: Added replace for request and headers - Fixed missing replace option --- netlib/http/headers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'netlib/http/headers.py') diff --git a/netlib/http/headers.py b/netlib/http/headers.py index 36e5060c..60a36515 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -158,7 +158,7 @@ class Headers(multidict.MultiDict): else: return super(Headers, self).items() - def replace(self, pattern, repl, flags=0): + def replace(self, pattern, repl, flags=0, count=0): """ Replaces a regular expression pattern with repl in each "name: value" header line. @@ -175,7 +175,7 @@ class Headers(multidict.MultiDict): fields = [] for name, value in self.fields: - line, n = pattern.subn(repl, name + b": " + value) + line, n = pattern.subn(repl, name + b": " + value, count=count) try: name, value = line.split(b": ", 1) except ValueError: @@ -183,6 +183,7 @@ class Headers(multidict.MultiDict): # There's not much we can do about this, so we just keep the header as-is. pass else: + count -= n replacements += n fields.append((name, value)) self.fields = tuple(fields) -- cgit v1.2.3 From d2cfa5ca41c0d8b55000cc4c9fca924c28dfc14a Mon Sep 17 00:00:00 2001 From: arjun23496 Date: Wed, 31 Aug 2016 10:23:33 +0530 Subject: Added tests for replace in request,message,header --- netlib/http/headers.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'netlib/http/headers.py') diff --git a/netlib/http/headers.py b/netlib/http/headers.py index 60a36515..f4cf8b7b 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -185,6 +185,8 @@ class Headers(multidict.MultiDict): else: count -= n replacements += n + if count == 0: + break; fields.append((name, value)) self.fields = tuple(fields) return replacements -- cgit v1.2.3 From dd2e0d1df3eeb934c291dd6197f722e419dd3e43 Mon Sep 17 00:00:00 2001 From: arjun23496 Date: Wed, 31 Aug 2016 16:11:59 +0530 Subject: minor bug fix header replace --- netlib/http/headers.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'netlib/http/headers.py') diff --git a/netlib/http/headers.py b/netlib/http/headers.py index f4cf8b7b..5f724f6d 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -172,6 +172,7 @@ class Headers(multidict.MultiDict): repl = strutils.escaped_str_to_bytes(repl) pattern = re.compile(pattern, flags) replacements = 0 + flag_count = count > 0 fields = [] for name, value in self.fields: @@ -183,10 +184,13 @@ class Headers(multidict.MultiDict): # There's not much we can do about this, so we just keep the header as-is. pass else: - count -= n replacements += n - if count == 0: - break; + + if flag_count: + count -= n + if count == 0: + break; + fields.append((name, value)) self.fields = tuple(fields) return replacements -- cgit v1.2.3 From e5766550f1576a02facb95b452e4a52271780b63 Mon Sep 17 00:00:00 2001 From: arjun23496 Date: Wed, 31 Aug 2016 16:22:20 +0530 Subject: Lint fix - netlib headers --- netlib/http/headers.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'netlib/http/headers.py') diff --git a/netlib/http/headers.py b/netlib/http/headers.py index 5f724f6d..6afe27c7 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -173,8 +173,8 @@ class Headers(multidict.MultiDict): pattern = re.compile(pattern, flags) replacements = 0 flag_count = count > 0 - fields = [] + for name, value in self.fields: line, n = pattern.subn(repl, name + b": " + value, count=count) try: @@ -185,12 +185,10 @@ class Headers(multidict.MultiDict): pass else: replacements += n - if flag_count: count -= n if count == 0: - break; - + break fields.append((name, value)) self.fields = tuple(fields) return replacements -- cgit v1.2.3 From a8deed1f4ef5992b1c9c74ac69491bdb5f0e8490 Mon Sep 17 00:00:00 2001 From: arjun23496 Date: Wed, 31 Aug 2016 16:39:04 +0530 Subject: Lint fix - minor --- netlib/http/headers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'netlib/http/headers.py') diff --git a/netlib/http/headers.py b/netlib/http/headers.py index 6afe27c7..131e8ce5 100644 --- a/netlib/http/headers.py +++ b/netlib/http/headers.py @@ -174,7 +174,6 @@ class Headers(multidict.MultiDict): replacements = 0 flag_count = count > 0 fields = [] - for name, value in self.fields: line, n = pattern.subn(repl, name + b": " + value, count=count) try: @@ -188,7 +187,7 @@ class Headers(multidict.MultiDict): if flag_count: count -= n if count == 0: - break + break fields.append((name, value)) self.fields = tuple(fields) return replacements -- cgit v1.2.3