Merge values of multiple headers with same name (#5515)

This commit is contained in:
Mohammadtaher Abbasi 2022-06-11 23:52:21 +04:30
parent ddfd192b70
commit 6a0bcf97cc
1 changed files with 9 additions and 0 deletions

View File

@ -1,6 +1,7 @@
from w3lib.http import headers_dict_to_raw
from scrapy.utils.datatypes import CaselessDict
from scrapy.utils.python import to_unicode
from collections.abc import Mapping
class Headers(CaselessDict):
@ -10,6 +11,13 @@ class Headers(CaselessDict):
self.encoding = encoding
super().__init__(seq)
def update(self, seq):
seq = seq.items() if isinstance(seq, Mapping) else seq
iseq = {}
for k, v in seq:
iseq.setdefault(self.normkey(k), []).extend(self.normvalue(v))
super().update(iseq)
def normkey(self, key):
"""Normalize key to bytes"""
return self._tobytes(key.title())
@ -86,4 +94,5 @@ class Headers(CaselessDict):
def __copy__(self):
return self.__class__(self)
copy = __copy__