/// <summary>
        /// Initializes a new session and adds it to the dictionary. Does not begin streaming data.
        /// </summary>
        /// <param name="args"></param>
        /// <returns>A string container with the SessionKey or a failure message</returns>
        public static Container <string> InitializeSession(SessionInitializer args)
        {
            var validation = args.Validate();

            if (validation.Success)
            {
                // Construct new session from args
                var session = new Session(GetRandomKey().Data[0], args);
                // Create instrument on CHORDS and set session's instrument ID
                var createInstContainer = ChordsBot.CreateInstrument(session.SessionKey);
                if (!createInstContainer.Success)
                {
                    return(new Container <string>("", false, createInstContainer.Message));
                }
                int id = createInstContainer.Data[0];
                session.SetInstrument(id);
                // Map session streams to CHORDS variables
                var confVarsContainer = ChordsBot.ConfigureVariables(session);
                if (!confVarsContainer.Success)
                {
                    return(new Container <string>("", false, confVarsContainer.Message));
                }
                // Add session to dict
                SessionDict.Add(session.SessionKey, session);
                return(new Container <string>(session.SessionKey, true));
            }
            else
            {
                return(new Container <string>("", false, validation.Message));
            }
        }
Exemple #2
0
        public Container <string> InitializeSession
        (
            [FromUri] string netAlias,
            [FromUri] int[] streamIDs,
            [FromUri] string startTime   = null,
            [FromUri] string endTime     = null,
            [FromUri] string name        = "",
            [FromUri] string description = ""
        )
        {
            var args = new SessionInitializer(netAlias, streamIDs, startTime, endTime, name, description);

            return(SessionManager.InitializeSession(args));
        }
Exemple #3
0
        public static void Register(HttpConfiguration config)
        {
            //Session!
            SessionInitializer.Initialize();
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );
        }
        public void ValidateTest()
        {
            var sinit = new SessionInitializer();

            // Valid data - null endtime
            sinit.StreamIDs = new int[] { 1, 2, 3 };
            sinit.StartTime = DateTime.UtcNow.AddHours(-1).ToString("s");
            sinit.EndTime   = null;

            Assert.IsTrue(sinit.Validate().Success);

            // Valid - provided endtime
            sinit.EndTime = DateTime.UtcNow.ToString("s");

            Assert.IsTrue(sinit.Validate().Success);

            // Null IDs
            var ids = sinit.StreamIDs;

            sinit.StreamIDs = null;

            Assert.IsFalse(sinit.Validate().Success);

            // Null startTime
            var start = sinit.StartTime;

            sinit.StreamIDs = ids;
            sinit.StartTime = null;

            Assert.IsFalse(sinit.Validate().Success);

            // Invalid ID
            sinit.StartTime    = start;
            sinit.StreamIDs[0] = -1;

            Assert.IsFalse(sinit.Validate().Success);

            // StartTime > EndTime
            sinit.StreamIDs[0] = 1;
            sinit.StartTime    = DateTime.UtcNow.AddHours(1).ToString("s");

            Assert.IsFalse(sinit.Validate().Success);
        }