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()))); } }
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))); }
public void HasPropertyFalse() { dynamic test = new ExpandoObject(); bool hasProperty = JsonObjects.HasProperty(test, "variableName"); Assert.AreEqual(false, hasProperty); }
public void StringNotNullIfObjectWithString() { dynamic test = new ExpandoObject(); test.variableName = "valid string"; bool isNullOrEmpty = JsonObjects.IsStringNullOrEmpty(test, "variableName"); Assert.AreEqual(false, isNullOrEmpty); }
public void HasPropertyTrue() { dynamic test = new ExpandoObject(); test.variableName = "valid string"; bool hasProperty = JsonObjects.HasProperty(test, "variableName"); Assert.AreEqual(true, hasProperty); }
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); } }