Ejemplo n.º 1
0
        public JObject GetWorkflow(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessWorkflow(accessKey, id))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            return(WorkflowRepository.Get(id).ToJObject());
        }
Ejemplo n.º 2
0
        public Schedule CreateSchedule([FromBody] JObject json, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminSchedules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var startTime = json["start_time"]?.ToString();

            if (string.IsNullOrEmpty(startTime))
            {
                throw new Exception("start_time is required");
            }

            startTime = TimeSpan.Parse(startTime).WithoutMilliseconds().ToString();

            var jObj = new JObject {
                { "start_time", startTime }, { "days", new JArray() }
            };

            if (json["days"] != null)
            {
                try
                {
                    var days = ((JArray)json["days"] !).Select(jv => (int)jv).ToArray();
                    jObj["days"] = JToken.FromObject(days);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw new Exception($"could not parse days: {ex.Message}");
                }
            }

            if (json["devices"] == null)
            {
                throw new Exception("devices is required but was not defined");
            }

            var devices = json["devices"]?.Value <JArray>().ToObject <List <SchedulerDevice> >();

            if (devices == null || !devices.Any())
            {
                throw new Exception("could not deserialize devices");
            }

            jObj.Add("devices", JArray.FromObject(devices));
            var scheduleObj = new Schedule(jObj);

            ScheduleRepository.Insert(scheduleObj);
            return(ScheduleRepository.Get(scheduleObj.Id));
        }
Ejemplo n.º 3
0
        public void Delete(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminSchedules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var scheduleObj = ScheduleRepository.Get(id);

            ScheduleRepository.DeleteRecord(scheduleObj);
        }
Ejemplo n.º 4
0
        public JObject CatchAll(string accessKey = null)
        {
            var route      = Request.Path.Value.ToLower().Split("/");
            var workflowId = route[2];
            var command    = route[3];

            if (!AccessKeyHelper.CanAccessWorkflow(accessKey, workflowId))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var workflowObj = WorkflowRepository.Get(workflowId);

            if (workflowObj == null)
            {
                Response.StatusCode = 404;
                var jObj = new JObject {
                    { "route", string.Join("/", route) }
                };
                return(jObj);
            }

            switch (command)
            {
            case "run":
            {
                workflowObj.Run();
                Response.StatusCode = StatusCodes.Status200OK;
                return(new JObject {
                        { "status", "completed" }
                    });
            }

            case "cancel":
            {
                Response.StatusCode = StatusCodes.Status200OK;
                workflowObj.Stop();
                return(new JObject {
                        { "status", "cancelled" }
                    });
            }

            default:
                Response.StatusCode = StatusCodes.Status404NotFound;
                return(new JObject {
                    { "route", string.Join("/", route) }
                });
            }
        }
Ejemplo n.º 5
0
        public JObject PostDevice([FromBody] JObject body, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessDevices(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            IDevice deviceObj = new Device(body);

            DeviceRepository.Add(deviceObj);

            deviceObj = DeviceRepository.Get(deviceObj.Id);
            return(deviceObj.ToJObject());
        }
Ejemplo n.º 6
0
        public JObject PostRule([FromBody] JObject body, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var ruleObj = new Rule(body);

            RulesRepository.Add(ruleObj);
            return(ruleObj.ToJObject());

            //var id = body["id"]?.ToString();
            //return RulesRepository.Get(id).ToJObject();
        }
Ejemplo n.º 7
0
        public JObject PostWorkflow([FromBody] JObject body, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessWorkflows(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var workflowObj = new Workflow(body);

            WorkflowRepository.Add(workflowObj);

            var id = body["id"]?.ToString();

            return(WorkflowRepository.Get(id).ToJObject());
        }
Ejemplo n.º 8
0
        public JArray GetWorkflows(string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessWorkflows(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var jArray = new JArray();

            foreach (var workflowObj in WorkflowRepository.Get())
            {
                jArray.Add(workflowObj.ToJObject());
            }

            return(jArray);
        }
Ejemplo n.º 9
0
        public void DeleteAccessKey(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminAccessKeys(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var accessKeyObj = AccessKeyRepository.Get(id);

            if (accessKeyObj != null)
            {
                AccessKeyRepository.Delete(accessKeyObj);
            }

            Response.StatusCode = StatusCodes.Status200OK;
        }
Ejemplo n.º 10
0
        public void DeleteRule(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var ruleObj = RulesRepository.Get(id);

            if (ruleObj == null)
            {
                Response.StatusCode = StatusCodes.Status404NotFound;
                return;
            }

            RulesRepository.Delete(ruleObj);
        }
Ejemplo n.º 11
0
        public JArray GetRules(string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var jArray = new JArray();

            foreach (var ruleObj in RulesRepository.Get())
            {
                var jObj = ruleObj.ToJObject();
                jArray.Add(jObj);
            }

            return(jArray);
        }
Ejemplo n.º 12
0
        public void DeleteWorkflow(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessWorkflows(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var workflowObj = WorkflowRepository.Get(id);

            if (workflowObj == null)
            {
                Response.StatusCode = StatusCodes.Status404NotFound;
                return;
            }

            WorkflowRepository.Delete(workflowObj);
        }
Ejemplo n.º 13
0
        public JObject GetDevice(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessDevice(accessKey, id))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var deviceObj = DeviceRepository.Get(id);

            if (deviceObj != null)
            {
                return(deviceObj.ToJObject());
            }

            Response.StatusCode = StatusCodes.Status404NotFound;
            return(null);
        }
Ejemplo n.º 14
0
        public void DeleteDevice(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessDevices(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var deviceObj = DeviceRepository.Get(id);

            if (deviceObj == null)
            {
                Response.StatusCode = StatusCodes.Status404NotFound;
                return;
            }

            DeviceRepository.Delete(deviceObj);
        }
Ejemplo n.º 15
0
        public JArray GetDevices(string accessKey = null)
        {
            if (!AccessKeyHelper.CanAccessDevices(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var jArray = new JArray();

            Parallel.ForEach(DeviceRepository.Get(), deviceObj =>
            {
                var jObj = deviceObj.ToJObject();
                lock (jArray)
                    jArray.Add(jObj);
            });

            return(jArray);
        }
Ejemplo n.º 16
0
        public JObject CreateAccessKey([FromBody] JObject body, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminAccessKeys(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var name = body["name"]?.ToString();

            if (string.IsNullOrEmpty(name))
            {
                Response.StatusCode = StatusCodes.Status400BadRequest;
                return(new JObject {
                    "error", "'name' is required"
                });
            }

            var accessKeyObj = new AccessKey(body);

            AccessKeyRepository.Add(accessKeyObj);

            return(AccessKeyRepository.Get(accessKeyObj.Id).ToJObject());
        }