@@ -134,11 +134,13 @@ def toJson(self) -> str:
134
134
135
135
class CaptureHttpQueries :
136
136
137
- def __init__ (self , entries = None ):
137
+ def __init__ (self , entries = None , origin = None ):
138
138
if entries is None :
139
139
self ._entries = []
140
140
else :
141
141
self ._entries = entries
142
+ self .origin = origin
143
+ self .mod = 0
142
144
143
145
@classmethod
144
146
def parse (cls , query : str ):
@@ -147,7 +149,7 @@ def parse(cls, query: str):
147
149
else :
148
150
from urllib .parse import parse_qsl
149
151
entries = parse_qsl (query , keep_blank_values = True )
150
- return cls (entries )
152
+ return cls (entries , query )
151
153
152
154
@classmethod
153
155
def of (cls , data ):
@@ -194,17 +196,20 @@ def __setitem__(self, name: str, value: str):
194
196
self ._entries [index ] = (name , value )
195
197
else :
196
198
self ._entries .append ((name , value ))
199
+ self .mod += 1
197
200
198
201
# Add a query paramater with name and value.
199
202
def add (self , name : str , value : str ):
200
203
if not name :
201
204
return
202
205
self ._entries .append ((name , value ))
206
+ self .mod += 1
203
207
204
208
# Remove query paramaters by name, all the matched query paramaters will be removed.
205
209
def remove (self , name : str ):
206
210
for index in reversed (self .indexes (name )):
207
211
self ._entries .pop (index )
212
+ self .mod += 1
208
213
209
214
# Find the first query paramater index by name. If no matched, returns -1.
210
215
def index (self , name : str ) -> int :
@@ -224,11 +229,12 @@ def indexes(self, name: str) -> List[int]:
224
229
# Remove all query paramaters.
225
230
def clear (self ):
226
231
self ._entries .clear ()
232
+ self .mod += 1
227
233
228
234
# Concat all the query paramaters to a query string.
229
235
def concat (self , encode : bool = True ) -> str :
230
236
if encode :
231
- from urllib .parse import urlencode , quote
237
+ from urllib .parse import urlencode
232
238
# Keep asterish to be safe
233
239
return urlencode (self ._entries , safe = '*=' )
234
240
else :
@@ -251,7 +257,7 @@ def toJson(self) -> str:
251
257
return json .dumps (self .toDict ())
252
258
253
259
def serialize (self ) -> str :
254
- return self .concat ()
260
+ return self .origin if self . mod == 0 else self . concat ()
255
261
256
262
class CaptureHttpHeaders :
257
263
0 commit comments