Example #1
0
        public async Task <TokenInfoModel> GetTokenInfo(string userToken)
        {
            if (string.IsNullOrEmpty(userToken))
            {
                throw new ArgumentNullException(nameof(userToken));
            }

            var path            = $"debug_token";
            var queryParameters = new Dictionary <string, string> {
                ["input_token"] = userToken
            };
            var data = await RequestService.GetAsync(path, queryParameters, appendToken : true);

            var jObject = JObject.Parse(data)["data"];

            var issuedAt  = (int?)jObject["issued_at"];
            var tokenInfo = new TokenInfoModel
            {
                TokenPortion = $"{userToken.Substring(0, 10)}...",
                RequestedUtc = issuedAt.HasValue ? DotnetExtensions.FromEpochTime(issuedAt.Value) : default(DateTime?),
                ExpiresUtc   = DotnetExtensions.FromEpochTime((int)jObject["expires_at"]),
            };

            return(tokenInfo);
        }
Example #2
0
        public TokenListModel ListToken()
        {
            var result = new TokenListModel();

            var list = GetAllTokenCodes();

            if (!list.Any())
            {
                return(result);
            }

            var codes    = list.Select(m => m.Code).Distinct().ToList();
            var accounts = DbContext.GetDbSet <Account>()
                           .Where(m => codes.Contains(m.Name))
                           .ToList();

            var abiSerializationProvider = new AbiSerializationProvider();

            list.ForEach(item =>
            {
                var account = accounts
                              .Where(m => m.Name == item.Code && m.BlockNum <= item.BlockNum)
                              .OrderByDescending(m => m.BlockNum)
                              .First();
                var abi      = abiSerializationProvider.DeserializePackedAbi(account.Abi);
                var abiTable = abi.tables.First(t => t.name == item.Table);

                var data  = abiSerializationProvider.DeserializeStructData(abiTable.type, item.Value, abi);
                var model = new TokenInfoModel
                {
                    Contract = item.Code,
                    Data     = data
                };
                if (!ConfigDataKey.FilterTokenSymbol.Contains(model.TokenName))
                {
                    result.Lists.Add(model);
                }
            });

            result.TotalTokenCount = result.Lists.Count;
            return(result);
        }
Example #3
0
        public async Task <TokenInfoModel> GetLongToken(string appId, string appSecret, string userToken)
        {
            var path            = $"/oauth/access_token";
            var queryParameters = new Dictionary <string, string>
            {
                ["grant_type"]        = "fb_exchange_token",
                ["client_id"]         = appId,
                ["client_secret"]     = appSecret,
                ["fb_exchange_token"] = userToken,
            };
            var data = await RequestService.GetAsync(path, queryParameters, appendToken : false);

            var jObject   = JObject.Parse(data);
            var utcNow    = DateTime.UtcNow;
            var tokenInfo = new TokenInfoModel
            {
                Token        = (string)jObject["access_token"],
                RequestedUtc = utcNow,
                ExpiresUtc   = utcNow.AddSeconds((int)jObject["expires_in"])
            };

            return(tokenInfo);
        }