Блин, для меня это пока слишком сложный пример, может кто-то может объяснить доступней?
Для работы с любыми внешними сервисами предлагаю такой вариант:
1) За работу с каким-то сервером выделяется отдельный класс - ApiClient
2) Методы внутри него имеют доступ к Data Layer (используют модели на основе Json, например)
3) Каждый метод делает только одно действие с внешним API
4) ApiClient сам НЕ занимается тем, что реализует логику авторизации
5) ApiClient сам НЕ создаёт HttpClient
6) ApiClient получает все необходимые дополнительные сервисы в конструкторе при создании. Те он работает с уже готовыми HttpClient, которые в него прокинули.
7) В ApiClient стоит использовать один HttpClient на 1 сервер API. Если используется несколько серверов, куда есть доступ, лучше использовать по одной инстансе HttpClient на каждый сервис.