using Adplay.Utility;
using System;
using System.Collections.Generic;
using UnityEngine;

namespace Adplay.Config
{
    [CreateAssetMenu(fileName = nameof(ApiConfigData), menuName = PathUtility.ConfigPath + nameof(ApiConfigData))]
    public class ApiConfigData : ScriptableObject
    {
#if UNITY_EDITOR
        [SerializeField] private RouteType routeType;
#endif
        [TextArea][SerializeField] private string apiToken;
        private const string BaseUrl = "https://addata.ir/";
        private const string LocalUrl = "http://127.0.0.1:3000/";

        public Dictionary<string, string> GetHeaders()
        {
            var result = new Dictionary<string, string>//default headers
            {
                { "Content-Type", "application/json" },
                { "Accept", "application/json" },
            };

            if (!string.IsNullOrEmpty(apiToken))//unique token for each app
            {
                result.Add("Authorization", "Token " + apiToken.Trim());
            }

            return result;
        }

        public bool HasApiToken() => !string.IsNullOrEmpty(apiToken);

        public string GetEndPoint(string route)
        {
#if UNITY_EDITOR
            string baseRoute = routeType == RouteType.Publish ? BaseUrl : LocalUrl;
            var endPoint = new Uri(new Uri(baseRoute.TrimEnd('/') + "/"), route.TrimStart('/')).ToString();
#else
            var endPoint = new Uri(new Uri(BaseUrl.TrimEnd('/') + "/"), route.TrimStart('/')).ToString();
#endif
#if UNITY_EDITOR
            Debug.Log($"End point: {endPoint}");
#endif
            return endPoint;
        }


        private enum RouteType
        {
            Develop,
            Publish
        }

    }

}
