/// <summary>
        /// Initializes Mobile core for Android.
        /// </summary>
        /// <param name="app">Xamarin.Forms.Application object</param>
        /// <param name="options">additional initialization options</param>
        public static void Init(Application app, Options options)
        {
            IPlatformInjector platformInjector = DependencyService.Get <IPlatformInjector>();

            platformInjector.ExecutingAssembly = app.GetType().Assembly;
            MobileCore.Init(platformInjector, options);
        }
Exemple #2
0
        private MobileCore(IPlatformInjector injector, Options options)
        {
            Logger = options.Logger ?? injector?.CreateLogger() ?? new NullLogger();

            if (injector != null && options.ConfigFileName != null)
            {
                try
                {
                    using (var stream = injector.GetBundledFileStream(options.ConfigFileName))
                    {
                        mobileConfiguration = MobileCoreConfiguration.Parse(stream);
                    }
                }
                catch (System.Exception e)
                {
                    throw new InitializationException($"{options.ConfigFileName} could not be loaded", e);
                }
            }
            else
            {
                if (options.ConfigJson != null)
                {
                    try
                    {
                        mobileConfiguration = MobileCoreConfiguration.Parse(options.ConfigJson);
                    }
                    catch (System.Exception e)
                    {
                        throw new InitializationException("invalid JSON configuration file", e);
                    }
                }
                else
                {
                    throw new InitializationException("Must provide either filename or JSON configuration in Init() options");
                }
            }
            if (options.HttpServiceModule == null)
            {
                HttpClientHandler httpClientHandler = new HttpClientHandler();
                httpClientHandler.AllowAutoRedirect = options.HttpAllowAutoRedirect;

                HttpClient httpClient = new HttpClient(httpClientHandler);
                httpClient.Timeout = TimeSpan.FromSeconds(DEFAULT_TIMEOUT);
                var httpServiceModule = new SystemNetHttpServiceModule(httpClient);
                var configuration     = GetFirstServiceConfigurationByType(httpServiceModule.Type);
                if (configuration == null)
                {
                    configuration = ServiceConfiguration.Builder.Build();
                }
                httpServiceModule.Configure(this, configuration);
                HttpLayer = httpServiceModule;
            }
            else
            {
                HttpLayer = options.HttpServiceModule;
            }
        }
        private MobileCore(IPlatformInjector injector, Options options)
        {
            Contract.Requires(options != null);
            Logger = options.Logger ?? injector?.CreateLogger() ?? new NullLogger();

            if (injector != null && options.ConfigFileName != null)
            {
                var filename = $"{injector.DefaultResources}.{options.ConfigFileName}";
                try
                {
                    using (var stream = injector.ExecutingAssembly.GetManifestResourceStream(filename))
                    {
                        servicesConfig = MobileCoreJsonParser.Parse(stream);
                    }
                }
                catch (System.Exception e)
                {
                    throw new InitializationException($"{filename} could not be loaded", e);
                }
            }
            else
            {
                if (options.ConfigJson != null)
                {
                    try
                    {
                        MobileCoreJsonParser.Parse(options.ConfigJson);
                    }
                    catch (System.Exception e)
                    {
                        throw new InitializationException("invalid JSON configuration file", e);
                    }
                }
                else
                {
                    throw new InitializationException("Must provide either filename or JSON configuration in Init() options");
                }
            }

            if (options.HttpServiceModule == null)
            {
                HttpClient httpClient = new HttpClient();
                httpClient.Timeout = TimeSpan.FromSeconds(DEFAULT_TIMEOUT);
                var httpServiceModule = new SystemNetHttpServiceModule(httpClient);
                var configuration     = GetServiceConfiguration(httpServiceModule.Type);
                if (configuration == null)
                {
                    configuration = ServiceConfiguration.Builder.Build();
                }
                httpServiceModule.Configure(this, configuration);
                HttpLayer = httpServiceModule;
            }
            else
            {
                HttpLayer = options.HttpServiceModule;
            }
        }
Exemple #4
0
        /// <summary>
        /// Initializes MobileCore with specific options and with platform-specific injector.
        /// </summary>
        /// <param name="injector">platform specific implementation dependency injection module</param>
        /// <param name="options">initialization options</param>
        /// <returns>MobileCore singleton instance</returns>
        public static MobileCore Init(IPlatformInjector injector, Options options)
        {
            if (instance != null)
            {
                return(instance);
            }
            NonNull <Options>(options, "init options");
            instance = new MobileCore(injector, options);

            try
            {
                sendAppAndDeviceMetrics();
            }
            catch (System.Exception e)
            {
                MobileCore.Instance.Logger.Debug(String.Format("Error publishing device metrics: {0}", e.Message));
            }

            return(instance);
        }
Exemple #5
0
 /// <summary>
 /// Initializes MobileCore with defaults and with platform-specific injector.
 /// </summary>
 /// <param name="injector">platform specific implementation dependency injection module</param>
 /// <returns>MobileCore singleton instance</returns>
 public static MobileCore Init(IPlatformInjector injector) => Init(injector, new Options());
 /// <summary>
 /// Initializes MobileCore with specific options and with platform-specific injector.
 /// </summary>
 /// <param name="injector">platform specific implementation dependency injection module</param>
 /// <param name="options">initialization options</param>
 /// <returns>MobileCore singleton instance</returns>
 public static MobileCore Init(IPlatformInjector injector, Options options)
 {
     NonNull <Options>(options, "init options");
     instance = new MobileCore(injector, options);
     return(instance);
 }
 /// <summary>
 /// Initializes MobileCore with specific options and with platform-specific injector.
 /// </summary>
 /// <param name="injector">platform specific implementation dependency injection module</param>
 /// <param name="options">initialization options</param>
 /// <returns>MobileCore singleton instance</returns>
 public static MobileCore Init(IPlatformInjector injector, Options options)
 {
     Contract.Requires(options != null);
     instance = new MobileCore(injector, options);
     return(instance);
 }