Skip to content

Commit 4eb7761

Browse files
committed
Add toDict and toJson for queries and headers
1 parent 844ec26 commit 4eb7761

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

reqable/reqable.py

+24-1
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,20 @@ def concat(self, encode: bool = True) -> str:
189189

190190
# Get all query paramaters.
191191
@property
192-
def entries(self) -> List[Tuple[str, str]]:
192+
def entries(self) -> List[str]:
193193
return self._entries
194194

195+
# Convert the query paramaters to a dict.
196+
def toDict(self) -> Dict[str, str]:
197+
map = {}
198+
for entry in self.entries:
199+
map[entry[0]] = entry[1]
200+
return map
201+
202+
# Convert the query paramaters to a json str.
203+
def toJson(self) -> str:
204+
return json.dumps(self.toDict())
205+
195206
def serialize(self) -> str:
196207
return self.concat()
197208

@@ -285,6 +296,18 @@ def clear(self):
285296
def entries(self) -> List[str]:
286297
return self._entries
287298

299+
# Convert the headers to a dict.
300+
def toDict(self) -> Dict[str, str]:
301+
map = {}
302+
for entry in self.entries:
303+
name, value = entry.split(': ')
304+
map[name] = value
305+
return map
306+
307+
# Convert the headers to a json str.
308+
def toJson(self) -> str:
309+
return json.dumps(self.toDict())
310+
288311
def serialize(self) -> List[str]:
289312
return self._entries
290313

test/reqable_header_test.py

+12
Original file line numberDiff line numberDiff line change
@@ -175,5 +175,17 @@ def testHttpHeadersCasesensive(self):
175175
self.assertEqual(headers['abc'], '123')
176176
self.assertEqual(headers['hello'], 'WORLD')
177177

178+
def testHttpHeadersDict(self):
179+
headers = CaptureHttpHeaders([
180+
'foo: bar',
181+
'abc: 123',
182+
'hello: world',
183+
'hello: '
184+
])
185+
d = headers.toDict()
186+
self.assertEqual(d['foo'], 'bar')
187+
self.assertEqual(d['abc'], '123')
188+
self.assertEqual(d['hello'], '')
189+
178190
if __name__ == '__main__':
179191
unittest.main()

test/reqable_query_test.py

+7
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,12 @@ def testHttpQueriesConcat(self):
137137
self.assertEqual(queries.concat(encode=True), 'foo=bar&abc=123&url=https%3A%2F%2Freqable.com')
138138
self.assertEqual(queries.concat(encode=False), 'foo=bar&abc=123&url=https://reqable.com')
139139

140+
def testHttpQueriesDict(self):
141+
queries = CaptureHttpQueries.parse('foo=bar&abc=123&hello=world&hello=')
142+
d = queries.toDict()
143+
self.assertEqual(d['foo'], 'bar')
144+
self.assertEqual(d['abc'], '123')
145+
self.assertEqual(d['hello'], '')
146+
140147
if __name__ == '__main__':
141148
unittest.main()

0 commit comments

Comments
 (0)