Skip to content

Commit ddccf19

Browse files
committed
wip
1 parent 2d0042a commit ddccf19

File tree

1 file changed

+37
-33
lines changed

1 file changed

+37
-33
lines changed

buildbot_netauth/__init__.py

+37-33
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from buildbot.www import resource
66
from buildbot.www.avatar import AvatarBase
77
from buildbot.www.auth import UserInfoProviderBase, bytes2unicode
8-
from twisted.internet import defer
8+
from twisted.internet import defer, threads
99
from twisted.cred.error import UnauthorizedLogin
1010

1111
__version__ = "0.0.1"
@@ -34,7 +34,7 @@ def __init__(self, *, conf: Path | None = None, **kwargs):
3434

3535
def requestAvatarId(self, cred):
3636
if self.check_credentials(cred.username, cred.password):
37-
return defer.succeed(f"{cred.username}@netauth")
37+
return defer.succeed(cred.username + b"@netauth")
3838
return defer.fail(UnauthorizedLogin())
3939

4040
def check_credentials(self, username: str, password: str) -> bool:
@@ -51,39 +51,43 @@ def getUserInfo(self, username):
5151
if not username:
5252
return defer.fail(ValueError("username not found"))
5353

54-
try:
55-
entity = self.netauth.entity_info(username)
56-
57-
if entity is None:
58-
return defer.fail(ValueError("entity not found"))
59-
60-
id = entity.id
61-
email = f"{id}@netauth"
62-
if (meta := entity.meta) is not None:
63-
full_name = meta.display_name or meta.legal_name or id
64-
groups = meta.groups or []
65-
else:
66-
full_name = entity.id
67-
groups = []
68-
69-
return defer.succeed(
70-
{
71-
"email": email,
72-
"full_name": full_name,
73-
"groups": groups,
74-
}
75-
)
76-
except netauth.error.NetAuthRpcError as e:
77-
return defer.fail(e)
54+
def thr():
55+
try:
56+
entity = self.netauth.entity_info(username)
57+
58+
if entity is None:
59+
return defer.fail(ValueError("entity not found"))
60+
61+
id = entity.id
62+
email = f"{id}@netauth"
63+
if (meta := entity.meta) is not None:
64+
full_name = meta.display_name or meta.legal_name or id
65+
groups = meta.groups or []
66+
else:
67+
full_name = entity.id
68+
groups = []
69+
70+
return defer.succeed(
71+
{
72+
"email": email,
73+
"full_name": full_name,
74+
"groups": groups,
75+
}
76+
)
77+
except netauth.error.NetAuthRpcError as e:
78+
return defer.fail(e)
79+
return threads.deferToThread(thr)
7880

7981
def getUserAvatar(self, email, username, size, defaultAvatarUrl):
8082
print(repr(email), repr(username), repr(size), repr(defaultAvatarUrl))
8183
username = bytes2unicode(username)
8284
if username and username.endswith("@netauth"):
83-
try:
84-
kv = self.netauth.entity_kv_get(username.removesuffix("@netauth"), "avatar")
85-
avatar = kv.get("avatar")
86-
if avatar:
87-
raise resource.Redirect(avatar[0])
88-
except netauth.error.NetAuthRpcError:
89-
pass
85+
def thr():
86+
try:
87+
kv = self.netauth.entity_kv_get(username.removesuffix("@netauth"), "avatar")
88+
avatar = kv.get("avatar")
89+
if avatar:
90+
raise resource.Redirect(avatar[0])
91+
except netauth.error.NetAuthRpcError:
92+
pass
93+
return threads.deferToThread(thr)

0 commit comments

Comments
 (0)