public async Task <AppConfigData> GetAppConfigData()
        {
            if (DateTime.UtcNow > AppConstants.TimeToLiveExpiration || String.IsNullOrEmpty(AppConstants.ClientConfigurationVersion))
            {
                // get Amazon.AppConfig.Model.GetConfigurationResponse from GetConfiguration API Call
                GetConfigurationResponse getConfigurationResponse = await _appConfigService.GetConfigurationResponse();

                AppConstants.ClientConfigurationVersion = getConfigurationResponse.ConfigurationVersion;

                string decodedResponseData = getConfigurationResponse.Content.Length > 0 ? getConfigurationResponse.Content.DecodeMemoryStreamToString() : String.Empty;

                // convert DecodedResponseData to our AppConfigData model which consists of:
                AppConfigData appConfigData = String.IsNullOrEmpty(decodedResponseData) ? AppConstants.AppConfigData : JsonConvert.DeserializeObject <AppConfigData>(decodedResponseData);

                //AppConfigData appConfigData = JsonConvert.DeserializeObject<AppConfigData>(decodedResponseData);

                if (!appConfigData.BoolEnableLimitResults && appConfigData.IntResultLimit == 0)
                {
                    throw new Exception();
                }

                // add AppConfigData to our cache in AppConstants
                AppConstants.AppConfigData = appConfigData;

                return(AppConstants.AppConfigData);
            }
            else
            {
                Console.WriteLine("DID NOT call GetConfigurationAPI to get data.  Return AppConfigData from cached value in AppConstants.AppConfigData instead. \n");
                return(AppConstants.AppConfigData);
            }
        }
예제 #2
0
    private void SaveEnvironmentSelection(int appID, string appPhotonID, AppConfig.Environment environment, string deviceId)
    {
        AppConfigData newAppConfigData = new AppConfigData();

        newAppConfigData.appID              = appID;
        newAppConfigData.appPhotonID        = appPhotonID;
        newAppConfigData.currentEnvironment = environment;
        newAppConfigData.debugDeviceId      = deviceId;
        AppConfigHelper.SaveAppConfigData(newAppConfigData);
    }
예제 #3
0
    public static AppConfigData LoadAppConfigDataFromTextAsset(TextAsset textAsset)
    {
        AppConfigData appConfigData = null;

        string appConfigDataJson = textAsset.text;

        if (!string.IsNullOrEmpty(appConfigDataJson))
        {
            appConfigData = TimiSharedSerializer.Deserialize <AppConfigData>(appConfigDataJson);
        }

        return(appConfigData);
    }
예제 #4
0
    public static void SaveAppConfigData(AppConfigData appConfigData)
    {
        if (!Application.isEditor)
        {
            throw new NotImplementedException("Not yet supported to edit app config on device");
        }

        string appConfigDataJson = TimiSharedSerializer.Serialize(appConfigData);

        if (!string.IsNullOrEmpty(appConfigDataJson))
        {
            TimiSharedURI appConfigFileUri = AppConfigHelper.AppConfigFileURI;
            using (Stream appConfigFileStream = FileLoader.GetFileStreamSync(appConfigFileUri, FileMode.Create, FileAccess.Write)) {
                FileUtils.PutStreamContents(appConfigFileStream, appConfigDataJson);
                appConfigFileStream.Close();
            }
        }
    }
        public async Task <AppConfigData> GetAppConfigData()
        {
            // In general, we should limit the calls to GetConfiguration API call to at least once every 15 seconds
            // In AppConstants the TimeToLiveExpiration is set to the initial DateTime of Program.cs execution plus AppConstants.TimeToLiveInSeconds (15 seconds)
            // This if condition makes sure that we only call the GetConfiguration API call if we have not exceeded the TTL expiration, or
            // if the ClientConfigurationVersion is set in our local cache in AppConstants - ClientConfigurationVersion is returned from the initial call to the GetConfiguration API (see below for more info)
            if (DateTime.UtcNow > AppConstants.TimeToLiveExpiration || String.IsNullOrEmpty(AppConstants.ClientConfigurationVersion))
            {
                Console.WriteLine("CALLED GetConfigurationAPI to get AppConfigData  \n");
                IAppConfigService appConfigService = new AppConfigService(_clientId);

                // get Amazon.AppConfig.Model.GetConfigurationResponse from GetConfiguration API Call
                GetConfigurationResponse getConfigurationResponse = await appConfigService.GetConfigurationResponse();


                // add ConfigurationVersion to AppConstants to AppConstants to be used in subsequent calls to GetConfugration API to avopid excess charges
                // https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetConfiguration.html#API_GetConfiguration_RequestSyntax
                AppConstants.ClientConfigurationVersion = getConfigurationResponse.ConfigurationVersion;


                // The GetConfiguration response includes a Content section (i.e., our getConfigurationResponse.Content) that shows the configuration data.
                // The Content section only appears if the system finds new or updated configuration data.
                // If the system doesn't find new or updated configuration data, then the Content section is not returned (Null).
                // https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-retrieving-the-configuration.html
                string decodedResponseData = getConfigurationResponse.Content.Length > 0 ? MemoryStreamHelper.DecodeMemoryStreamToString(getConfigurationResponse.Content) : String.Empty;


                // convert DecodedResponseData to our AppConfigData model which consists of:
                // bool boolEnableLimitResults
                // int intResultLimit
                AppConfigData appConfigData = this.ConvertDecodedResponseToAppConfigData(decodedResponseData);

                // add AppConfigData to our cache in AppConstants
                AppConstants.AppConfigData = appConfigData;

                return(AppConstants.AppConfigData);
            }
            else
            {
                Console.WriteLine("DID NOT call GetConfigurationAPI to get data.  Return AppConfigData from cached value in AppConstants.AppConfigData instead. \n");
                return(AppConstants.AppConfigData);
            }
        }
예제 #6
0
    private void Initialize()
    {
        TextAsset     appConfigTextAsset = Resources.Load <TextAsset>("BootstrapData/AppConfig");
        AppConfigData appConfigData      = AppConfigHelper.LoadAppConfigDataFromTextAsset(appConfigTextAsset);

        if (appConfigData != null)
        {
            this._appID              = appConfigData.appID;
            this._appPhotonID        = appConfigData.appPhotonID;
            this._currentEnvironment = appConfigData.currentEnvironment;
            this._deviceId           = appConfigData.debugDeviceId;
        }
        else
        {
            this._currentEnvironment = AppConfig.Environment.LOCAL;
        }

        this._initialized = true;
    }
예제 #7
0
 public MemberService(IOptions <AppConfigData> configData, IMemberRepository repository)
 {
     ConfigData  = configData.Value;
     _repository = repository;
 }
예제 #8
0
 private IEnumerator InitializeAsync(System.Action callback)
 {
     this._appConfigData = AppConfigHelper.LoadAppConfigDataFromTextAsset(this._appConfigTextAsset);
     callback.Invoke();
     yield break;
 }
예제 #9
0
 public VoteService(IOptions <AppConfigData> configData, IVoteRepository repository)
 {
     ConfigData  = configData.Value;
     _repository = repository;
 }
예제 #10
0
 public VoteDapSqlRepository(IOptions <AppConfigData> configData)
 {
     ConfigData        = configData.Value;
     _connectionString = ConfigData.ConnectionString;
 }