Exemplo n.º 1
0
        public static Brain DeSerializeData(string fileName)
        {
            try {
                if (!File.Exists(fileName))
                {
                    fileName.LogWarning("File not found: {0}", fileName);
                    return(null);
                }

                Brain retBrain = null;

                using (FileStream fileStream = new FileStream(fileName, FileMode.Open))
                {
                    retBrain = JsonObjects.Deserialize <Brain>(fileStream);
                }

                if (retBrain != null)
                {
                    retBrain.AfterDeserialization();
                    retBrain.AutosavePath            = fileName;
                    retBrain.AutosaveIntervalSeconds = 600;
                    return(retBrain);
                }
            } catch (Exception ex) {
                ex.LogError();
            }

            return(null);
        }
        public IHttpActionResult GetIndexWithoutAuthorization(string username, string ticker)
        {
            using (Models.ChallengeContext cc = new Models.ChallengeContext()) {
                Models.User user = cc.Users
                                   .FirstOrDefault(u => u.Username.Equals(username));

                if (user == null)
                {
                    return(NotFound());
                }
                else
                {
                    Models.Index index;
                    if (user.IsAdministrator)
                    {
                        // look for ticker in all indices
                        index = cc.Indices
                                .Where(i => i.Ticker.Equals(ticker))
                                .FirstOrDefault();
                    }
                    else
                    {
                        // look for ticker in user's indices
                        index = user.Indices
                                .Where(i => i.Ticker.Equals(ticker))
                                .FirstOrDefault();
                    }
                    if (index == null)
                    {
                        return(NotFound());
                    }
                    return(Json(JsonObjects.Jsonify(index)));
                }
            }
        }
        public IHttpActionResult AddUserIndicesWithoutAuthorization(long id, List <string> tickers)
        {
            using (Models.ChallengeContext cc = new Models.ChallengeContext()) {
                Models.User user = cc.Users
                                   .FirstOrDefault(u => u.UserId == id);
                if (user == null)
                {
                    return(BadRequest("user not found"));
                }
                else
                {
                    try {
                        List <Models.Index> indices = cc.Indices
                                                      .Where(i => tickers.Contains(i.Ticker))
                                                      .ToList();

                        foreach (Models.Index index in indices)
                        {
                            if (!user.Indices.Contains(index))
                            {
                                user.Indices.Add(index);
                            }
                        }

                        cc.SaveChanges();
                    } catch (Exception e) {
                        // terrible error handling
                        return(InternalServerError(e));
                    }
                }
                return(Json(JsonObjects.Jsonify(user.Indices.ToList())));
            }
        }
Exemplo n.º 4
0
        public void StringNullIfObjectWithoutProperty()
        {
            dynamic test          = new ExpandoObject();
            bool    isNullOrEmpty = JsonObjects.IsStringNullOrEmpty(test, "variableName");

            Assert.AreEqual(true, isNullOrEmpty);
        }
        public IHttpActionResult GetAllIndicesWithoutAuthorization(string username)
        {
            List <Models.Index> results;

            using (Models.ChallengeContext cc = new Models.ChallengeContext()) {
                Models.User user = cc.Users
                                   .FirstOrDefault(u => u.Username.Equals(username));

                if (user == null)
                {
                    results = new List <Models.Index>();
                }
                else
                {
                    if (user.IsAdministrator)
                    {
                        // return all indices
                        results = cc.Indices.ToList();
                    }
                    else
                    {
                        // return user's indices
                        results = user.Indices.ToList();
                    }
                }
            }
            return(Json(JsonObjects.Jsonify(results)));
        }
Exemplo n.º 6
0
        public void HasPropertyFalse()
        {
            dynamic test        = new ExpandoObject();
            bool    hasProperty = JsonObjects.HasProperty(test, "variableName");

            Assert.AreEqual(false, hasProperty);
        }
Exemplo n.º 7
0
        public void StringNotNullIfObjectWithString()
        {
            dynamic test = new ExpandoObject();

            test.variableName = "valid string";
            bool isNullOrEmpty = JsonObjects.IsStringNullOrEmpty(test, "variableName");

            Assert.AreEqual(false, isNullOrEmpty);
        }
Exemplo n.º 8
0
        public void HasPropertyTrue()
        {
            dynamic test = new ExpandoObject();

            test.variableName = "valid string";
            bool hasProperty = JsonObjects.HasProperty(test, "variableName");

            Assert.AreEqual(true, hasProperty);
        }
Exemplo n.º 9
0
    public void ReadObjects()
    {
        string filePath = Path.Combine(Application.streamingAssetsPath, file);

        if (File.Exists(filePath))
        {
            string dataAsJson = File.ReadAllText(filePath);
            data = JsonUtility.FromJson <JsonObjects>(dataAsJson);
        }
        else
        {
            Debug.LogError("Cannot load " + file + " data.");
        }
    }
        public IHttpActionResult ValidatePassword(dynamic loginInfo)
        {
            string username;
            string password;

            if (JsonObjects.IsStringNullOrEmpty(loginInfo, "username") ||
                JsonObjects.IsStringNullOrEmpty(loginInfo, "password")
                )
            {
                return(BadRequest(INVALID_LOGIN_DATA));
            }

            try {
                username = loginInfo.username;
                password = loginInfo.password;
            } catch (Exception) {
                return(BadRequest(INVALID_LOGIN_DATA));
            }

            // get user entity
            using (Models.ChallengeContext cc = new Models.ChallengeContext()) {
                Models.User user = cc.Users
                                   .FirstOrDefault((u) => u.Username.Equals(username));
                if (user == null)
                {
                    return(BadRequest(INVALID_USERNAME_OR_PASSWORD));
                }

                byte[] hash = GetEncodedPassword(password, user.Salt);

                // get stored hash in bytes
                byte[] bUserPassword = Convert.FromBase64String(user.Password);

                if (hash.SequenceEqual(bUserPassword))
                {
                    // create and return a token
                    string token = createToken(username);
                    return(Ok(token));
                }
                else
                {
                    return(BadRequest(INVALID_USERNAME_OR_PASSWORD));
                }
            }
        }
        public IHttpActionResult GetUsers()
        {
            using (Models.ChallengeContext cc = new Models.ChallengeContext()) {
                // username in Thread.CurrentPrincipal.Identity.Name
                Models.User adminUser = cc.Users
                                        .FirstOrDefault(u => u.Username.Equals(Thread.CurrentPrincipal.Identity.Name));

                if (adminUser == null || !adminUser.IsAdministrator)
                {
                    return(Unauthorized());
                }
                else
                {
                    List <Models.User> results = cc.Users.ToList();
                    return(Json(JsonObjects.Jsonify(results)));
                }
            }
        }
        private void ParseMarket()
        {
            // Get all market definition changes
            var mktDetails = JsonObjects.Where(j => j.mc.Any(m => m.marketDefinition != null)).OrderBy(j => j.pt).ToList();

            // Need to get accurate timestamps and reduction factors for when a non-runner was removed from a market
            // First grab all non-runner info, which will include duplicates
            var nonRunnersList = new List <KeyValuePair <long, Tuple <long, double> > >();

            foreach (var j in mktDetails)
            {
                foreach (var m in j.mc)
                {
                    foreach (var r in m.marketDefinition.runners)
                    {
                        if (r.removalDate > DateTime.MinValue)
                        {
                            nonRunnersList.Add(new KeyValuePair <long, Tuple <long, double> >(r.id, new Tuple <long, double>(j.pt, r.adjustmentFactor)));
                        }
                    }
                }
            }

            // Then convert to a dictionary with one entry per non-runner
            NonRunnerRemovalInfo = nonRunnersList
                                   .GroupBy(kvp => kvp.Key)
                                   .Select(grp => new { g = grp.OrderBy(x => x.Value.Item1).FirstOrDefault() })
                                   .ToDictionary(
                k => k.g.Key,
                v => new Tuple <DateTime, double>(
                    DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(Math.Round(v.g.Value.Item1 / 1000.0, 0))).UtcDateTime,
                    v.g.Value.Item2 / 100.0
                    ));


            // All other details we can get from the last market definition at the off
            var mktDetail = mktDetails.Last();

            // Timestamp
            var offTime = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(Math.Round(mktDetail.pt / 1000.0, 0))).UtcDateTime;

            // Extract the market definition details
            var mc = mktDetail.mc.Where(m => m.marketDefinition != null).First();

            // Market id
            var id = Convert.ToInt64(mc.id.Split('.')[1]);

            // Extract other details
            var mktDef                = mc.marketDefinition;
            var eventId               = Convert.ToInt64(mktDef.eventId);
            var countryCode           = mktDef.countryCode;
            var venue                 = mktDef.venue;
            var marketTime            = mktDef.marketTime;
            var marketName            = mktDef.name;
            var numberOfActiveRunners = mktDef.numberOfActiveRunners;
            var status                = mktDef.status;
            var runners               = mktDef.runners;
            var numRunners            = runners.Count;

            // Create a class for each selection
            foreach (var runner in runners)
            {
                var exchMktSel = new ExchangeMarketSelection()
                {
                    EventId       = eventId,
                    MarketId      = id,
                    MeetingDate   = marketTime.Date,
                    DayOfWeek     = marketTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)marketTime.DayOfWeek,
                    CountryCode   = countryCode,
                    Track         = venue,
                    RaceTime      = marketTime,
                    OffTime       = offTime,
                    MarketName    = marketName,
                    Entries       = numRunners,
                    Runners       = numberOfActiveRunners,
                    SelectionId   = runner.id,
                    SelectionName = runner.name,
                    Bsp           = runner.bsp
                };

                // Check if a non-runner
                if (runner.status == "REMOVED")
                {
                    exchMktSel.NonRunner       = true;
                    exchMktSel.RemovalTime     = NonRunnerRemovalInfo[runner.id].Item1;
                    exchMktSel.ReductionFactor = NonRunnerRemovalInfo[runner.id].Item2;
                }

                ExchangeSelections.Add(exchMktSel);
            }
        }