private static void EnsureSecretKeyPresentInProductionMode(StreamdataConfiguration configurationToVerify)
 {
     if (configurationToVerify.Mode == StreamdataConfigurationMode.PRODUCTION &&
         string.IsNullOrEmpty(configurationToVerify.SecretKey))
     {
         throw new StreamdataConfigurationException("[SecretKey] not configured");
     }
 }
        private StreamdataClient(StreamdataConfiguration config)
        {
            Configuration = config;
            engine        = Activator.CreateInstance(
                Configuration.EngineType.Item1,
                Configuration.EngineType.Item2) as ServerSentEventEngine;

            if (Configuration.KeepState)
            {
                engine.OnNewJsonData += (data) =>
                {
                    T value = JsonConvert.DeserializeObject <T>(data);
                    state = value;
                    OnUpdatedState(state);
                };
                engine.OnNewJsonPatch += (patch) =>
                {
                    var operations = JsonConvert.DeserializeObject <List <Operation <T> > >(patch);
                    var patchDocumentOperations = new JsonPatchDocument <T>(operations);
                    patchDocumentOperations.ApplyTo(state);
                    OnUpdatedState(state);
                };
            }
        }