예제 #1
0
    public async Task <IReadOnlyList <PatronInfo> > GetPatronInfo(IReadOnlyList <FantasyCriticUserWithExternalLogins> patreonUsers)
    {
        _logger.Info("Getting patreon users.");
        Dictionary <string, FantasyCriticUser> patreonUserDictionary = new Dictionary <string, FantasyCriticUser>();

        foreach (var patreonUser in patreonUsers)
        {
            var patreonLogin = patreonUser.UserLogins.SingleOrDefault(x => x.LoginProvider == "Patreon");
            if (patreonLogin == null)
            {
                continue;
            }

            patreonUserDictionary.Add(patreonLogin.ProviderKey, patreonUser.User);
        }
        _logger.Info($"Found {patreonUserDictionary.Count} patreon users.");

        List <PatronInfo> patronInfo = new List <PatronInfo>();

        using var client = new PatreonClient(_accessToken, _refreshToken, _clientId);
        _logger.Info("Making patreon request.");
        var campaignMembers = await client.GetCampaignMembersAsync(_campaignID, Includes.CurrentlyEntitledTiers | Includes.User);

        if (campaignMembers != null)
        {
            _logger.Info("Patreon request successful.");
            await foreach (var member in campaignMembers)
            {
                if (!patreonUserDictionary.TryGetValue(member.Relationships.User.Id, out var fantasyCriticUser))
                {
                    continue;
                }

                bool   isPlusUser  = member.Relationships.Tiers.Any(x => x.Title == "Fantasy Critic Plus");
                bool   isDonorUser = member.Relationships.Tiers.Any(x => x.Title == "Fantasy Critic Donor");
                string?donorName   = null;
                if (isDonorUser)
                {
                    isPlusUser = true;
                    donorName  = member.Relationships.User.FullName;
                    if (fantasyCriticUser.PatreonDonorNameOverride is not null)
                    {
                        donorName = fantasyCriticUser.PatreonDonorNameOverride;
                    }
                }

                patronInfo.Add(new PatronInfo(fantasyCriticUser, isPlusUser, donorName));
            }
        }

        return(patronInfo);
    }
예제 #2
0
        public async void Apply()
        {
            var p = new PatreonAPI.PatreonAPI(ACCESS_TOKEN);
            //var data2 = p.GetMembers();
            var data = p.fetchCampaignMembers(CAMPAIGN_ID, 100);


            var patreon = new PatreonClient(ACCESS_TOKEN);
            //var pledges = await patreon.GetCampaignPledges(CAMPAIGN_ID);

            var members = await patreon.GetCampaignMembers(CAMPAIGN_ID);

            //var campaign = await patreon.GetCampaign(CAMPAIGN_ID);
        }
예제 #3
0
    public async Task <bool> UserIsPlusUser(string patreonProviderID)
    {
        using var client = new PatreonClient(_accessToken, _refreshToken, _clientId);
        var campaignMembers = await client.GetCampaignMembersAsync(_campaignID, Includes.CurrentlyEntitledTiers | Includes.User);

        if (campaignMembers != null)
        {
            await foreach (var member in campaignMembers)
            {
                if (member.Relationships.User.Id != patreonProviderID)
                {
                    continue;
                }

                bool isPlusUser = member.Relationships.Tiers.Any(x => x.Title == "Fantasy Critic Plus");
                return(isPlusUser);
            }
        }

        return(false);
    }