Skip to content

Commit 8d9f263

Browse files
committed
Keep request query if no modify happens
1 parent 879f082 commit 8d9f263

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

reqable/reqable.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,13 @@ def toJson(self) -> str:
134134

135135
class CaptureHttpQueries:
136136

137-
def __init__(self, entries = None):
137+
def __init__(self, entries = None, origin = None):
138138
if entries is None:
139139
self._entries = []
140140
else:
141141
self._entries = entries
142+
self.origin = origin
143+
self.mod = 0
142144

143145
@classmethod
144146
def parse(cls, query: str):
@@ -147,7 +149,7 @@ def parse(cls, query: str):
147149
else:
148150
from urllib.parse import parse_qsl
149151
entries = parse_qsl(query, keep_blank_values = True)
150-
return cls(entries)
152+
return cls(entries, query)
151153

152154
@classmethod
153155
def of(cls, data):
@@ -194,17 +196,20 @@ def __setitem__(self, name: str, value: str):
194196
self._entries[index] = (name, value)
195197
else:
196198
self._entries.append((name, value))
199+
self.mod += 1
197200

198201
# Add a query paramater with name and value.
199202
def add(self, name: str, value: str):
200203
if not name:
201204
return
202205
self._entries.append((name, value))
206+
self.mod += 1
203207

204208
# Remove query paramaters by name, all the matched query paramaters will be removed.
205209
def remove(self, name: str):
206210
for index in reversed(self.indexes(name)):
207211
self._entries.pop(index)
212+
self.mod += 1
208213

209214
# Find the first query paramater index by name. If no matched, returns -1.
210215
def index(self, name: str) -> int:
@@ -224,11 +229,12 @@ def indexes(self, name: str) -> List[int]:
224229
# Remove all query paramaters.
225230
def clear(self):
226231
self._entries.clear()
232+
self.mod += 1
227233

228234
# Concat all the query paramaters to a query string.
229235
def concat(self, encode: bool = True) -> str:
230236
if encode:
231-
from urllib.parse import urlencode, quote
237+
from urllib.parse import urlencode
232238
# Keep asterish to be safe
233239
return urlencode(self._entries, safe='*=')
234240
else:
@@ -251,7 +257,7 @@ def toJson(self) -> str:
251257
return json.dumps(self.toDict())
252258

253259
def serialize(self) -> str:
254-
return self.concat()
260+
return self.origin if self.mod == 0 else self.concat()
255261

256262
class CaptureHttpHeaders:
257263

0 commit comments

Comments
 (0)