Add AS specific classes with docstrings.
							parent
							
								
									51449e0665
								
							
						
					
					
						commit
						7331d34839
					
				|  | @ -20,11 +20,69 @@ from synapse.api.errors import StoreError | ||||||
| from ._base import SQLBaseStore | from ._base import SQLBaseStore | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | # XXX: This feels like it should belong in a "models" module, not storage. | ||||||
|  | class ApplicationService(object): | ||||||
|  |     """Defines an application service. | ||||||
|  | 
 | ||||||
|  |     Provides methods to check if this service is "interested" in events. | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     def __init__(self, token, url=None, namespaces=None): | ||||||
|  |         self.token = token | ||||||
|  |         if url: | ||||||
|  |             self.url = url | ||||||
|  |         if namespaces: | ||||||
|  |             self.namespaces = namespaces | ||||||
|  | 
 | ||||||
|  |     def is_interested(self, event): | ||||||
|  |         """Check if this service is interested in this event. | ||||||
|  | 
 | ||||||
|  |         Args: | ||||||
|  |             event(Event): The event to check. | ||||||
|  |         Returns: | ||||||
|  |             bool: True if this service would like to know about this event. | ||||||
|  |         """ | ||||||
|  |         # NB: This does not check room alias regex matches because that requires | ||||||
|  |         # more context that an Event can provide. Room alias matches are checked | ||||||
|  |         # in the ApplicationServiceHandler. | ||||||
|  | 
 | ||||||
|  |         # TODO check if event.room_id regex matches | ||||||
|  |         # TODO check if event.user_id regex matches (or m.room.member state_key) | ||||||
|  | 
 | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ApplicationServiceCache(object): | ||||||
|  |     """Caches ApplicationServices and provides utility functions on top. | ||||||
|  | 
 | ||||||
|  |     This class is designed to be invoked on incoming events in order to avoid | ||||||
|  |     hammering the database every time to extract a list of application service | ||||||
|  |     regexes. | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     def __init__(self): | ||||||
|  |         self.services = [] | ||||||
|  | 
 | ||||||
|  |     def get_services_for_event(self, event): | ||||||
|  |         """Retrieve a list of application services interested in this event. | ||||||
|  | 
 | ||||||
|  |         Args: | ||||||
|  |             event(Event): The event to check. | ||||||
|  |         Returns: | ||||||
|  |             list<ApplicationService>: A list of services interested in this | ||||||
|  |             event based on the service regex. | ||||||
|  |         """ | ||||||
|  |         interested_list = [ | ||||||
|  |             s for s in self.services if s.is_event_claimed(event) | ||||||
|  |         ] | ||||||
|  |         return interested_list | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class ApplicationServiceStore(SQLBaseStore): | class ApplicationServiceStore(SQLBaseStore): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, hs): |     def __init__(self, hs): | ||||||
|         super(ApplicationServiceStore, self).__init__(hs) |         super(ApplicationServiceStore, self).__init__(hs) | ||||||
| 
 |         self.cache = ApplicationServiceCache() | ||||||
|         self.clock = hs.get_clock() |         self.clock = hs.get_clock() | ||||||
| 
 | 
 | ||||||
|     @defer.inlineCallbacks |     @defer.inlineCallbacks | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Kegan Dougal
						Kegan Dougal