コード例 #1
0
        static public void Main()
        {
            // Configure API key authorization: api_key
            Configuration.Default.AddApiKey("x-api-key", ExampleConstants.AWS_API_KEY);

            var stockx = new StockXApi();

            stockx.Configuration.BasePath = ExampleConstants.STOCKX_ENDPOINT;

            var login = new LoginRequest(ExampleConstants.STOCKX_USERNAME, ExampleConstants.STOCKX_PASSWORD);

            try
            {
                // Login and fetch the jwt header for authentication use in the request
                ApiResponse <LoginResponse> result = stockx.LoginWithHttpInfo(login);
                var jwt = result.Headers[ExampleConstants.JWT_HEADER];

                stockx.Configuration.DefaultHeader["jwt-authorization"] = jwt;

                // Find a product with search
                var search = stockx.Search("Jordan Retro Black Cat");

                // Lookup the product's data by its search id
                var firstResultStyle = search.Hits[0].StyleId;

                var productInfo = stockx.LookupProduct(firstResultStyle, "11");

                // Get the market data (highest bids, lowest asks, etc) about the product
                var id          = productInfo.Data[0].Id;
                var productUuid = productInfo.Data[0].Attributes.ProductUuid;

                var marketData = stockx.GetProductMarketData(id, productUuid);

                // Get the highest bid and increment it
                var highestBid = marketData.Market.HighestBid;
                highestBid++;

                // Create a portfolio item request with a higher bid
                var item = new PortfolioRequestPortfolioItem();
                item.Amount          = highestBid.ToString();
                item.SkuUuid         = "bae25b67-a721-4f57-ad5a-79973c7d0a5c";
                item.MatchedWithDate = "2018-12-12T05:00:00+0000";
                item.ExpiresAt       = "2018-12-12T12:39:07+00:00";

                var request = new PortfolioRequest();
                request.PortfolioItem = item;
                request.Customer      = result.Data.Customer;
                request.Timezone      = "America/Detroit";

                // Submit the bid
                var bidResp = stockx.NewPortfolioBid(request);

                Console.WriteLine(bidResp);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Console.WriteLine("Exception when creating new highest bid: " + e.Message);
            }
        }
コード例 #2
0
ファイル: PortfolioProvider.cs プロジェクト: Cytra/StocksApi
        public async Task AddStock(PortfolioRequest payload)
        {
            var request = new HttpRequestMessage(HttpMethod.Post, $"/api/Portfolio/Stock");

            request.Content    = JsonContent.Create(payload);
            using var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
        }
コード例 #3
0
 private async Task <CoinsVM> GenerateCoinsVM(PortfolioRequest request)
 {
     return(new CoinsVM((await GetCoinsBasedOnPortfolioId(request)).ToCoinDisplay(request.Currency))
     {
         DisplayCurrency = request.Currency,
         ViewOtherUser = request.ViewOtherUser
     });
 }
コード例 #4
0
ファイル: PortfolioProvider.cs プロジェクト: Cytra/StocksApi
        public async Task AddStock(PortfolioRequest request)
        {
            var dbItem = _mapper.Map <PortfolioEntity>(request);

            dbItem.StockId = Guid.NewGuid();
            dbItem.Created = DateTimeOffset.Now;
            await _stocksRepository.AddStockItem(dbItem);
        }
コード例 #5
0
ファイル: EquationAdapter.cs プロジェクト: fdagher/MyProjects
        public PortfolioResponse PortfolioInquiry(PortfolioRequest request)
        {
            PortfolioResponse response        = new PortfolioResponse();
            string            requestMessage  = request.Serialize();
            MQAdapter         mqAdapter       = new MQAdapter(_adapter);
            string            responseMessage = mqAdapter.SendMQRequestSync(requestMessage);

            response.DeSerialize(responseMessage);
            return(response);
        }
コード例 #6
0
        public async Task <PartialViewResult> GetAllCoinsFromPortfolio(PortfolioRequest request)
        {
            if (!CurrentUser.HasPortfolio(request.PortfolioID))
            {
                return(GeneratePartialViewError(Lang.PortfolioNotFound));
            }

            CoinsVM vm = await GenerateCoinsVM(request);

            return(PartialView("_FullCoins", vm));
        }
コード例 #7
0
        private async Task <List <CryptoCoin> > GetCoinsBasedOnPortfolioId(PortfolioRequest request)
        {
            // Only let ViewPortfolio viewers allow getting that user's coins. Portfolio(public) would have been validated by this point.
            if (!request.ViewOtherUser && !CurrentUser.HasPortfolio(request.PortfolioID))
            {
                return(new List <CryptoCoin>());
            }

            List <CryptoCoin> coins = await CryptoLogic.GetAllUserCoinsByPortfolioIdAsync(request.PortfolioID);

            return(await UpdateCoinsCurrentPrice(coins, request.UseCombinedDisplay, request.Currency));
        }
コード例 #8
0
        static public void Main()
        {
            // Configure API key authorization: api_key
            Configuration.Default.AddApiKey("x-api-key", ExampleConstants.AWS_API_KEY);

            var stockx = new StockXApi();

            stockx.Configuration.BasePath = ExampleConstants.STOCKX_ENDPOINT;

            var login = new LoginRequest(ExampleConstants.STOCKX_USERNAME, ExampleConstants.STOCKX_PASSWORD);

            try
            {
                // Login and fetch the jwt header for authentication use in the request
                ApiResponse <LoginResponse> result = stockx.LoginWithHttpInfo(login);
                var jwt = result.Headers[ExampleConstants.JWT_HEADER];

                stockx.Configuration.DefaultHeader["jwt-authorization"] = jwt;

                var item = new PortfolioRequestPortfolioItem();
                item.Amount          = "25";
                item.SkuUuid         = "bae25b67-a721-4f57-ad5a-79973c7d0a5c";
                item.MatchedWithDate = "2018-12-12T05:00:00+0000";
                item.ExpiresAt       = "2018-12-12T12:39:07+00:00";

                var request = new PortfolioRequest();
                request.PortfolioItem = item;
                request.Customer      = result.Data.Customer;
                request.Timezone      = "America/Detroit";

                // Create a new portfolio bid
                var bidResp = stockx.NewPortfolioBid(request);

                // Print the result of the bid call
                Console.WriteLine(bidResp);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                Console.WriteLine("Exception when calling StockXApi.NewPortfolioBid: " + e.Message);
            }
        }
コード例 #9
0
        protected virtual IActionResult Portfolio(PortfolioRequest portfolioRequest)
        {
            if (portfolioRequest == null || portfolioRequest.Distribution == null)
            {
                return(BadRequest());
            }

            Auctus.DomainObjects.Portfolio.Portfolio portfolio;
            try
            {
                portfolio = PortfolioServices.CreatePortfolio(GetUser(), portfolioRequest.AdvisorId, portfolioRequest.Price, portfolioRequest.Name,
                                                              portfolioRequest.Description, portfolioRequest.ProjectionValue, portfolioRequest.OptimisticProjection, portfolioRequest.PessimisticProjection,
                                                              portfolioRequest.Distribution.ToDictionary(c => c.AssetId, c => c.Percentage));
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok(new { id = portfolio.Id }));
        }
コード例 #10
0
        public IHttpActionResult PortfolioInquiry(string customerNo, string country, string currency)
        {
            DateTime startTime = DateTime.Now;

            string environment = System.Configuration.ConfigurationManager.AppSettings["Environment." + country];

            EquationAdapter             adapter    = new EquationAdapter();
            Dictionary <string, string> dictionary = this.AccountTypes(country);

            PortfolioRequest request = new PortfolioRequest();

            request.TransactionHeader = new TransactionHeader(country, environment, "1", 1);
            request.CustomerNo        = customerNo;
            request.Currency          = currency;
            request.MarketSegment     = "00";
            request.ServicePackage    = "00";
            PortfolioResponse response = adapter.PortfolioInquiry(request);

            response.ResponseTime = DateTime.Now.Subtract(startTime).TotalMilliseconds;

            if (response.ResponseCode == Constants.Equation_Success)
            {
                foreach (Account account in response.Accounts)
                {
                    if (dictionary.ContainsKey(account.Type))
                    {
                        account.Description = dictionary[account.Type].ToString();
                    }
                    else
                    {
                        account.Description = account.Type;
                    }
                }
                return(Json(response));
            }
            else
            {
                throw new HttpRequestException(response.ResponseDescription);
            }
        }
コード例 #11
0
        private async Task <PortfolioVM> GeneratePortfolioVM(PortfolioRequest request)
        {
            PortfolioVM vm = new PortfolioVM
            {
                ViewOtherUser = request.ViewOtherUser,
                ViewUser      = request.ViewUser,
                Portfolios    = request.ViewOtherUser ? request.ViewUser?.Portfolios : CurrentUser.Portfolios
            };

            if (request.ViewOtherUser && request.ViewUser != null)
            {
                vm.SelectedPortfolio = request.PortfolioID = request.ViewUser.SelectedPortfolioID;
                vm.CoinsVM           = await GenerateCoinsVM(request);
            }
            else if (CurrentUser.IsValidUser() || CurrentUser.IsDemoUser())
            {
                request.PortfolioID = vm.Portfolios.FirstOrDefault(x => x.IsDefault)?.PortfolioId ?? vm.Portfolios.First().PortfolioId;
                vm.CoinsVM          = await GenerateCoinsVM(request);
            }

            return(vm);
        }
コード例 #12
0
        public async Task <PartialViewResult> LoadPortfolioViewMode(PortfolioRequest request, string username, string portfolioName, bool coinsOnly = false)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(portfolioName))
            {
                return(null);
            }

            request.ViewUser = new ViewUser
            {
                Username      = username,
                PortfolioName = portfolioName,
            };
            request.ViewUser.PortfolioName = Utilities.FormatPortfolioName(request.ViewUser.PortfolioName);
            request.ViewOtherUser          = true;

            ResultsPair <ViewUser> viewUserResult = AuthorizationLogic.AuthorizeViewUser(request.ViewUser.Username, request.ViewUser.PortfolioName);

            if (!viewUserResult.Result.IsSuccess)
            {
                return(GeneratePartialViewError(viewUserResult.Result.Message));
            }

            request.ViewUser = viewUserResult.Value;

            if (coinsOnly)
            {
                request.PortfolioID = request.ViewUser.SelectedPortfolioID;
                CoinsVM coinsVM = await GenerateCoinsVM(request);

                return(PartialView("_FullCoins", coinsVM));
            }

            PortfolioVM vm = await GeneratePortfolioVM(request);

            return(PartialView("_Portfolio", vm));
        }
コード例 #13
0
        public async Task <IActionResult> Stock(PortfolioRequest request)
        {
            await _portfolioProvider.AddStock(request);

            return(Ok());
        }
コード例 #14
0
 public new IActionResult Portfolio([FromBody] PortfolioRequest portfolioRequest)
 {
     return(base.Portfolio(portfolioRequest));
 }