Actually query over AS API for 3PE lookup metadata

This commit is contained in:
Paul "LeoNerd" Evans 2016-08-25 15:10:06 +01:00
parent 8e1ed09dff
commit 5474824975
2 changed files with 21 additions and 13 deletions

View File

@ -52,6 +52,13 @@ class ApplicationServiceApi(SimpleHttpClient):
pushing.
"""
PROTOCOL_META = {
# TODO(paul): Declare kinds of metadata in here
"gitter": {
"user_fields": ["username"],
}
}
def __init__(self, hs):
super(ApplicationServiceApi, self).__init__(hs)
self.clock = hs.get_clock()
@ -131,6 +138,19 @@ class ApplicationServiceApi(SimpleHttpClient):
logger.warning("query_3pe to %s threw exception %s", uri, ex)
defer.returnValue([])
@defer.inlineCallbacks
def get_3pe_protocol(self, service, protocol):
# TODO: cache
uri = "%s/thirdparty/protocol/%s" % (service.url, urllib.quote(protocol))
try:
response = yield self.get_json(uri, {})
defer.returnValue(response)
except Exception as ex:
logger.warning("query_3pe_protocol to %s threw exception %s",
uri, ex
)
defer.returnValue({})
@defer.inlineCallbacks
def push_bulk(self, service, events, txn_id=None):
events = self._serialize(events)

View File

@ -37,13 +37,6 @@ def log_failure(failure):
class ApplicationServicesHandler(object):
PROTOCOL_META = {
# TODO(paul): Declare kinds of metadata in here
"gitter": {
"user_fields": ["username"],
}
}
def __init__(self, hs):
self.store = hs.get_datastore()
self.is_mine_id = hs.is_mine_id
@ -195,12 +188,7 @@ class ApplicationServicesHandler(object):
protocols = {}
for s in services:
for p in s.protocols:
if p in self.PROTOCOL_META:
protocols[p] = self.PROTOCOL_META[p]
else:
# We don't know any metadata for it, but we'd best at least
# still declare that we know it exists
protocols[p] = {}
protocols[p] = yield self.appservice_api.get_3pe_protocol(s, p)
self.supported_protocols = protocols
defer.returnValue(protocols)