public FirebaseResponse Execute()
        {
            Uri requestURI;

            if (FirebaseOperations.ValidateURI(this.Uri))
            {
                requestURI = new Uri(this.Uri);
            }
            else
            {
                return(new FirebaseResponse(false, "Given Firebase path is not a valid HTTP/S URL"));
            }
            string json = null;

            if (this.JSON != null)
            {
                if (!FirebaseOperations.CheckParseJSON(this.JSON, out json))
                {
                    return(new FirebaseResponse(false, string.Format("Invalid JSON : {0}", json)));
                }
            }

            Task <HttpResponseMessage> response = FirebaseOperations.RequestHelper(this.Method, requestURI, json);

            response.Wait();
            HttpResponseMessage result = response.Result;

            if (!result.IsSuccessStatusCode && result.StatusCode.Equals(HttpStatusCode.Unauthorized))
            {
                AccessAuthentication.RefreshToken();
                response = FirebaseOperations.RequestHelper(this.Method, requestURI, json);
                response.Wait();
                result = response.Result;
            }
            FirebaseResponse firebaseResponse = new FirebaseResponse()
            {
                HttpResponse = result,
                ErrorMessage = result.StatusCode.ToString() + " : " + result.ReasonPhrase,
                Success      = response.Result.IsSuccessStatusCode
            };

            if (this.Method.Equals(HttpMethod.Get))
            {
                Task <string> content = result.Content.ReadAsStringAsync();
                content.Wait();
                firebaseResponse.JSONContent = content.Result;
            }
            return(firebaseResponse);
        }
 public FirebaseOperations(string baseURL, string pathToJSONKey, params string[] scopes)
 {
     this.RootNode = baseURL;
     AccessAuthentication.GenenateAccessToken(pathToJSONKey, scopes);
 }