public async Task <T> GetAsync(Expression <Func <T, bool> > predicate) { T obj; HttpClient client = new HttpClient(); var response = await client.GetAsync(FirebaseDatabase.DatabaseURL).ConfigureAwait(false); var responseData = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (response.IsSuccessStatusCode) { var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; obj = JsonConvert.DeserializeObject <T>(responseData, settings); Collection.Upsert(obj); return(obj); } else { obj = Collection.FindOne(predicate); if (obj == null) { if (!response.IsSuccessStatusCode) { throw FireFormsException.from(response.StatusCode); } } return(obj); } }
public async Task <FirebaseUser> RefreshToken(FirebaseUser firebaseUser) { HttpClient client = new HttpClient(); var nvc = new List <KeyValuePair <string, string> >(); nvc.Add(new KeyValuePair <string, string>("grant_type", "refresh_token")); nvc.Add(new KeyValuePair <string, string>("refresh_token", firebaseUser.refreshToken)); var response = await client.PostAsync(RefreshTokenUrl, new FormUrlEncodedContent(nvc)).ConfigureAwait(false); var responseData = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (responseData == "null") { throw new Exception(response.StatusCode.ToString()); } if (!response.IsSuccessStatusCode) { throw FireFormsException.from(response.StatusCode); } var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; var obj = JsonConvert.DeserializeObject <Dictionary <string, string> >(responseData, settings); firebaseUser.expiresIn = obj["expires_in"]; firebaseUser.refreshToken = obj["refresh_token"]; firebaseUser.idToken = obj["id_token"]; if (Collection != null) { Upsert(firebaseUser); } return(firebaseUser); }
public async Task DeleteAsync(Expression <Func <T, bool> > predicate) { var mobj = BsonMapper.Global.ToDocument <T>(Collection.FindOne(predicate)); var link = FirebaseDatabase.FirebaseUser.idToken == null ? $"{FirebaseDatabase.DatabaseURL}/{FirebaseDatabase.Target}/{mobj["_id"].AsString}.json" : $"{FirebaseDatabase.DatabaseURL}/{FirebaseDatabase.Target}/{mobj["_id"].AsString}.json?auth={FirebaseDatabase.FirebaseUser.idToken}"; HttpClient client = new HttpClient(); var response = await client.DeleteAsync(link).ConfigureAwait(false); if (response.IsSuccessStatusCode) { Collection.Delete(mobj["_id"].AsString); } else { throw FireFormsException.from(response.StatusCode); } }
public async Task <StatusEnum> UpsertAsync(T obj) { Collection.Upsert(obj); var mobj = BsonMapper.Global.ToDocument <T>(obj); HttpClient client = new HttpClient(); var link = FirebaseDatabase.FirebaseUser.idToken == null ? $"{FirebaseDatabase.DatabaseURL}/{FirebaseDatabase.Target}/{mobj["_id"].AsString}.json" : $"{FirebaseDatabase.DatabaseURL}/{FirebaseDatabase.Target}/{mobj["_id"].AsString}.json?auth={FirebaseDatabase.FirebaseUser.idToken}"; var response = await client.PutAsync(link, new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")).ConfigureAwait(false); if (response.IsSuccessStatusCode) { return(StatusEnum.ALLSUCCESS); } else { throw FireFormsException.from(response.StatusCode); } }
public async Task <IEnumerable <T> > GetAllAsync() { Dictionary <string, T> obj; IEnumerable <T> values; HttpClient client = new HttpClient(); try { var response = await client.GetAsync(FirebaseDatabase.FullUri).ConfigureAwait(false); var responseData = await response.Content.ReadAsStringAsync().ConfigureAwait(false); if (responseData == "null") { return(null); } if (!response.IsSuccessStatusCode) { throw FireFormsException.from(response.StatusCode); } var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; try { obj = JsonConvert.DeserializeObject <Dictionary <string, T> >(responseData, settings); values = obj.Values; } catch (JsonSerializationException) { try { var arr = JsonConvert.DeserializeObject <IEnumerable <T> >(responseData, settings); values = arr.Where(x => x != null).ToArray <T>(); } catch (JsonSerializationException) { var arr = JsonConvert.DeserializeObject <T>(responseData, settings); values = new[] { arr }; } } try { Collection.Upsert(values); } catch (Exception) { throw; } return(values); } catch (UnauthorizedException) { throw; } catch (NotFoundException) { values = Collection.FindAll(); if (values == null) { throw FireFormsException.from(System.Net.HttpStatusCode.NotFound); } return(values); } catch (InternalServerErrorException) { throw; } catch (PreconditionFailedException) { throw; } catch (BadRequestException) { throw; } catch (Exception) { throw; } }