Exemple #1
0
        /// <summary>
        /// Push a value (with random new key) on a key in Firebase. Calls OnPushSuccess on success, OnPushFailed on failed.
        /// OnPushSuccess action contains the corresponding Firebase and the response Snapshot
        /// OnPushFailed action contains the error exception
        /// </summary>
        /// <param name="val">Push value</param>
        /// <param name="priority">Priority.</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        /// <returns></returns>
        public void Push(object val, float priority, FirebaseParam query)
        {
            Dictionary <string, object> tempDict = new Dictionary <string, object>();

            tempDict.Add(".value", val);
            tempDict.Add(".priority", priority);
            root.StartCoroutine(JsonSerializeRoutine(tempDict, query, PushJson));
        }
Exemple #2
0
 /// <summary>
 /// Creates an Observer that calls GetValue request at the given refresh rate (in seconds) and checks whether the value has changed.
 /// </summary>
 /// <param name="_firebase">Firebase.</param>
 /// <param name="_refreshRate">Refresh rate (in seconds).</param>
 /// <param name="_getParam">Parameter value for the Get request that will be called periodically.</param>
 public FirebaseObserver(Firebase _firebase, float _refreshRate, FirebaseParam _getParam)
 {
     active       = false;
     lastSnapshot = null;
     firebase     = _firebase;
     refreshRate  = _refreshRate;
     getParam     = _getParam.Parameter;
     target       = _firebase.Copy();
 }
Exemple #3
0
        /// <summary>
        /// Create new FirebaseQuery
        /// </summary>
        /// <param name="copy">Firebase parameter to copy.</param>
        public FirebaseParam(FirebaseParam copy)
        {
            param  = copy.Parameter;
            header = new Dictionary <string, string>();

            foreach (var kv in header)
            {
                header.Add(kv.Key, kv.Value);
            }
        }
Exemple #4
0
 /// <summary>
 /// Push a value (with random new key) on a key in Firebase. Calls OnPushSuccess on success, OnPushFailed on failed.
 /// OnPushSuccess action contains the corresponding Firebase and the response Snapshot
 /// OnPushFailed action contains the error exception
 /// </summary>
 /// <param name="val">Push value</param>
 /// <param name="isJson">True if string is an object parsed in a json string.</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 /// <returns></returns>
 public void Push(string val, bool isJson, FirebaseParam query)
 {
     if (isJson)
     {
         PushJson(val, query);
     }
     else
     {
         root.StartCoroutine(JsonSerializeRoutine(val, query, PushJson));
     }
 }
Exemple #5
0
 /// <summary>
 /// Set value of a key on Firebase. Calls OnUpdateSuccess on success, OnUpdateFailed on failed.
 /// OnSetSuccess action contains the corresponding Firebase and the response Snapshot
 /// OnSetFailed action contains the error exception
 /// </summary>
 /// <param name="val">Set value</param>
 /// <param name="isJson">True if string is an object parsed in a json string.</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 /// <returns></returns>
 public void SetValue(string val, bool isJson, FirebaseParam query)
 {
     if (isJson)
     {
         SetValueJson(val, query);
     }
     else
     {
         root.StartCoroutine(JsonSerializeRoutine(val, query, SetValueJson));
     }
 }
Exemple #6
0
        /*** SET ***/

        /// <summary>
        /// Set value of a key on Firebase. Calls OnSetSuccess on success, OnSetFailed on failed.
        /// OnSetSuccess action contains the corresponding Firebase and the response Snapshot
        /// OnSetFailed action contains the error exception
        /// </summary>
        /// <param name="valJson">Set value in json format</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        /// <returns></returns>
        void SetValueJson(string valJson, FirebaseParam query)
        {
            try
            {
                if (Credential != "")
                {
                    query = new FirebaseParam(query).Auth(Credential);
                }

                string url = Endpoint;

                string param = WWW.EscapeURL(query.Parameter);

                if (param != "")
                {
                    url += "?" + param;
                }


                Dictionary <string, string> headers = new Dictionary <string, string>();

                foreach (var kv in query.HttpHeader)
                {
                    headers.Add(kv.Key, kv.Value);
                }

                headers.Add("Content-Type", "application/json");

                if (!headers.ContainsKey("X-HTTP-Method-Override"))
                {
                    headers.Add("X-HTTP-Method-Override", "PUT");
                }

                //UTF8Encoding encoding = new UTF8Encoding();
                byte[] bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(valJson);

                root.StartCoroutine(RequestCoroutine(url, bytes, headers, OnSetSuccess, OnSetFailed));
            }
            catch (WebException webEx)
            {
                if (OnSetFailed != null)
                {
                    OnSetFailed(this, FirebaseError.Create(webEx));
                }
            }
            catch (Exception ex)
            {
                if (OnSetFailed != null)
                {
                    OnSetFailed(this, new FirebaseError(ex.Message));
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// Update value of a key on Firebase. Calls OnUpdateSuccess on success, OnUpdateFailed on failed.
        /// OnUpdateSuccess action contains the corresponding Firebase and the response Snapshot
        /// OnUpdateFailed action contains the error exception
        /// </summary>
        /// <param name="val">Update value</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        /// <returns></returns>
        internal void UpdateValueObject(object val, FirebaseParam query)
        {
            if (!(val is Dictionary <string, object>))
            {
                if (OnUpdateFailed != null)
                {
                    OnUpdateFailed(this, new FirebaseError((HttpStatusCode)400, "Invalid data; couldn't parse JSON object. Are you sending a JSON object with valid key names?"));
                }

                return;
            }

            root.StartCoroutine(JsonSerializeRoutine(val, query, UpdateValue));
        }
Exemple #8
0
        IEnumerator JsonSerializeRoutine(object sourceObj, FirebaseParam query, Action <string, FirebaseParam> onCompleted)
        {
            ParserObjToJson parser = new ParserObjToJson(sourceObj);

            while (!parser.isDone)
            {
                yield return(null);
            }

            if (onCompleted != null)
            {
                onCompleted(parser.json, query);
            }
        }
Exemple #9
0
        /*** PUSH ***/

        /// <summary>
        /// Push a value (with random new key) on a key in Firebase. Calls OnPushSuccess on success, OnPushFailed on failed.
        /// OnPushSuccess action contains the corresponding Firebase and the response Snapshot
        /// OnPushFailed action contains the error exception
        /// </summary>
        /// <param name="valJson">Push value in json format</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        /// <returns></returns>
        void PushJson(string valJson, FirebaseParam query)
        {
            try
            {
                if (Credential != "")
                {
                    query = new FirebaseParam(query).Auth(Credential);
                }

                string url = Endpoint;

                string param = WWW.EscapeURL(query.Parameter);

                if (param != string.Empty)
                {
                    url += "?" + param;
                }

                //UTF8Encoding encoding = new UTF8Encoding();
                byte[] bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(valJson);

                root.StartCoroutine(RequestCoroutine(url, bytes, query.HttpHeader, OnPushSuccess, OnPushFailed));
            }
            catch (WebException webEx)
            {
                if (OnPushFailed != null)
                {
                    OnPushFailed(this, FirebaseError.Create(webEx));
                }
            }
            catch (Exception ex)
            {
                if (OnPushFailed != null)
                {
                    OnPushFailed(this, new FirebaseError(ex.Message));
                }
            }
        }
Exemple #10
0
 /// <summary>
 /// Push a value (with random new key) on a key in Firebase. Calls OnPushSuccess on success, OnPushFailed on failed.
 /// OnPushSuccess action contains the corresponding Firebase and the response Snapshot
 /// OnPushFailed action contains the error exception
 /// </summary>
 /// <param name="val">Push value</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 /// <returns></returns>
 public void Push(object val, FirebaseParam query)
 {
     root.StartCoroutine(JsonSerializeRoutine(val, query, PushJson));
 }
Exemple #11
0
        /// <summary>
        /// Sets the time stamp with the time since UNIX epoch by server value (in milliseconds).
        /// </summary>
        /// <param name="OnSuccess">On success callback.</param>
        /// <param name="OnFailed">On failed callback.</param>
        /// <param name="keyName">Key name.</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        public void SetTimeStamp(Action <Firebase, DataSnapshot> OnSuccess, Action <Firebase, FirebaseError> OnFailed, string keyName, FirebaseParam query)
        {
            Firebase temp = Copy(false);

            temp.OnSetSuccess += OnSuccess;
            temp.OnSetFailed  += OnFailed;
            temp.Child(keyName).SetValue(SERVER_VALUE_TIMESTAMP, true, query);
        }
 /// <summary>
 /// Adds Firebase Delete request to queue.
 /// </summary>
 /// <param name="firebase">Firebase node.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueueDelete(Firebase firebase, FirebaseParam param)
 {
     AddQueueDelete(firebase, param.Parameter);
 }
 /// <summary>
 /// Adds Firebase Push request to queue.
 /// </summary>
 /// <param name="firebase">Firebase node.</param>
 /// <param name="val">Value.</param>
 /// <param name="isJson">True if string is an object parsed in a json string.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueuePush(Firebase firebase, string val, bool isJson, FirebaseParam param)
 {
     AddQueuePush(firebase, val, isJson, param.Parameter);
 }
 /// <summary>
 /// Adds Firebase Push request to queue.
 /// </summary>
 /// <param name="firebase">Firebase node.</param>
 /// <param name="val">Value.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueuePush(Firebase firebase, object val, FirebaseParam param)
 {
     AddQueuePush(firebase, val, param.Parameter);
 }
 /// <summary>
 /// Adds Firebase Update request to queue.
 /// </summary>
 /// <param name="firebase">Firebase node.</param>
 /// <param name="valJson">Value in json format.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueueUpdate(Firebase firebase, string valJson, FirebaseParam param)
 {
     AddQueueUpdate(firebase, valJson, param.Parameter);
 }
 /// <summary>
 /// Adds Firebase Update request to queue.
 /// </summary>
 /// <param name="firebase">Firebase node.</param>
 /// <param name="val">Value.</param>
 /// <param name="param">Parameter.</param>
 public void AddQueueUpdate(Firebase firebase, Dictionary<string, object> val, FirebaseParam param)
 {
     AddQueueUpdate(firebase, val, param.Parameter);
 }
Exemple #17
0
        /// <summary>
        /// Sets the priority of the node.
        /// </summary>
        /// <param name="OnSuccess">On success callback.</param>
        /// <param name="OnFailed">On failed callback.</param>
        /// <param name="priority">Priority.</param>
        /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
        public void SetPriority(Action <Firebase, DataSnapshot> OnSuccess, Action <Firebase, FirebaseError> OnFailed, float priority, FirebaseParam query)
        {
            Firebase temp = Copy(false);

            temp.OnSetSuccess += OnSuccess;
            temp.OnSetFailed  += OnFailed;
            temp.Child(".priority").SetValue(priority, query);
        }
Exemple #18
0
 /// <summary>
 /// Sets the priority of the node.
 /// </summary>
 /// <param name="priority">Priority.</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 public void SetPriority(float priority, FirebaseParam query)
 {
     Copy(false).Child(".priority").SetValue(priority, query);
 }
Exemple #19
0
 /// <summary>
 /// Set value of a key on Firebase. Calls OnUpdateSuccess on success, OnUpdateFailed on failed.
 /// OnSetSuccess action contains the corresponding Firebase and the response Snapshot
 /// OnSetFailed action contains the error exception
 /// </summary>
 /// <param name="val">Set value</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 /// <returns></returns>
 public void SetValue(object val, FirebaseParam query)
 {
     root.StartCoroutine(JsonSerializeRoutine(val, query, SetValueJson));
 }
Exemple #20
0
 /// <summary>
 /// Sets the time stamp with the time since UNIX epoch by server value (in milliseconds).
 /// </summary>
 /// <param name="keyName">Key name.</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 public void SetTimeStamp(string keyName, FirebaseParam query)
 {
     Copy(false).Child(keyName).SetValue(SERVER_VALUE_TIMESTAMP, true, query);
 }
Exemple #21
0
 /// <summary>
 /// Update value of a key on Firebase. Calls OnUpdateSuccess on success, OnUpdateFailed on failed.
 /// OnUpdateSuccess action contains the corresponding Firebase and the response Snapshot
 /// OnUpdateFailed action contains the error exception
 /// </summary>
 /// <param name="val">Update value</param>
 /// <param name="query">REST call parameters wrapped in FirebaseQuery class</param>
 /// <returns></returns>
 public void UpdateValue(Dictionary <string, object> val, FirebaseParam query)
 {
     root.StartCoroutine(JsonSerializeRoutine(val, query, UpdateValue));
 }