001package com.gigya.android.sdk.containers;
002
003import android.os.Build;
004
005import com.gigya.android.sdk.Config;
006import com.gigya.android.sdk.ConfigFactory;
007import com.gigya.android.sdk.account.IAccountService;
008import com.gigya.android.sdk.account.accountCacheService;
009import com.gigya.android.sdk.api.ApiService;
010import com.gigya.android.sdk.api.BusinessApiService;
011import com.gigya.android.sdk.api.GigyaApiRequestFactory;
012import com.gigya.android.sdk.api.IApiRequestFactory;
013import com.gigya.android.sdk.api.IApiService;
014import com.gigya.android.sdk.api.IBusinessApiService;
015import com.gigya.android.sdk.encryption.ISecureKey;
016import com.gigya.android.sdk.encryption.SessionKey;
017import com.gigya.android.sdk.encryption.SessionKeyLegacy;
018import com.gigya.android.sdk.interruption.IInterruptionResolverFactory;
019import com.gigya.android.sdk.interruption.InterruptionResolverFactory;
020import com.gigya.android.sdk.network.adapter.IRestAdapter;
021import com.gigya.android.sdk.network.adapter.RestAdapter;
022import com.gigya.android.sdk.persistence.IPersistenceService;
023import com.gigya.android.sdk.persistence.PersistenceService;
024import com.gigya.android.sdk.providers.IProviderFactory;
025import com.gigya.android.sdk.providers.ProviderFactory;
026import com.gigya.android.sdk.push.GigyaNotificationManager;
027import com.gigya.android.sdk.push.IGigyaNotificationManager;
028import com.gigya.android.sdk.session.ISessionService;
029import com.gigya.android.sdk.session.ISessionVerificationService;
030import com.gigya.android.sdk.session.SessionService;
031import com.gigya.android.sdk.session.SessionVerificationService;
032import com.gigya.android.sdk.ui.IPresenter;
033import com.gigya.android.sdk.ui.Presenter;
034import com.gigya.android.sdk.ui.plugin.GigyaPluginFragment;
035import com.gigya.android.sdk.ui.plugin.GigyaWebBridge;
036import com.gigya.android.sdk.ui.plugin.IGigyaPluginFragment;
037import com.gigya.android.sdk.ui.plugin.IGigyaWebBridge;
038import com.gigya.android.sdk.ui.plugin.IWebViewFragmentFactory;
039import com.gigya.android.sdk.ui.plugin.WebViewFragmentFactory;
040import com.gigya.android.sdk.utils.FileUtils;
041
042public class GigyaContainer extends IoCContainer {
043    public GigyaContainer() {
044        bind(FileUtils.class, FileUtils.class, true)
045                .bind(Config.class, Config.class, true)
046                .bind(ConfigFactory.class, ConfigFactory.class, false)
047                .bind(IRestAdapter.class, RestAdapter.class, true)
048                .bind(IApiService.class, ApiService.class, false)
049                .bind(IApiRequestFactory.class, GigyaApiRequestFactory.class, true)
050                .bind(ISecureKey.class, Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 ? SessionKey.class
051                        : SessionKeyLegacy.class, true)
052                .bind(IPersistenceService.class, PersistenceService.class, false)
053                .bind(ISessionService.class, SessionService.class, true)
054                .bind(IAccountService.class, accountCacheService.class, true)
055                .bind(ISessionVerificationService.class, SessionVerificationService.class, true)
056                .bind(IProviderFactory.class, ProviderFactory.class, false)
057                .bind(IBusinessApiService.class, BusinessApiService.class, true)
058                .bind(IWebViewFragmentFactory.class, WebViewFragmentFactory.class, false)
059                .bind(IPresenter.class, Presenter.class, false)
060                .bind(IInterruptionResolverFactory.class, InterruptionResolverFactory.class, true)
061                .bind(IGigyaPluginFragment.class, GigyaPluginFragment.class, false)
062                .bind(IGigyaNotificationManager.class, GigyaNotificationManager.class, true)
063                .bind(IGigyaWebBridge.class, GigyaWebBridge.class, false)
064                .bind(IoCContainer.class, this);
065    }
066}