Skip to content

Commit c4daf73

Browse files
authored
add method run_middlewares (#199)
* fix ci * add method run_middlewares
1 parent e1c71f1 commit c4daf73

File tree

2 files changed

+22
-28
lines changed

2 files changed

+22
-28
lines changed

.github/workflows/tests_and_coverage.yml

+3-7
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,13 @@ jobs:
3030
fetch-depth: 2
3131

3232
- name: List the modified files
33-
run: echo "FILES_MODIFIED=$(git diff --name-only HEAD HEAD^)" >> $GITHUB_ENV
33+
run: echo "FILES_MODIFIED=$(git diff --name-only HEAD HEAD^ | xargs)" >> $GITHUB_ENV
3434
if: ${{ !startsWith(matrix.os, 'windows-') }}
3535

3636
- name: List the modified files (Windows)
37-
shell: cmd
3837
run: |
39-
set "FILES_MODIFIED="
40-
for /f "delims=" %%f in ('git diff --name-only HEAD HEAD^') do (
41-
set "FILES_MODIFIED=%FILES_MODIFIED%;%%f"
42-
)
43-
echo FILES_MODIFIED=%FILES_MODIFIED% >> %GITHUB_ENV%
38+
$FILES_MODIFIED = $(git diff --name-only HEAD HEAD^) -join ' '
39+
echo "FILES_MODIFIED=$FILES_MODIFIED" | Out-File -FilePath $env:GITHUB_ENV
4440
if: ${{ startsWith(matrix.os, 'windows-') }}
4541

4642
- name: Setup Python

tremolo/http_server.py

+19-21
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,19 @@ def connection_lost(self, exc):
6565

6666
self._server['response'] = None
6767

68+
async def run_middlewares(self, name, reverse=False, start=0, step=1):
69+
if reverse:
70+
start = len(self._middlewares[name]) - 1
71+
step = -1
72+
73+
while 0 <= start < len(self._middlewares[name]):
74+
if await self._handle_middleware(
75+
self._middlewares[name][start][1],
76+
self._middlewares[name][start][2]):
77+
return True
78+
79+
start += step
80+
6881
async def _handle_middleware(self, func, kwargs):
6982
options = self.request.context.options
7083
options.update(kwargs)
@@ -175,15 +188,8 @@ async def _handle_response(self, func, kwargs):
175188
else:
176189
self.response.set_header(b'Connection', b'close')
177190

178-
i = len(self._middlewares['response'])
179-
180-
while i > 0:
181-
i -= 1
182-
183-
if await self._handle_middleware(
184-
self._middlewares['response'][i][1],
185-
self._middlewares['response'][i][2]):
186-
return
191+
if await self.run_middlewares('response', reverse=True):
192+
return
187193

188194
if self.request.method == b'HEAD' or no_content:
189195
await self.response.write(None)
@@ -237,15 +243,8 @@ async def _handle_response(self, func, kwargs):
237243
b'Connection', KEEPALIVE_OR_CLOSE[self.request.http_keepalive]
238244
)
239245

240-
i = len(self._middlewares['response'])
241-
242-
while i > 0:
243-
i -= 1
244-
245-
if await self._handle_middleware(
246-
self._middlewares['response'][i][1],
247-
self._middlewares['response'][i][2]):
248-
return
246+
if await self.run_middlewares('response', reverse=True):
247+
return
249248

250249
if self.request.method == b'HEAD' or no_content:
251250
await self.response.write(None)
@@ -269,9 +268,8 @@ async def headers_received(self, response):
269268
if self._middlewares['connect']:
270269
await self.context.ON_CONNECT
271270

272-
for middleware in self._middlewares['request']:
273-
if await self._handle_middleware(middleware[1], middleware[2]):
274-
return
271+
if await self.run_middlewares('request'):
272+
return
275273

276274
if not self.request.is_valid:
277275
# bad request

0 commit comments

Comments
 (0)