Пример #1
0
        public static void Initialize(string gameKey, string gameSecret)
        {
#if WINDOWS_UWP || WINDOWS_WSA || WINDOWS_PHONE
            CoreApplication.Suspending += OnSuspending;
            CoreApplication.Resuming   += OnResuming;
#endif
            GADevice.UpdateConnectionType();

            GAThreading.PerformTaskOnGAThread("initialize", () =>
            {
                if (IsSdkReady(true, false))
                {
                    GALogger.W("SDK already initialized. Can only be called once.");
                    return;
                }
                if (!GAValidator.ValidateKeys(gameKey, gameSecret))
                {
                    GALogger.W("SDK failed initialize. Game key or secret key is invalid. Can only contain characters A-z 0-9, gameKey is 32 length, gameSecret is 40 length. Failed keys - gameKey: " + gameKey + ", secretKey: " + gameSecret);
                    return;
                }

                GAState.SetKeys(gameKey, gameSecret);

                if (!GAStore.EnsureDatabase(false))
                {
                    GALogger.W("Could not ensure/validate local event database: " + GADevice.WritablePath);
                }

                GAState.InternalInitialize();
            });
        }
Пример #2
0
        public static void AddResourceEvent(EGAResourceFlowType flowType, string currency, double amount, string itemType, string itemId)
        {
            // Validate event params
            if (!GAValidator.ValidateResourceEvent(flowType, currency, (long)amount, itemType, itemId))
            {
                GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // If flow type is sink reverse amount
            if (flowType == EGAResourceFlowType.Sink)
            {
                amount *= -1;
            }

            // Create empty eventData
            JSONClass eventDict = new JSONClass();

            // insert event specific values
            string flowTypeString = ResourceFlowTypeToString(flowType);

            eventDict["event_id"] = flowTypeString + ":" + currency + ":" + itemType + ":" + itemId;
            eventDict["category"] = CategoryResource;
            eventDict.Add("amount", new JSONData(amount));

            // Add custom dimensions
            AddDimensionsToEvent(eventDict);

            // Log
            GALogger.I("Add RESOURCE event: {currency:" + currency + ", amount:" + amount + ", itemType:" + itemType + ", itemId:" + itemId + "}");

            // Send to store
            AddEventToStore(eventDict);
        }
Пример #3
0
        public void TestValidateDesignEvent()
        {
            // Store result
            bool isValid;

            // Valid
            isValid = GAValidator.ValidateDesignEvent("name:name", 100);
            Assert.True(isValid, "Design event should allow nil value");

            isValid = GAValidator.ValidateDesignEvent("name:name:name", 100);
            Assert.True(isValid, "Design event should allow nil value");

            isValid = GAValidator.ValidateDesignEvent("name:name:name:name", 100);
            Assert.True(isValid, "Design event should allow nil value");

            isValid = GAValidator.ValidateDesignEvent("name:name:name:name:name", 100);
            Assert.True(isValid, "Design event should allow nil value");

            isValid = GAValidator.ValidateDesignEvent("name:name", 0);
            Assert.True(isValid, "Design event should allow nil value");

            // Invalid
            isValid = GAValidator.ValidateDesignEvent("", 100);
            Assert.False(isValid, "Design event should falset allow empty event string");

            isValid = GAValidator.ValidateDesignEvent(null, 100);
            Assert.False(isValid, "Design event should falset allow empty event string");

            isValid = GAValidator.ValidateDesignEvent("name:name:name:name:name:name", 100);
            Assert.False(isValid, "Design event should falset allow more than 5 values in event string");
        }
Пример #4
0
        public static void AddErrorEvent(EGAErrorSeverity severity, string message)
        {
            string severityString = ErrorSeverityToString(severity);

            // Validate
            if (!GAValidator.ValidateErrorEvent(severity, message))
            {
                GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // Create empty eventData
            JSONClass eventData = new JSONClass();

            // Append event specifics
            eventData["category"] = CategoryError;
            eventData["severity"] = severityString;
            eventData["message"]  = message;

            // Log
            GALogger.I("Add ERROR event: {severity:" + severityString + ", message:" + message + "}");

            // Send to store
            AddEventToStore(eventData);
        }
Пример #5
0
        public static void AddErrorEvent(EGAErrorSeverity severity, string message, IDictionary <string, object> fields)
        {
            string severityString = ErrorSeverityToString(severity);

            // Validate
            if (!GAValidator.ValidateErrorEvent(severity, message))
            {
                //GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // Create empty eventData
            JSONObject eventData = new JSONObject();

            // Append event specifics
            eventData["category"] = CategoryError;
            eventData["severity"] = severityString;
            eventData["message"]  = message;

            // Add custom dimensions
            AddDimensionsToEvent(eventData);

            // Add custom fields
            AddFieldsToEvent(eventData, GAState.ValidateAndCleanCustomFields(fields));

            // Log
            GALogger.I("Add ERROR event: {severity:" + severityString + ", message:" + message + "}");

            // Send to store
            AddEventToStore(eventData);
        }
Пример #6
0
        public void TestValidateUserId()
        {
            Assert.True(GAValidator.ValidateUserId("fhjkdfghdfjkgh"));

            Assert.False(GAValidator.ValidateUserId(null));
            Assert.False(GAValidator.ValidateUserId(""));
        }
Пример #7
0
        public static void AddDesignEvent(string eventId, double value, bool sendValue)
        {
            // Validate
            if (!GAValidator.ValidateDesignEvent(eventId, value))
            {
                GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // Create empty eventData
            JSONClass eventData = new JSONClass();

            // Append event specifics
            eventData["category"] = CategoryDesign;
            eventData["event_id"] = eventId;

            if (sendValue)
            {
                eventData.Add("value", new JSONData(value));
            }

            // Log
            GALogger.I("Add DESIGN event: {eventId:" + eventId + ", value:" + value + "}");

            // Send to store
            AddEventToStore(eventData);
        }
Пример #8
0
 public static void SetAvailableResourceItemTypes(List <string> resourceItemTypes)
 {
     if (GAValidator.ValidateResourceItemTypes(resourceItemTypes.ToArray()))
     {
         GA_Wrapper.SetAvailableResourceItemTypes(GA_MiniJSON.Serialize(resourceItemTypes));
     }
 }
Пример #9
0
        public void TestValidateClientTs()
        {
            Assert.True(GAValidator.ValidateClientTs(GAUtilities.TimeIntervalSince1970()));

            Assert.False(GAValidator.ValidateClientTs(long.MinValue));
            Assert.False(GAValidator.ValidateClientTs(long.MaxValue));
        }
Пример #10
0
 public static void SetAvailableCustomDimensions01(List <string> customDimensions)
 {
     if (GAValidator.ValidateCustomDimensions(customDimensions.ToArray()))
     {
         GA_Wrapper.SetAvailableCustomDimensions01(GA_MiniJSON.Serialize(customDimensions));
     }
 }
Пример #11
0
        public static void AddDesignEvent(string eventId, double value, bool sendValue, IDictionary <string, object> fields)
        {
            // Validate
            if (!GAValidator.ValidateDesignEvent(eventId, value))
            {
                //GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // Create empty eventData
            JSONObject eventData = new JSONObject();

            // Append event specifics
            eventData["category"] = CategoryDesign;
            eventData["event_id"] = eventId;

            if (sendValue)
            {
                eventData.Add("value", new JSONNumber(value));
            }

            // Add custom dimensions
            AddDimensionsToEvent(eventData);

            // Add custom fields
            AddFieldsToEvent(eventData, GAState.ValidateAndCleanCustomFields(fields));

            // Log
            GALogger.I("Add DESIGN event: {eventId:" + eventId + ", value:" + value + "}");

            // Send to store
            AddEventToStore(eventData);
        }
Пример #12
0
        public void TestValidateBusinessEvent()
        {
            // Store result
            bool isValid;

            // Valid business events
            isValid = GAValidator.ValidateBusinessEvent("USD", 99, "cartType", "itemType", "itemId");
            Assert.True(isValid, "Valid business event should succeed");

            // Should allow false carttype (optional)
            isValid = GAValidator.ValidateBusinessEvent("USD", 99, "", "itemType", "itemId");
            Assert.True(isValid, "Business event cartType should be optional");

            // Should allow 0 amount
            isValid = GAValidator.ValidateBusinessEvent("USD", 0, "", "itemType", "itemId");
            Assert.True(isValid, "Business event should allow amount 0");

            // Should allow negative amount
            isValid = GAValidator.ValidateBusinessEvent("USD", -99, "", "itemType", "itemId");
            Assert.True(isValid, "Business event should allow amount less than 0");

            // Should fail on empty item type
            isValid = GAValidator.ValidateBusinessEvent("USD", 99, "", "", "itemId");
            Assert.False(isValid, "Business event should not allow empty item type");

            // Should fail on empty item id
            isValid = GAValidator.ValidateBusinessEvent("USD", 99, "", "itemType", "");
            Assert.False(isValid, "Business event should not allow empty item id");
        }
Пример #13
0
 public static void SetAvailableResourceCurrencies(List <string> resourceCurrencies)
 {
     if (!GAValidator.ValidateResourceCurrencies(resourceCurrencies.ToArray()))
     {
         return;
     }
     GA_Wrapper.SetAvailableResourceCurrencies(GA_MiniJSON.Serialize((object)resourceCurrencies));
 }
Пример #14
0
 public static void SetAvailableCustomDimensions03(List <string> customDimensions)
 {
     if (!GAValidator.ValidateCustomDimensions(customDimensions.ToArray()))
     {
         return;
     }
     GA_Wrapper.SetAvailableCustomDimensions03(GA_MiniJSON.Serialize((object)customDimensions));
 }
Пример #15
0
 // Token: 0x0600014F RID: 335 RVA: 0x0000ACC4 File Offset: 0x000090C4
 public static void SetAvailableResourceItemTypes(List <string> resourceItemTypes)
 {
     if (GAValidator.ValidateResourceItemTypes(resourceItemTypes.ToArray()))
     {
         string availableResourceItemTypes = GA_MiniJSON.JsonEncode(resourceItemTypes.ToArray());
         GA_Wrapper.SetAvailableResourceItemTypes(availableResourceItemTypes);
     }
 }
Пример #16
0
 // Token: 0x0600014D RID: 333 RVA: 0x0000AC64 File Offset: 0x00009064
 public static void SetAvailableCustomDimensions03(List <string> customDimensions)
 {
     if (GAValidator.ValidateCustomDimensions(customDimensions.ToArray()))
     {
         string availableCustomDimensions = GA_MiniJSON.JsonEncode(customDimensions.ToArray());
         GA_Wrapper.SetAvailableCustomDimensions03(availableCustomDimensions);
     }
 }
Пример #17
0
        public void ValidateEventIdCharacters()
        {
            Assert.True(GAValidator.ValidateEventIdCharacters("GHj:df(g?h d_fk7-58.9)3!47"));

            Assert.False(GAValidator.ValidateEventIdCharacters("GHj:df(g?h d_fk,7-58.9)3!47"));
            Assert.False(GAValidator.ValidateEventIdCharacters(null));
            Assert.False(GAValidator.ValidateEventIdCharacters(""));
        }
Пример #18
0
        public void TestValidateBirthyear()
        {
            Assert.True(GAValidator.ValidateBirthyear(1982));
            Assert.True(GAValidator.ValidateBirthyear(9999));
            Assert.True(GAValidator.ValidateBirthyear(0));

            Assert.False(GAValidator.ValidateBirthyear(10000));
            Assert.False(GAValidator.ValidateBirthyear(-1));
        }
Пример #19
0
        public void TestValidateSdkErrorEvent()
        {
            // Store result
            bool isValid;

            // Valid
            isValid = GAValidator.ValidateSdkErrorEvent("c6cfc80ff69d1e7316bf1e0c8194eda6", "e0ae4809f70e2fa96916c7060f417ae53895f18d", EGASdkErrorType.Rejected);
            Assert.True(isValid, "Sdk error event should validate");
        }
Пример #20
0
 public static void SetFacebookId(string facebookId)
 {
     GAThreading.PerformTaskOnGAThread("setFacebookId", () =>
     {
         if (GAValidator.ValidateFacebookId(facebookId))
         {
             GAState.SetFacebookId(facebookId);
         }
     });
 }
Пример #21
0
        public void TestValidateEventPartCharacters()
        {
            Assert.False(GAValidator.ValidateEventPartCharacters("øææ"));
            Assert.False(GAValidator.ValidateEventPartCharacters(""));
            Assert.False(GAValidator.ValidateEventPartCharacters(null));
            Assert.False(GAValidator.ValidateEventPartCharacters("*"));
            Assert.False(GAValidator.ValidateEventPartCharacters("))&%"));

            Assert.True(GAValidator.ValidateEventPartCharacters("sdfdffdgdfg"));
        }
Пример #22
0
        public void TestValidateBuild()
        {
            Assert.False(GAValidator.ValidateBuild(""));
            Assert.False(GAValidator.ValidateBuild(null));
            Assert.False(GAValidator.ValidateBuild(GATestUtilities.GetRandomString(40)));

            Assert.True(GAValidator.ValidateBuild("alpha 1.2.3"));
            Assert.True(GAValidator.ValidateBuild("ALPHA 1.2.3"));
            Assert.True(GAValidator.ValidateBuild("TES# sdf.fd3"));
        }
Пример #23
0
        public void TestValidateEventIdLength()
        {
            Assert.True(GAValidator.ValidateEventIdLength(GATestUtilities.GetRandomString(40)));
            Assert.True(GAValidator.ValidateEventIdLength(GATestUtilities.GetRandomString(32)));
            Assert.True(GAValidator.ValidateEventIdLength("sdfdf"));

            Assert.False(GAValidator.ValidateEventIdLength(GATestUtilities.GetRandomString(80)));
            Assert.False(GAValidator.ValidateEventIdLength(null));
            Assert.False(GAValidator.ValidateEventIdLength(""));
        }
Пример #24
0
 public static void SetGender(EGAGender gender)
 {
     GAThreading.PerformTaskOnGAThread("setGender", () =>
     {
         if (GAValidator.ValidateGender(gender))
         {
             GAState.SetGender(gender);
         }
     });
 }
Пример #25
0
 public static void SetBirthYear(int birthYear)
 {
     GAThreading.PerformTaskOnGAThread("setBirthYear", () =>
     {
         if (GAValidator.ValidateBirthyear(birthYear))
         {
             GAState.SetBirthYear(birthYear);
         }
     });
 }
Пример #26
0
        public static void AddAdEvent(GAAdAction adAction, GAAdType adType, string adSdkName, string adPlacement)
        {
#if UNITY_EDITOR
            if (GAValidator.ValidateAdEvent(adAction, adType, adSdkName, adPlacement))
            {
                addAdEvent((int)adAction, (int)adType, adSdkName, adPlacement);
            }
#elif UNITY_IOS || UNITY_ANDROID
            addAdEvent((int)adAction, (int)adType, adSdkName, adPlacement);
#endif
        }
Пример #27
0
        public static void Initialize(string gamekey, string gamesecret)
        {
#if UNITY_EDITOR
            if (GAValidator.ValidateKeys(gamekey, gamesecret))
            {
                initialize(gamekey, gamesecret);
            }
#else
            initialize(gamekey, gamesecret);
#endif
        }
Пример #28
0
        public static void SetBuild(string build)
        {
#if UNITY_EDITOR
            if (GAValidator.ValidateBuild(build))
            {
                configureBuild(build);
            }
#else
            configureBuild(build);
#endif
        }
Пример #29
0
        public static void SetCustomUserId(string userId)
        {
#if UNITY_EDITOR
            if (GAValidator.ValidateUserId(userId))
            {
                configureUserId(userId);
            }
#else
            configureUserId(userId);
#endif
        }
Пример #30
0
        public static void AddResourceEvent(EGAResourceFlowType flowType, string currency, double amount, string itemType, string itemId, IDictionary <string, object> fields, bool mergeFields)
        {
            if (!GAState.IsEventSubmissionEnabled)
            {
                return;
            }

            // Validate event params
            if (!GAValidator.ValidateResourceEvent(flowType, currency, (long)amount, itemType, itemId))
            {
                //GAHTTPApi.Instance.SendSdkErrorEvent(EGASdkErrorType.Rejected);
                return;
            }

            // If flow type is sink reverse amount
            if (flowType == EGAResourceFlowType.Sink)
            {
                amount *= -1;
            }

            // Create empty eventData
            JSONObject eventDict = new JSONObject();

            // insert event specific values
            string flowTypeString = ResourceFlowTypeToString(flowType);

            eventDict["event_id"] = flowTypeString + ":" + currency + ":" + itemType + ":" + itemId;
            eventDict["category"] = CategoryResource;
            eventDict.Add("amount", new JSONNumber(amount));

            // Add custom dimensions
            AddDimensionsToEvent(eventDict);

            IDictionary <string, object> fieldsToUse = new Dictionary <string, object>(fields != null && fields.Count > 0 ? fields : GAState.CurrentGlobalCustomEventFields);

            if (mergeFields && fields != null && fields.Count > 0)
            {
                foreach (KeyValuePair <string, object> pair in GAState.CurrentGlobalCustomEventFields)
                {
                    if (!fieldsToUse.ContainsKey(pair.Key))
                    {
                        fieldsToUse.Add(pair.Key, pair.Value);
                    }
                }
            }
            // Add custom fields
            AddFieldsToEvent(eventDict, GAState.ValidateAndCleanCustomFields(fieldsToUse));

            // Log
            GALogger.I("Add RESOURCE event: {currency:" + currency + ", amount:" + amount + ", itemType:" + itemType + ", itemId:" + itemId + "}");

            // Send to store
            AddEventToStore(eventDict);
        }