1.6 KiB
1.6 KiB
core/datasource
API Integration Guide
Config Structure
ApiConfig— base API config withid(ApiConfig.ID),defaultEnvironment(ApiEnvironment), andenvironmentConfigs(list ofApiEnvironmentConfig)ApiEnvironmentConfig— per-environment settings:environment,baseUrl, andheaders(map of header name toProvider<String>)
Config Management
ApiConfigsManager— DI-available component for accessing configs viagetEnvironmentConfig(id: ApiConfig.ID): ApiEnvironmentConfig- Two implementations:
ProdApiConfigsManager(release) andDevApiConfigsManager(extendsMutableApiConfigsManager, used whenBuildConfig.TESTER_MENU_ENABLED) MutableApiConfigsManagerallows runtime environment switching via Tester Menu without app restart
Adding a New API
- Create
ApiConfigsubclass incom.tangem.datasource.api.common.config— overridedefaultEnvironmentandenvironmentConfigs. DI dependencies can be injected via constructor - Register the new config ID in
ApiConfig.initializeId(...) - Provide the config in
ApiConfigsModuleusing@Provides @IntoSet - Provide the API Retrofit service in
NetworkModule:- Get environment config:
apiConfigsManager.getEnvironmentConfig(id) - Use
environmentConfig.baseUrlfor Retrofit base URL - Apply headers via
OkHttpClient.Builder().applyApiConfig(id, apiConfigsManager)
- Get environment config:
Testing
- Add the new config to
API_CONFIGSlist inProdApiConfigsManagerTest - Add a test model in the
datamethod with expectedApiEnvironmentConfigvalues - If the config has constructor dependencies, mock them and set up behavior in
setup()