Move endpoints from account config to implementation objects (1/3)

This removes Endpoint from ServiceInformation and moves it to a new
ClientService class, since ServiceInformation is for apps to provide
configuration, and Endpoints are effectively implementation detail. The
new ClientService class is in effect an analoge to ServiceInformation
in the same way as Account is to AccountInformation, and so this is a
better place to store an account's endpoints. Two instances have been
added to Account as `incoming` and `outgoing` properties instead of imap
and SMTP to be a bit more generic and with an eye to supporting other
protocols in the future.

This is possble to implement now non-generic providers are populating
ServiceInformation classes rather than Endpoints directly, and reduces
the complexity of the code needed to manage endpoints since all of the
untrusted_host callback complexity in AccountInformation and the Engine
can be removed, and will also allow simplifing credentials and SMTP
codepaths somewhat.

This work has been broken up in to thee parts to make the changes
clearer.
This commit is contained in:
Michael Gratton 2018-11-18 21:31:35 +11:00 committed by Michael James Gratton
parent ed14156e17
commit e760b074a2
15 changed files with 338 additions and 226 deletions

View file

@ -7,6 +7,7 @@ geary_engine_vala_sources = files(
'api/geary-aggregated-folder-properties.vala',
'api/geary-attachment.vala',
'api/geary-base-object.vala',
'api/geary-client-service.vala',
'api/geary-composed-email.vala',
'api/geary-contact.vala',
'api/geary-contact-flags.vala',