Exemple #1
0
        public HuntGroupJob(string jobid, string instanceid, AzureBasedApplicationBase azureApplication, HuntGroupJobInput input)
            : base(jobid, instanceid, azureApplication, input, JobType.HuntGroup)
        {
            m_jobInput = input;
            if (m_jobInput == null)
            {
                throw new ArgumentNullException("Failed to get job input as HuntGroupJobInput!");
            }

            m_toneReceived = new TaskCompletionSource <string>();
        }
        public HttpResponseMessage Post(HuntGroupJobInput input)
        {
            if (input == null /* || input.InviteTargetUris == null || input.InviteTargetUris.Length < 1 */)
            {
                return(CreateHttpResponse(HttpStatusCode.BadRequest, "{\"Error\":\"Invalid HuntGroupJobInput\"}"));
            }

            if (input.InviteTargetUris != null)
            {
                foreach (string s in input.InviteTargetUris)
                {
                    if (!s.StartsWith("sip", StringComparison.InvariantCultureIgnoreCase))
                    {
                        return(CreateHttpResponse(HttpStatusCode.BadRequest, "{\"Error\":\"Invalid InviteTargetUri\"}"));
                    }
                }
            }

            var jobConfig = new PlatformServiceSampleJobConfiguration
            {
                JobType           = JobType.HuntGroup,
                HuntGroupJobInput = input
            };

            string jobId = Guid.NewGuid().ToString("N");

            try
            {
                PlatformServiceJobBase job = PlatformServiceClientJobHelper.GetJob(jobId, WebApiApplication.InstanceId, WebApiApplication.AzureApplication, jobConfig);

                if (job == null)
                {
                    return(CreateHttpResponse(HttpStatusCode.BadRequest, "{\"Error\":\"Unsupported job input or job type\"}"));
                }

                job.ExecuteAsync().Observe <Exception>();
                return(Request.CreateResponse(HttpStatusCode.Created, job));
            }
            catch (Exception e)
            {
                Logger.Instance.Error(e, "Exception while scheduling job");
                return(CreateHttpResponse(HttpStatusCode.InternalServerError, "{\"Error\":\"Unable to start a job run\"}"));
            }
        }