Skip to content
Snippets Groups Projects
Unverified Commit 7d103a59 authored by Patrick Cloke's avatar Patrick Cloke Committed by GitHub
Browse files

Convert appservice code to async/await. (#8207)

parent 5615eb5c
No related branches found
No related tags found
No related merge requests found
Convert various parts of the codebase to async/await.
...@@ -14,18 +14,20 @@ ...@@ -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): ...@@ -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): ...@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment