示例#1
0
        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
        }
示例#2
0
        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);
            }
        }
示例#5
0
 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;
 }