コード例 #1
0
    void GetTimeStamp(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
    {
        long     timeStamp = snapshot.Value <long>();
        DateTime dateTime  = SimpleFirebaseUnity.Firebase.TimeStampToDateTime(timeStamp);

        DebugLog("[OK] Get on timestamp key: <" + sender.FullKey + ">");
        DebugLog("Date: " + timeStamp + " --> " + dateTime.ToString());
    }
コード例 #2
0
    void GetOKHandler(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
    {
        DebugLog("[OK] Get from key: <" + sender.FullKey + ">");
        DebugLog("[OK] Raw Json: " + snapshot.RawJson);

        Dictionary <string, object> dict = snapshot.Value <Dictionary <string, object> >();
        List <string> keys = snapshot.Keys;

        if (keys != null)
        {
            foreach (string key in keys)
            {
                DebugLog(key + " = " + dict[key].ToString());
            }
        }
    }
コード例 #3
0
ファイル: FirebaseIO.cs プロジェクト: pestantium/arkit-demo
    // Initialize the Firebase database:
    void InitializeFirebase()
    {
        firebase = SimpleFirebaseUnity.Firebase.CreateNew(databaseUrl);
        peopleDB = firebase.Child(DBPath);

        // Init callbacks
        firebase.OnGetSuccess    += GetOKHandler;
        firebase.OnGetFailed     += GetFailHandler;
        firebase.OnSetSuccess    += SetOKHandler;
        firebase.OnSetFailed     += SetFailHandler;
        firebase.OnUpdateSuccess += UpdateOKHandler;
        firebase.OnUpdateFailed  += UpdateFailHandler;
        firebase.OnPushSuccess   += PushOKHandler;
        firebase.OnPushFailed    += PushFailHandler;
        firebase.OnDeleteSuccess += DelOKHandler;
        firebase.OnDeleteFailed  += DelFailHandler;

        // Get child node from firebase, if false then all the callbacks are not inherited.
        //SimpleFirebaseUnity.Firebase temporary = firebase.Child("temporary", true);
        SimpleFirebaseUnity.Firebase lastUpdate = firebase.Child("lastUpdate");

        lastUpdate.OnGetSuccess += GetTimeStamp;

        peopleDB.OnGetSuccess += OnChangeDB;
        peopleDB.GetValue();

        // Make observer on "last update" time stamp
        dbObserver           = new FirebaseObserver(peopleDB, 1f);
        dbObserver.OnChange += this.OnChangeDB;
        dbObserver.Start();

        //DoDebug("[OBSERVER] FirebaseObserver on " + lastUpdate.FullKey + " started!");

        // Print details
        //DoDebug("Firebase endpoint: " + peopleDB.Endpoint);
        //DoDebug("Firebase key: " + peopleDB.Key);
        //DoDebug("Firebase fullKey: " + peopleDB.FullKey);
        //DoDebug("Firebase child key: " + peopleDB.Key);
        //DoDebug("Firebase child fullKey: " + peopleDB.FullKey);
    }
コード例 #4
0
ファイル: FireDB.cs プロジェクト: pestantium/arkit-demo
    void OnChangeDB(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
    {
        //Debug.Log("[OBSERVER] Last updated changed to: " + snapshot.RawJson);

        foreach (var key in snapshot.Keys)
        {
            string    strItem = JsonHelper.GetJsonObject(snapshot.RawJson, key);
            DBManData item    = JsonUtility.FromJson <DBManData>(strItem);

            if (manData.ContainsKey(key))
            {
                DBManData oneman = manData[key];
                oneman = item;
            }
            else
            {
                manData.Add(key, item);
            }
            if (OnManData != null)
            {
                OnManData.Invoke(key, item);
            }
        }
    }
コード例 #5
0
 void PushFailHandler(SimpleFirebaseUnity.Firebase sender, FirebaseError err)
 {
     DebugError("[ERR] Push from key: <" + sender.FullKey + ">, " + err.Message + " (" + (int)err.Status + ")");
 }
コード例 #6
0
 void PushOKHandler(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
 {
     DebugLog("[OK] Push from key: <" + sender.FullKey + ">");
 }
コード例 #7
0
    IEnumerator Tests()
    {
        // README
        DebugLog("This plugin simply wraps Firebase's RealTime Database REST API.\nPlease read here for better understanding of the API: https://firebase.google.com/docs/reference/rest/database/\n");

        // Inits Firebase using Firebase Secret Key as Auth
        // The current provided implementation not yet including Auth Token Generation
        // If you're using this sample Firebase End,
        // there's a possibility that your request conflicts with other simple-firebase-c# user's request
        SimpleFirebaseUnity.Firebase firebase = SimpleFirebaseUnity.Firebase.CreateNew("https://simple-firebase-unity.firebaseio.com", "WQV9t78OywD8Pp7jvGuAi8K6g0MV8p9FAzkJ7rWK");

        // Init callbacks
        firebase.OnGetSuccess    += GetOKHandler;
        firebase.OnGetFailed     += GetFailHandler;
        firebase.OnSetSuccess    += SetOKHandler;
        firebase.OnSetFailed     += SetFailHandler;
        firebase.OnUpdateSuccess += UpdateOKHandler;
        firebase.OnUpdateFailed  += UpdateFailHandler;
        firebase.OnPushSuccess   += PushOKHandler;
        firebase.OnPushFailed    += PushFailHandler;
        firebase.OnDeleteSuccess += DelOKHandler;
        firebase.OnDeleteFailed  += DelFailHandler;

        // Get child node from firebase, if false then all the callbacks are not inherited.
        SimpleFirebaseUnity.Firebase temporary  = firebase.Child("temporary", true);
        SimpleFirebaseUnity.Firebase lastUpdate = firebase.Child("lastUpdate");

        lastUpdate.OnGetSuccess += GetTimeStamp;

        // Make observer on "last update" time stamp
        FirebaseObserver observer = new FirebaseObserver(lastUpdate, 1f);

        observer.OnChange += (SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot) =>
        {
            DebugLog("[OBSERVER] Last updated changed to: " + snapshot.Value <long>());
        };
        observer.Start();
        DebugLog("[OBSERVER] FirebaseObserver on " + lastUpdate.FullKey + " started!");

        // Print details
        DebugLog("Firebase endpoint: " + firebase.Endpoint);
        DebugLog("Firebase key: " + firebase.Key);
        DebugLog("Firebase fullKey: " + firebase.FullKey);
        DebugLog("Firebase child key: " + temporary.Key);
        DebugLog("Firebase child fullKey: " + temporary.FullKey);

        // Unnecessarily skips a frame, really, unnecessary.
        yield return(null);

        // Create a FirebaseQueue
        FirebaseQueue firebaseQueue = new FirebaseQueue(true, 3, 1f); // if _skipOnRequestError is set to false, queue will stuck on request Get.LimitToLast(-1).


        // Test #1: Test all firebase commands, using FirebaseQueueManager
        // The requests should be running in order
        firebaseQueue.AddQueueSet(firebase, GetSampleScoreBoard(), FirebaseParam.Empty.PrintSilent());
        firebaseQueue.AddQueuePush(firebase.Child("broadcasts", true), "{ \"name\": \"simple-firebase-csharp\", \"message\": \"awesome!\"}", true);
        firebaseQueue.AddQueueSetTimeStamp(firebase, "lastUpdate");
        firebaseQueue.AddQueueGet(firebase, "print=pretty");
        firebaseQueue.AddQueueUpdate(firebase.Child("layout", true), "{\"x\": 5.8, \"y\":-94}");
        firebaseQueue.AddQueueGet(firebase.Child("layout", true));
        firebaseQueue.AddQueueGet(lastUpdate);

        //Deliberately make an error for an example
        DebugWarning("[WARNING] There is one invalid request below (Get with invalid OrderBy) which will gives error, only for the sake of example on error handling.");
        firebaseQueue.AddQueueGet(firebase, FirebaseParam.Empty.LimitToLast(-1));

        // (~~ -.-)~~
        DebugLog("==== Wait for seconds 15f ======");
        yield return(new WaitForSeconds(15f));

        DebugLog("==== Wait over... ====");


        // Test #2: Calls without using FirebaseQueueManager
        // The requests could overtake each other (ran asynchronously)
        firebase.Child("broadcasts", true).Push("{ \"name\": \"dikra\", \"message\": \"hope it runs well...\"}", false);
        firebase.GetValue(FirebaseParam.Empty.OrderByKey().LimitToFirst(2));
        temporary.GetValue();
        firebase.GetValue(FirebaseParam.Empty.OrderByKey().LimitToLast(2));
        temporary.GetValue();

        // Please note that orderBy "rating" is possible because I already defined the index on the Rule.
        // If you use your own endpoint, you might get an error if you haven't set it on your Rule.
        firebase.Child("scores", true).GetValue(FirebaseParam.Empty.OrderByChild("rating").LimitToFirst(2));
        firebase.GetRules(GetRulesOKHandler, GetRulesFailHandler);

        // ~~(-.- ~~)
        yield return(null);

        DebugLog("==== Wait for seconds 15f ======");
        yield return(new WaitForSeconds(15f));

        DebugLog("==== Wait over... ====");

        // We need to clear the queue as the queue is left with one error command (the one we deliberately inserted last time).
        // When the queue stuck with an error command at its head, the next (or the newly added command) will never be processed.
        firebaseQueue.ForceClearQueue();
        yield return(null);

        // Test #3: Delete the frb_child and broadcasts
        firebaseQueue.AddQueueGet(firebase);
        firebaseQueue.AddQueueDelete(temporary);

        // Please notice that the OnSuccess/OnFailed handler is not inherited since Child second parameter not set to true.
        DebugLog("'broadcasts' node is deleted silently.");
        firebaseQueue.AddQueueDelete(firebase.Child("broadcasts"));
        firebaseQueue.AddQueueGet(firebase);

        // ~~(-.-)~~
        yield return(null);

        DebugLog("==== Wait for seconds 15f ======");
        yield return(new WaitForSeconds(15f));

        DebugLog("==== Wait over... ====");
        observer.Stop();
        DebugLog("[OBSERVER] FirebaseObserver on " + lastUpdate.FullKey + " stopped!");
    }
コード例 #8
0
ファイル: FirebaseIO.cs プロジェクト: pestantium/arkit-demo
 void DelOKHandler(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
 {
     DoDebug("[OK] Del from key: <" + sender.FullKey + ">");
 }
コード例 #9
0
 protected void OnFailed(Firebase sender, FirebaseError err)
 {
     --count;
     StartNextCommand();
     ClearCallbacks(sender);
 }
コード例 #10
0
ファイル: FirebaseIO.cs プロジェクト: pestantium/arkit-demo
 void UpdateOKHandler(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
 {
     DoDebug("[OK] Update from key: <" + sender.FullKey + ">");
     DoDebug(snapshot.RawJson);
 }
コード例 #11
0
ファイル: FirebaseIO.cs プロジェクト: pestantium/arkit-demo
    void OnChangeDB(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
    {
        DoDebug("[OBSERVER] Last updated changed to: " + snapshot.RawJson);

        foreach (var key in snapshot.Keys)
        {
            string strItem = JsonHelper.GetJsonObject(snapshot.RawJson, key);

            string numbersOnly = Regex.Replace(key, "[^0-9]", "");
            if (string.IsNullOrEmpty(numbersOnly))
            {
                continue;
            }

            int index = int.Parse(numbersOnly);

            OneItem item = JsonUtility.FromJson <OneItem>(strItem);
            if (zombieStatesMap.ContainsKey(index))
            {
                ParseItem(item, index, zombieStatesMap[index]);
            }
            else
            {
                ZombieState zombie = new ZombieState();
                if (ParseItem(item, index, zombie))
                {
                    zombieStatesMap[zombie.id] = zombie;
                    zombieStateList.Add(zombie);
                }
            }
        }


        //Do something with the data in args.Snapshot
        //if (db != null && db.items.Count > 0)
        //{
        //    foreach (var item in db.items)
        //    {
        //        if (zombieStatesMap.ContainsKey(item.id))
        //        {
        //            ParseItem(item, zombieStatesMap[item.id]);
        //        }
        //        else
        //        {
        //            ZombieState zombie = new ZombieState();
        //            if (ParseItem(item, zombie))
        //            {
        //                zombieStatesMap[zombie.id] = zombie;
        //                zombieStateList.Add(zombie);
        //            }
        //        }
        //    }
        //}

        if (ZombieStateChanged != null)
        {
            foreach (var pair in zombieStatesMap)
            {
                ZombieStateChanged(this, new ZombieStateEventArgs(pair.Key, pair.Value));
            }
        }
    }
コード例 #12
0
 internal Firebase()
 {
     parent = null;
     key    = string.Empty;
     root   = null;
 }
コード例 #13
0
        /// <summary>
        /// Adds Firebase Set Time Stamp request to queue.
        /// </summary>
        /// <param name="firebase">Firebase.</param>
        /// <param name="keyName">Time stamp key name.</param>
        public void AddQueueSetTimeStamp(Firebase firebase, string keyName)
        {
            Firebase temp = firebase.Child(keyName, false);

            AddQueueSet(temp, SERVER_VALUE_TIMESTAMP, true, "print=silent");
        }
コード例 #14
0
 /// <summary>
 /// Adds Firebase Update request to queue.
 /// </summary>
 /// <param name="firebase">Firebase.</param>
 /// <param name="val">Value.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueueUpdate(Firebase firebase, object val, string param = "")
 {
     firebase.OnUpdateSuccess += OnSuccess;
     firebase.OnUpdateFailed  += OnFailed;
     AddQueue(firebase, FirebaseCommand.Update, param, val);
 }
コード例 #15
0
 void GetRulesOKHandler(SimpleFirebaseUnity.Firebase sender, DataSnapshot snapshot)
 {
     DebugLog("[OK] GetRules");
     DebugLog("[OK] Raw Json: " + snapshot.RawJson);
 }
コード例 #16
0
ファイル: FirebaseIO.cs プロジェクト: pestantium/arkit-demo
 void UpdateFailHandler(SimpleFirebaseUnity.Firebase sender, FirebaseError err)
 {
     DoDebug("[ERR] Update from key: <" + sender.FullKey + ">, " + err.Message + " (" + (int)err.Status + ")");
 }
コード例 #17
0
 void GetRulesFailHandler(SimpleFirebaseUnity.Firebase sender, FirebaseError err)
 {
     DebugError("[ERR] GetRules,  " + err.Message + " (" + (int)err.Status + ")");
 }
コード例 #18
0
 protected void OnSuccess(Firebase sender, DataSnapshot snapshot)
 {
     --count;
     StartNextCommand();
     ClearCallbacks(sender);
 }