Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
synapse
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maunium
synapse
Commits
53f7b49f
Unverified
Commit
53f7b49f
authored
4 years ago
by
Patrick Cloke
Committed by
GitHub
4 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Do not convert async functions to Deferreds in the interactive_auth_handler (#7944)
parent
5ea29d7f
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
changelog.d/7944.misc
+1
-0
1 addition, 0 deletions
changelog.d/7944.misc
synapse/rest/client/v2_alpha/_base.py
+21
-26
21 additions, 26 deletions
synapse/rest/client/v2_alpha/_base.py
with
22 additions
and
26 deletions
changelog.d/7944.misc
0 → 100644
+
1
−
0
View file @
53f7b49f
Convert the interactive_auth_handler wrapper to async/await.
This diff is collapsed.
Click to expand it.
synapse/rest/client/v2_alpha/_base.py
+
21
−
26
View file @
53f7b49f
...
...
@@ -17,8 +17,7 @@
"""
import
logging
import
re
from
twisted.internet
import
defer
from
typing
import
Iterable
,
Pattern
from
synapse.api.errors
import
InteractiveAuthIncompleteError
from
synapse.api.urls
import
CLIENT_API_PREFIX
...
...
@@ -27,15 +26,23 @@ from synapse.types import JsonDict
logger
=
logging
.
getLogger
(
__name__
)
def
client_patterns
(
path_regex
,
releases
=
(
0
,),
unstable
=
True
,
v1
=
False
):
def
client_patterns
(
path_regex
:
str
,
releases
:
Iterable
[
int
]
=
(
0
,),
unstable
:
bool
=
True
,
v1
:
bool
=
False
,
)
->
Iterable
[
Pattern
]:
"""
Creates a regex compiled client path with the correct client path
prefix.
Args:
path_regex
(str)
: The regex string to match. This should NOT have a ^
path_regex: The regex string to match. This should NOT have a ^
as this will be prefixed.
releases: An iterable of releases to include this endpoint under.
unstable: If true, include this endpoint under the
"
unstable
"
prefix.
v1: If true, include this endpoint under the
"
api/v1
"
prefix.
Returns:
SRE_P
attern
An iterable of p
attern
s.
"""
patterns
=
[]
...
...
@@ -73,34 +80,22 @@ def set_timeline_upper_limit(filter_json: JsonDict, filter_timeline_limit: int)
def
interactive_auth_handler
(
orig
):
"""
Wraps an on_POST method to handle InteractiveAuthIncompleteErrors
Takes a on_POST method which returns a
deferred
(errcode, body) response
Takes a on_POST method which returns a
n Awaitable
(errcode, body) response
and adds exception handling to turn a InteractiveAuthIncompleteError into
a 401 response.
Normal usage is:
@interactive_auth_handler
@defer.inlineCallbacks
def on_POST(self, request):
async def on_POST(self, request):
# ...
yield
self.auth_handler.check_auth
"""
await
self.auth_handler.check_auth
"""
def
wrapped
(
*
args
,
**
kwargs
):
res
=
defer
.
ensureDeferred
(
orig
(
*
args
,
**
kwargs
))
res
.
addErrback
(
_catch_incomplete_interactive_auth
)
return
res
async
def
wrapped
(
*
args
,
**
kwargs
):
try
:
return
await
orig
(
*
args
,
**
kwargs
)
except
InteractiveAuthIncompleteError
as
e
:
return
401
,
e
.
result
return
wrapped
def
_catch_incomplete_interactive_auth
(
f
):
"""
helper for interactive_auth_handler
Catches InteractiveAuthIncompleteErrors and turns them into 401 responses
Args:
f (failure.Failure):
"""
f
.
trap
(
InteractiveAuthIncompleteError
)
return
401
,
f
.
value
.
result
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment