예제 #1
0
        public override async Task SetBalance(ProperHttpClient client)
        {
            if (accessToken == null || tokenExpires < DateTime.Now)
            {
                var refreshParams = new Dictionary <string, string>()
                {
                    { "grant_type", "refresh_token" },
                    { "client_id", ClientId },
                    { "client_secret", ClientSecret },
                    { "refresh_token", Token },
                    { "version_no", ClientVersion }
                };
                // Saņem jaunu sesijas kodu.
                var oauth = await client.PostAsync <OAuthToken>("https://app.zeltazivtina.lv/thin/rest/Auth", new HttpFormUrlEncodedContent(refreshParams));

                if (oauth == null)
                {
                    return;
                }
                System.Diagnostics.Debug.WriteLine("ZZ access token " + oauth.access_token);
                SetTokens(oauth);
            }

            var request = new HttpRequestMessage(HttpMethod.Get, new Uri("https://app.zeltazivtina.lv/thin/rest/getsummaryinfo"));

            request.Headers.Authorization = new HttpCredentialsHeaderValue("bearer", accessToken);
            var info = await client.SendAsync <ZZBalance>(request);

            if (info == null)
            {
                return;
            }
            this.Balance = new AccountBalance(info.Balance, info.BalanceExpirationDate);
            var balances = new List <IBalance>(4);

            if (info.AddonSecondsBalance.HasValue)
            {
                balances.Add(new VoiceBalance(TimeSpan.FromSeconds(info.AddonSecondsBalance.Value), info.AddonSecondsBalanceExpirationDate.Value));
            }
            if (info.AddonSmsBalanceExpirationDate.HasValue)
            {
                balances.Add(new SmsBalance(info.AddonSmsBalance.HasValue ? info.AddonSmsBalance.Value:int.MaxValue, info.AddonSmsBalanceExpirationDate.Value));
            }
            if (info.DataUsedToday != 0)
            {
                balances.Add(new DataBalance(info.DataUsedToday, DateTime.Today.AddSeconds(23 * 60 * 60 + 59 * 60 + 59), false));
            }
            else if (info.AddonDataBalance.HasValue)
            {
                balances.Add(new DataBalance(info.AddonDataBalance.Value, info.AddonDataBalanceExpirationDate.Value, true));
            }
            if (info.PricePlanList[0].ID != 102 && info.PricePlanList[0].ValidUntil.HasValue)
            {
                balances.Add(new PriceBalance(info.PricePlanList[0].Name, info.PricePlanList[0].ValidUntil.Value));
            }
            this.Balances    = balances;
            this.RefreshDate = DateTime.Now;
            Settings.PutAccountBalances(this);
            UpdateTile();
        }
예제 #2
0
        private static async Task <BiteResponse <TResult> > CallService <TResult>(ProperHttpClient client, int requestLength, object request)
        {
            var          sb = new StringBuilder(requestLength);
            StringWriter sw = new StringWriter(sb);

            using (JsonTextWriter jsonWriter = new JsonTextWriter(sw))
                client.Serializer.Serialize(jsonWriter, request);
            string json = sw.ToString();

            System.Diagnostics.Debug.WriteLine(json);

            var content = new HttpStringContent(json);

            content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
            var httpRequest = new HttpRequestMessage(HttpMethod.Post, new Uri("https://213.226.139.54/prest/android.json"));

            httpRequest.Content = content;
            var response = await client.SendAsync <BiteResponse <TResult> >(httpRequest);

            if (response != null && response.error != null)
            {
                System.Diagnostics.Debug.WriteLine("Bite error message: " + response.error.message);
                throw new Exception(response.error.message);
            }
            return(response);
        }