public async static void PostResource <T>(ObservableResource <T> resource, string url, Dictionary <string, string> body) { try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string token = await GetAccessToken(); if (!string.IsNullOrWhiteSpace(token)) { client.DefaultRequestHeaders.Add("client_id", Constants.client_id); client.DefaultRequestHeaders.Add("client_id", Constants.client_secret); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } var content = new StringContent(JsonConvert.SerializeObject(body)); using (var r = await client.PostAsync(new Uri(Constants.serverUrl + url), content)) { string result = await r.Content.ReadAsStringAsync(); if (string.IsNullOrWhiteSpace(result)) { return; } resource.Resource = Deserialize <T>(result); } } } catch (Exception e) { return; } //Eat network issues }
public async static void GetResource <T>(ObservableResource <T> resource, string url, bool refresh = false) { url = url.TrimEnd('/'); //adds consistency for cacheing values var webResource = await GetDBResource(url); if (webResource != null && refresh == false) { var resourceObject = Deserialize <T>(webResource.Response); resource.Resource = resourceObject; if (webResource.EOL < DateTime.Now) { var newWebResource = await DownloadResource(url); if (newWebResource != null && webResource.Response != newWebResource.Response) { resource.Resource = Deserialize <T>(newWebResource.Response); } } } else { webResource = await DownloadResource(url); if (webResource != null) { resource.Resource = Deserialize <T>(webResource.Response); } } }
private void BackgroundAction() { if (Attributes.ContainsKey("Resources") && !string.IsNullOrWhiteSpace(Attributes["Resources"])) { ObservableResource <MobilePage> observableResource = new ObservableResource <MobilePage>(); var resources = Attributes["Resources"].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); foreach (var resource in resources) { RockClient.GetResource(observableResource, resource); } } }
public static void RegisterFCMToken(string token = null) { if (string.IsNullOrWhiteSpace(token)) { if (App.Current.Properties.ContainsKey("FCMToken")) { token = App.Current.Properties["FCMToken"] as string; } } else { App.Current.Properties["FCMToken"] = token; } if (!string.IsNullOrWhiteSpace(token)) { ObservableResource <Dictionary <string, string> > observableResource = new ObservableResource <Dictionary <string, string> >(); var body = new Dictionary <string, string>() { { "Token", token } }; RockClient.PostResource(observableResource, "/api/avalanche/registerfcm", body); } }
public static void RequestNewRckipid() { rckipidResource = new ObservableResource <RckipidToken>(); rckipidResource.PropertyChanged += RckipidResource_HandleResponse; RockClient.GetResource(rckipidResource, "/api/avalanche/token", true); }
public BlockMessenger(int blockId) { _blockId = blockId; _observableResource = new ObservableResource <MobileBlockResponse>(); _observableResource.PropertyChanged += _observableResource_PropertyChanged; }