Convert appservice code to async/await. (#8207)
This commit is contained in:
parent
5615eb5cb4
commit
7d103a594e
|
@ -0,0 +1 @@
|
||||||
|
Convert various parts of the codebase to async/await.
|
|
@ -14,18 +14,20 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
import logging
|
import logging
|
||||||
import urllib
|
import urllib
|
||||||
|
from typing import TYPE_CHECKING, Optional
|
||||||
|
|
||||||
from prometheus_client import Counter
|
from prometheus_client import Counter
|
||||||
|
|
||||||
from twisted.internet import defer
|
|
||||||
|
|
||||||
from synapse.api.constants import EventTypes, ThirdPartyEntityKind
|
from synapse.api.constants import EventTypes, ThirdPartyEntityKind
|
||||||
from synapse.api.errors import CodeMessageException
|
from synapse.api.errors import CodeMessageException
|
||||||
from synapse.events.utils import serialize_event
|
from synapse.events.utils import serialize_event
|
||||||
from synapse.http.client import SimpleHttpClient
|
from synapse.http.client import SimpleHttpClient
|
||||||
from synapse.types import ThirdPartyInstanceID
|
from synapse.types import JsonDict, ThirdPartyInstanceID
|
||||||
from synapse.util.caches.response_cache import ResponseCache
|
from synapse.util.caches.response_cache import ResponseCache
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from synapse.appservice import ApplicationService
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
sent_transactions_counter = Counter(
|
sent_transactions_counter = Counter(
|
||||||
|
@ -163,19 +165,20 @@ class ApplicationServiceApi(SimpleHttpClient):
|
||||||
logger.warning("query_3pe to %s threw exception %s", uri, ex)
|
logger.warning("query_3pe to %s threw exception %s", uri, ex)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_3pe_protocol(self, service, protocol):
|
async def get_3pe_protocol(
|
||||||
|
self, service: "ApplicationService", protocol: str
|
||||||
|
) -> Optional[JsonDict]:
|
||||||
if service.url is None:
|
if service.url is None:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
async def _get() -> Optional[JsonDict]:
|
||||||
def _get():
|
|
||||||
uri = "%s%s/thirdparty/protocol/%s" % (
|
uri = "%s%s/thirdparty/protocol/%s" % (
|
||||||
service.url,
|
service.url,
|
||||||
APP_SERVICE_PREFIX,
|
APP_SERVICE_PREFIX,
|
||||||
urllib.parse.quote(protocol),
|
urllib.parse.quote(protocol),
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
info = yield defer.ensureDeferred(self.get_json(uri, {}))
|
info = await self.get_json(uri, {})
|
||||||
|
|
||||||
if not _is_valid_3pe_metadata(info):
|
if not _is_valid_3pe_metadata(info):
|
||||||
logger.warning(
|
logger.warning(
|
||||||
|
@ -196,7 +199,7 @@ class ApplicationServiceApi(SimpleHttpClient):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
key = (service.id, protocol)
|
key = (service.id, protocol)
|
||||||
return self.protocol_meta_cache.wrap(key, _get)
|
return await self.protocol_meta_cache.wrap(key, _get)
|
||||||
|
|
||||||
async def push_bulk(self, service, events, txn_id=None):
|
async def push_bulk(self, service, events, txn_id=None):
|
||||||
if service.url is None:
|
if service.url is None:
|
||||||
|
|
Loading…
Reference in New Issue