﻿namespace Stove.StoveSDK
{
    using System;
    using System.Collections.Generic;
    using UnityEngine;

    public class Constants
    {
        public static string Get(string key)
        {
            Debug.Log("Constants.Get" + "(" + key + ")");

            string value = BaseInterface.Get(key);

            Debug.Log("Constants.Get return : " + value);

            return value;
        }

        public static void Initialize(string environment, Action<Result> action)
        {
            Debug.Log("Constants.Initialize Action(" + action + ")");
            string identifier = StoveSDK.Instance.AddAction(payload =>
            {
                Result result = new Result(payload["result"] as Dictionary<string, object>);
                Debug.Log("Constants.Initialize Result(" + result + ")");
                action.Invoke(result);
            });
            BaseInterface.Initialize(environment, identifier);
        }

        /**
        * Base Version
        * @since 2.3.0
        */
        public static string GetVersion()
        {
            Debug.Log("GetVersion");

            string version = BaseInterface.GetVersion();

            Debug.Log("GetVersion return : " + version);

            return version;
        }

        /**
        * Set BuildConfiguration (PackageName, Version, Environment)
        * @since 2.4.0
        */
        public static void SetBuildConfiguration(BuildConfiguration buildConfiguration)
        {
            Debug.Log("SetBuildConfiguration");

            BaseInterface.SetBuildConfiguration(buildConfiguration.ToJSONString());

            Debug.Log("BuildConfiguration set : " + buildConfiguration.ToJSONString());
        }

        public static bool Get(string key, bool defaultValue)
        {
            Debug.Log("Constants.Get" + "(" + key + ")");

            bool value = BaseInterface.Get(key, defaultValue);

            Debug.Log("Constants.Get return : " + value);

            return value;
        }
    }
}