コード例 #1
0
    protected override ApiResultMessage HandleRequest(object args)
    {
        var    data = ((JObject)args).ToObject <ApiAuthenticationData>();
        Member user = null;

        if (!data.isFacebook)
        {
            //Standard login procedure
            TitanAuthService.Login(data.username, data.password, data.secondaryPassword, false);
            user = new Member(data.username);
        }
        else
        {
            //Facebook login procedure
            FacebookMember fbUser = new FacebookMember(data.username);
            TitanAuthService.LoginOrRegister(fbUser, false);
            user = TableHelper.SelectRows <Member>(TableHelper.MakeDictionary("FacebookOAuthId", fbUser.FacebookId))[0];
        }

        var token = ApiAccessToken.GetOrCreate(user.Id);

        return(new ApiResultMessage
        {
            success = true,
            message = String.Empty,
            data = new JObject(new JProperty("token", token.Token))
        });
    }
コード例 #2
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token     = ((JObject)args)["token"].ToString();
            int    featureId = (int)((JObject)args)["feature"];

            int userId         = ApiAccessToken.ValidateAndGetUserId(token);
            var purchaseOption = PurchaseOption.Get((PurchaseOption.Features)featureId);

            List <int> availableBalances = new List <int>();

            if (purchaseOption.PurchaseBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Purchase);
            }

            if (purchaseOption.CashBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Cash);
            }

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = availableBalances
            });
        }
コード例 #3
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            var token            = ((JObject)args)["token"].ToString();
            var membershipPackId = Convert.ToInt32(((JObject)args)["membershipPackId"]);
            var htmlResponse     = false;
            var balance          = (PurchaseBalances)Convert.ToInt32(((JObject)args)["balance"]);

            var userId        = ApiAccessToken.ValidateAndGetUserId(token);
            var pack          = new MembershipPack(membershipPackId);
            var User          = new Member(userId);
            var ResultMessage = U3501.UPGRADEOK;

            if (balance == PurchaseBalances.PaymentProcessor)
            {
                var PackPrice = pack.GetPrice(User);
                var bg        = new UpgradeMembershipButtonGenerator(User, PackPrice, pack);
                ResultMessage = GenerateHTMLButtons.GetPaymentButtons(bg);
                htmlResponse  = true;
            }
            else
            {
                Membership.BuyPack(User, pack, balance);
            }

            return(new ApiResultMessage
            {
                success = true,
                message = ResultMessage,
                messageIsHtml = htmlResponse,
                data = null
            });
        }
コード例 #4
0
ファイル: MembersController.cs プロジェクト: dovanduy/titan
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();

            int userId = ApiAccessToken.ValidateAndGetUserId(token);

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = new ApiMember(new Member(userId))
            });
        }
コード例 #5
0
ファイル: ApiAccessToken.cs プロジェクト: dovanduy/titan
    public static int ValidateAndGetUserId(string token)
    {
        var tokens = TableHelper.GetListFromRawQuery <ApiAccessToken>(String.Format(
                                                                          "SELECT * FROM ApiAccessTokens WHERE Token = '{0}' AND ExpiresDate >= '{1}'", token.Trim(), AppSettings.ServerTime.ToDBString()));

        if (tokens.Count == 0)
        {
            throw new MsgException("Invalid Access Token.");
        }

        ApiAccessToken targetToken = tokens[0];

        return(targetToken.UserId);
    }
コード例 #6
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();

            int                userId       = ApiAccessToken.ValidateAndGetUserId(token);
            Member             user         = new Member(userId);
            List <Member>      referrals    = user.GetDirectReferralsList();
            List <ApiReferral> apiReferrals = referrals.Select(elem => new ApiReferral(elem)).ToList();

            return(new ApiResultMessage
            {
                success = true,
                message = (apiReferrals.Count > 0)? String.Empty : L1.NODIRECTREFERRALS,
                data = apiReferrals
            });
        }
コード例 #7
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token  = ((JObject)args)["token"].ToString();
            bool   active = (bool)((JObject)args)["active"];

            int            userId   = ApiAccessToken.ValidateAndGetUserId(token);
            List <Jackpot> jackpots = JackpotManager.GetJackpots(active);

            List <ApiJackpot> apiJackpots = jackpots.Select(elem => new ApiJackpot(elem, userId)).ToList();

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = apiJackpots
            });
        }
コード例 #8
0
        public async Task <IActionResult> ExternalApi()
        {
            var auth0Client = _clientFactory.CreateClient();

            auth0Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var json = JsonSerializer.Serialize(new
            {
                client_id     = "eKbGojuUIR7zVUthZ2uMXkrHvosXkLhx",
                client_secret = Environment.GetEnvironmentVariable("auth0_sampleApi_client_secret"),
                audience      = "https://quickstarts/api",
                grant_type    = "client_credentials"
            });
            var    postBodyContent     = new StringContent(json, Encoding.UTF8, "application/json");
            string domain              = _config["Auth0:Domain"];
            var    accessTokenResponse = await auth0Client.PostAsync($"https://{domain}/oauth/token", postBodyContent);

            ApiAccessToken apiAccessToken = null;

            if (accessTokenResponse.IsSuccessStatusCode)
            {
                using var responseStream = await accessTokenResponse.Content.ReadAsStreamAsync();

                apiAccessToken = await JsonSerializer.DeserializeAsync <ApiAccessToken>(responseStream);
            }

            var client = _clientFactory.CreateClient();

            var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44318/api/private");

            request.Headers.Add("Accept", "application/json");
            request.Headers.Add("authorization", $"Bearer {apiAccessToken?.AccessToken}");

            object responseObject = "sample";

            using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

            if (response.IsSuccessStatusCode)
            {
                using var responseStream = await response.Content.ReadAsStreamAsync();

                responseObject = await JsonSerializer.DeserializeAsync <object>(responseStream);
            }

            return(Json(responseObject));
        }
コード例 #9
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();

            int    userId = ApiAccessToken.ValidateAndGetUserId(token);
            Member User   = new Member(userId);

            //Available payment processors
            List <ApiPaymentProcessor> PaymentProcessors = GenerateHTMLButtons.CashoutFromItems.
                                                           Select(elem => new ApiPaymentProcessor(elem.Text, elem.Value)).ToList();

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = new ApiWithdrawalData(User.GetUnpaidPayoutRequests(), PaymentProcessors, AppSettings.Registration.IsPINEnabled, User.MainBalance)
            });
        }
コード例 #10
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();

            int    userId = ApiAccessToken.ValidateAndGetUserId(token);
            Member User   = new Member(userId);

            //Available payment processors
            List <ApiPaymentProcessor> PaymentProcessors = GenerateHTMLButtons.TransferFromItems.
                                                           Select(elem => new ApiPaymentProcessor(elem.Text, elem.Value)).ToList();

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = new ApiTransferData(PaymentProcessors)
            });
        }
コード例 #11
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token = ((JObject)args)["token"].ToString();
            ApiJackpotTicketPurchaseData data = ((JObject)args).ToObject <ApiJackpotTicketPurchaseData>();

            int userId = ApiAccessToken.ValidateAndGetUserId(token);

            if (!AppSettings.TitanFeatures.MoneyJackpotEnabled)
            {
                throw new MsgException("Jackpot are disabled.");
            }

            Member  user    = new Member(userId);
            Jackpot jackpot = new Jackpot(data.jackpotId);

            if (data.tickets <= 0)
            {
                throw new MsgException(U5003.INVALIDNUMBEROFTICKETS);
            }

            PurchaseBalances balance       = (PurchaseBalances)data.balance;
            BalanceType      targetBalance = PurchaseOption.GetBalanceType(balance);

            var purchaseOption = PurchaseOption.Get(PurchaseOption.Features.Jackpot);

            if (balance == PurchaseBalances.Purchase && !purchaseOption.PurchaseBalanceEnabled)
            {
                throw new MsgException("You can't purchase with that balance.");
            }

            if (balance == PurchaseBalances.Cash && !purchaseOption.CashBalanceEnabled)
            {
                throw new MsgException("You can't purchase with that balance.");
            }

            JackpotManager.BuyTickets(jackpot, user, data.tickets, targetBalance);

            return(new ApiResultMessage
            {
                success = true,
                message = U5003.TICKETPURCHASESUCCESS.Replace("%n%", data.tickets.ToString()),
                data = null
            });
        }
コード例 #12
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string  token          = ((JObject)args)["token"].ToString();
            int     pin            = Convert.ToInt32(((JObject)args)["pin"]);
            decimal amount         = Convert.ToDecimal(((JObject)args)["amount"]);
            string  processorValue = ((JObject)args)["processor"].ToString();

            int    userId = ApiAccessToken.ValidateAndGetUserId(token);
            Member User   = new Member(userId);

            User.ValidatePIN(pin.ToString());

            Money Amount = new Money(amount);

            Amount = Money.Parse(Amount.ToShortClearString());

            var userAccountAddress = String.Empty;

            try
            {
                var CustomProcessor = new CustomPayoutProcessor(int.Parse(processorValue));
                userAccountAddress = User.GetPaymentAddress(CustomProcessor.Id);
            }
            catch (Exception)
            {
                var selectedProcessor            = processorValue;
                PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor);
                userAccountAddress = User.GetPaymentAddress(targetprocessor);
            }

            //Lets process to cashout
            PayoutManager Manager = new PayoutManager(User, Amount, processorValue,
                                                      CustomPayoutProcessor.IsCustomPayoutProcessor(processorValue), CustomPayoutProcessor.GetCustomPayoutProcessorId(processorValue), userAccountAddress);

            string successMessage = Manager.TryMakePayout();

            return(new ApiResultMessage
            {
                success = true,
                message = successMessage,
                data = null
            });
        }
コード例 #13
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token  = ((JObject)args)["token"].ToString();
            int    userId = ApiAccessToken.ValidateAndGetUserId(token);

            Member User           = new Member(userId);
            Money  FirstPackPrice = Money.Zero;

            //Available Balances
            PurchaseOption purchaseOption    = PurchaseOption.Get(PurchaseOption.Features.Upgrade);
            List <int>     availableBalances = new List <int>();

            if (purchaseOption.PurchaseBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Purchase);
            }

            if (purchaseOption.CashBalanceEnabled)
            {
                availableBalances.Add((int)PurchaseBalances.Cash);
            }

            //Always allow to upgrade via payment processor
            availableBalances.Add((int)PurchaseBalances.PaymentProcessor);

            //List of memberships
            var activeMemberships = Membership.GetActiveMembershipsDataTables();

            return(new ApiResultMessage
            {
                success = true,
                message = String.Empty,
                data = new ApiUpgradeData
                {
                    warningMessage = UpgradePageHelper.GetWarningMessage(User),
                    availableMembershipPacks = MembershipPack.AllPurchaseablePacks.Select(elem => new ApiMembershipPack(User, elem)).ToList(),
                    availableBalances = availableBalances,
                    memberships = activeMemberships.Rows.Cast <DataRow>().Select(elem => new ApiMembership(elem)).ToList(),
                    balances = ApiMember.GetBalances(User)
                }
            });
        }
コード例 #14
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string token  = ((JObject)args)["token"].ToString();
            string from   = ((JObject)args)["from"].ToString();
            string to     = ((JObject)args)["to"].ToString();
            Money  amount = new Money(Convert.ToDecimal(((JObject)args)["amount"]));

            bool   htmlResponse = false;
            int    userId       = ApiAccessToken.ValidateAndGetUserId(token);
            Member User         = new Member(userId);

            string ResultMessage = TransferHelper.TryInvokeTransfer(from, to, amount, User, ref htmlResponse);

            return(new ApiResultMessage
            {
                success = true,
                message = ResultMessage,
                messageIsHtml = htmlResponse,
                data = null
            });
        }
コード例 #15
0
ファイル: ApiAccessToken.cs プロジェクト: dovanduy/titan
    public static ApiAccessToken GetOrCreate(int userId)
    {
        var tokens = TableHelper.GetListFromRawQuery <ApiAccessToken>(String.Format(
                                                                          "SELECT * FROM ApiAccessTokens WHERE UserId = {0} AND ExpiresDate >= '{1}'", userId, AppSettings.ServerTime.ToDBString()));

        ApiAccessToken result = null;

        if (tokens.Count > 0)
        {
            result = tokens[0];
        }
        else
        {
            result             = new ApiAccessToken();
            result.UserId      = userId;
            result.ExpiresDate = DateTime.Now.AddDays(7);
            result.Token       = HashingManager.SHA512HMAC(HashingManager.GenerateMD5(userId + DateTime.Now.ToString()),
                                                           HashingManager.SHA256(AppSettings.Offerwalls.UniversalHandlerPassword + userId + DateTime.Now));
            result.Save();
        }

        return(result);
    }
コード例 #16
0
    public static void ProceedDailyTasks()
    {
        log = new StringBuilder();

        var Entry = new CronEntry();

        Entry.Date = DateTime.Now;

        try
        {
            Log("Starting CRON procedure");

            //Make sure it runs only once
            if (CanRun())
            {
                AppSettings.IsOffline        = true;
                AppSettings.Misc.LastCRONRun = DateTime.Now;
                AppSettings.Misc.Save();
                stime = DateTime.Now;

                AntiCheatSystem.CRON();
                Log("OK [1] AntiCheatSystem. Elapsed time: " + GetTimeString(stime));

                RentReferralsSystem.CRON();
                Log("OK [2] RentedReferralsSystem. Elapsed time: " + GetTimeString(stime));

                StatisticsManager.CRON();
                Log("OK [3a] StatisticsManager. Elapsed time: " + GetTimeString(stime));

                //MUST BE RUN BEFORE MEMBERMANAGER.CRON() !!!
                CustomFeaturesManager.CRON();
                Log("OK [3b] CustomFeaturesManager. Elapsed time: " + GetTimeString(stime));

                MemberManager.CRON();
                Log("OK [4] Member. Elapsed time: " + GetTimeString(stime));

                SyncedNetworkFactory.SynchronizeAll();
                Log("OK [5] CPA Offers. Elapsed time: " + GetTimeString(stime));

                AppSettings.Payments.CRON();
                Log("OK [6] Payments. Elapsed time: " + GetTimeString(stime));

                ShoutboxManager.CRON();
                Log("OK [7] Shoutbox. Elapsed time: " + GetTimeString(stime));

                CLPManager.CRON();
                Log("OK [8] CLPManager. Elapsed time: " + GetTimeString(stime));

                BannerAuctionManager.CRON();
                Log("OK [10] BannerAuctionManager. Elapsed time: " + GetTimeString(stime));

                PointsLockingManager.CRON();
                Log("OK [11] PointsLockingManager. Elapsed time: " + GetTimeString(stime));

                DBArchiver.CRON();
                Log("OK [12] DBArchiver. Elapsed time: " + GetTimeString(stime));

                RevenueSharesDistributionManager.CRON();
                Log("OK [13] RevenueSharesDistributionManager. Elapsed time: " + GetTimeString(stime));

                CreditLineManager.CRON();
                Log("OK [14] CreditLineManager. Elapsed time: " + GetTimeString(stime));

                PoolRotatorManager.CRON();
                Log("OK [15] PoolRotatorManager. Elapsed time: " + GetTimeString(stime));

                JackpotManager.CRON();
                Log("OK [16] JackpotManager. Elapsed time: " + GetTimeString(stime));

                TrafficExchangeManager.CRON();
                Log("OK [17] TrafficExchangeManager. Elapsed time: " + GetTimeString(stime));

                DailyPoolManager.CRON();
                Log("OK [18] DailyPoolManager. Elapsed time: " + GetTimeString(stime));

                //Matrix
                MatrixBase matrix = MatrixFactory.GetMatrix();
                if (matrix != null)
                {
                    matrix.CRON();
                }
                Log("OK [19] MatrixBase. Elapsed time: " + GetTimeString(stime));

                ApiAccessToken.CRON();
                Log("OK [20] ApiAccessToken. Elapsed time: " + GetTimeString(stime));

                InvestmentPlatformManager.CRON();
                Log("OK [21] InvestmentPlatformManager. Elapsed time: " + GetTimeString(stime));

                MarketplaceBalanceLogManager.CRON();
                Log("OK [22] MarketplaceBalanceLogManager. Elapsed time: " + GetTimeString(stime));

                MiniVideoManager.CRON();
                Log("OK [23] MiniVideoManager. Elapsed time: " + GetTimeString(stime));

                PaidToPromoteManager.CRON();
                Log("OK [24] PaidToPromoteManager. Elapsed time: " + GetTimeString(stime));

                RollDiceLotteryManager.CRON();
                Log("OK [25] RollDiceLotteryManager. Elapsed time: " + GetTimeString(stime));

                WalletManager.CRON();
                Log("OK [26] WalletManager. Elapsed time: " + GetTimeString(stime));

                NewsManager.CRON();
                Log("OK [27] NewsManager. Elapsed time: " + GetTimeString(stime));


                Entry.Type = 1;
                Entry.Text = "Procedure completed successfully (27/27 100%) after " + GetTimeString(stime);
            }
            else
            {
                Entry.Type = 2;
                Entry.Text = "Procedure prevented from multiple run";
            }
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
            Log("Fatal error (exception thrown)..");
            Entry.Type = 3;
            Entry.Text = "Fatal error during procedure execution. Check logs for more information";
            Mailer.SendCRONFailureMessage();
        }
        finally
        {
            ErrorLogger.Log(log.ToString(), LogType.CRON);
            AppSettings.IsOffline = false;
            Entry.Save();
            HttpContext.Current.Response.Write(Entry.Text);
        }
    }