def _processRequest(self): """ Process the request by sending it to the relevant server. @return: the HTTP response. @rtype: L{Response} """ ssl, host, port, _ignore_path = self.server.details() path = "/" + config.Servers.ConduitName headers = Headers() headers.setHeader("Host", utf8String(host + ":{}".format(port))) if self.streamType: # For attachments we put the base64-encoded JSON data into a header headers.setHeader("Content-Type", self.streamType) headers.addRawHeader("XPOD", base64.b64encode(self.data)) else: headers.setHeader("Content-Type", MimeType("application", "json", params={"charset": "utf-8", })) headers.setHeader("User-Agent", "CalendarServer/{}".format(version)) headers.addRawHeader(*self.server.secretHeader()) from twisted.internet import reactor f = Factory() f.protocol = HTTPClientProtocol ep = GAIEndpoint(reactor, host, port, _configuredClientContextFactory() if ssl else None) proto = (yield ep.connect(f)) request = ClientRequest("POST", path, headers, self.stream if self.stream is not None else self.data) if accountingEnabledForCategory("xPod"): self.loggedRequest = yield self.logRequest(request) response = (yield proto.submitRequest(request)) returnValue(response)
class MailRetriever(service.Service): def __init__(self, store, directory, settings, reactor=None): self.store = store self.settings = settings if reactor is None: from twisted.internet import reactor self.reactor = reactor self.mailReceiver = MailReceiver(store, directory) mailType = settings['Type'] if mailType.lower().startswith('pop'): self.factory = POP3DownloadFactory else: self.factory = IMAP4DownloadFactory contextFactory = None if settings["UseSSL"]: contextFactory = ssl.ClientContextFactory() self.point = GAIEndpoint(self.reactor, settings.Server, settings.Port, contextFactory=contextFactory) def fetchMail(self): return self.point.connect(self.factory(self.settings, self.mailReceiver)) @inlineCallbacks def scheduleNextPoll(self, seconds=None): if seconds is None: seconds = self.settings["PollingSeconds"] yield scheduleNextMailPoll(self.store, seconds)
def _processRequest(self): """ Process the request by sending it to the relevant server. @return: the HTTP response. @rtype: L{Response} """ ssl, host, port, _ignore_path = self.server.details() path = "/" + config.Servers.ConduitName headers = Headers() headers.setHeader("Host", utf8String(host + ":{}".format(port))) if self.streamType: # For attachments we put the base64-encoded JSON data into a header headers.setHeader("Content-Type", self.streamType) headers.addRawHeader("XPOD", base64.b64encode(self.data)) else: headers.setHeader( "Content-Type", MimeType("application", "json", params={ "charset": "utf-8", })) headers.setHeader("User-Agent", "CalendarServer/{}".format(version)) headers.addRawHeader(*self.server.secretHeader()) from twisted.internet import reactor f = Factory() f.protocol = HTTPClientProtocol ep = GAIEndpoint( reactor, host, port, _configuredClientContextFactory(host) if ssl else None) proto = (yield ep.connect(f)) request = ClientRequest( "POST", path, headers, self.stream if self.stream is not None else self.data) if accountingEnabledForCategory("xPod"): self.loggedRequest = yield self.logRequest(request) response = (yield proto.submitRequest(request)) returnValue(response)
class MailRetriever(service.Service): def __init__(self, store, directory, settings, reactor=None): self.store = store self.settings = settings if reactor is None: from twisted.internet import reactor self.reactor = reactor # If we're using our dedicated account on our local server, we're free # to delete all messages that arrive in the inbox so as to not let # cruft build up self.deleteAllMail = shouldDeleteAllMail( config.ServerHostName, settings.Server, settings.Username) self.mailReceiver = MailReceiver(store, directory) mailType = settings['Type'] if mailType.lower().startswith('pop'): self.factory = POP3DownloadFactory else: self.factory = IMAP4DownloadFactory contextFactory = None if settings["UseSSL"]: contextFactory = ssl.ClientContextFactory() self.point = GAIEndpoint( self.reactor, settings.Server, settings.Port, contextFactory=contextFactory) def fetchMail(self): return self.point.connect(self.factory( self.settings, self.mailReceiver, self.deleteAllMail)) @inlineCallbacks def scheduleNextPoll(self, seconds=None): if seconds is None: seconds = self.settings["PollingSeconds"] yield IMIPPollingWork.reschedule(self.store, seconds)
class MailRetriever(service.Service): def __init__(self, store, directory, settings, reactor=None): self.store = store self.settings = settings if reactor is None: from twisted.internet import reactor self.reactor = reactor # If we're using our dedicated account on our local server, we're free # to delete all messages that arrive in the inbox so as to not let # cruft build up self.deleteAllMail = shouldDeleteAllMail(config.ServerHostName, settings.Server, settings.Username) self.mailReceiver = MailReceiver(store, directory) mailType = settings['Type'] if mailType.lower().startswith('pop'): self.factory = POP3DownloadFactory else: self.factory = IMAP4DownloadFactory contextFactory = None if settings["UseSSL"]: contextFactory = ssl.ClientContextFactory() self.point = GAIEndpoint(self.reactor, settings.Server, settings.Port, contextFactory=contextFactory) def fetchMail(self): return self.point.connect( self.factory(self.settings, self.mailReceiver, self.deleteAllMail)) @inlineCallbacks def scheduleNextPoll(self, seconds=None): if seconds is None: seconds = self.settings["PollingSeconds"] yield IMIPPollingWork.reschedule(self.store, seconds)