Example #1
0
        /// <summary>
        /// Validate expert mode pro
        /// </summary>
        /// <param name="req"></param>
        /// <param name="timer"></param>
        /// <returns></returns>
        private async Task <bool> GetAndSetExpertModeProperties(CreateTimerRequest req, Timer timer)
        {
            var paymentValid = await _stripeService.ValidatePaymentIntentAsync(req.PaymentIntentId);

            if (!paymentValid)
            {
                timer.Status = TimerStatus.Failed;
                timer.Errors = TimerErrors.PaymentError;
                return(false);
            }

            timer.ConfirmationMethod = req.ConfirmationMethod;
            timer.CustomerName       = req.CustomerName;
            timer.CustomerEmail      = new MailAddress(req.CustomerEmail);
            timer.PaymentIntentId    = req.PaymentIntentId;

            //store referee email and create a code if confirmation method type is link confirmation
            if (req.ConfirmationMethod == TimerConfirmationMethod.LinkConfirmation)
            {
                timer.RefereeEmail = new MailAddress(req.RefereeEmail);

                //email referee
                var emailSuccess = await _timerEmailsService.SendRefereeEmailAsync(timer);

                if (!emailSuccess)
                {
                    timer.Status = TimerStatus.Failed;
                    timer.Errors = TimerErrors.RefereeEmailSendError;
                    return(false);
                }
            }

            return(true);
        }
Example #2
0
        public void CreateRequestLaunchTask()
        {
            var request = new CreateTimerRequest(
                TimeSpan.FromSeconds(30),
                new LaunchTaskOperation(
                    new LaunchRequestTask
            {
                Name    = "<customTask.NAME>",
                Version = "<customTask.VERSION>",
                Input   = new PrintImageV1
                {
                    Title       = "Beautiful scenic image",
                    Description = "test",
                    Url         = "http://www.example.com/beautiful-scenic-image.jpg",
                    ImageV1Type = PrintImageV1Type.JPEG
                }
            },
                    new LocaleText
            {
                Locale = "en-US",
                Text   = "Your print timer is up! Would you like to pass focus back skill {continueWithSkillName}"
            }),
                DisplayVisibility.Hidden,
                true,
                "print");

            Assert.True(Utility.CompareJson(request, "CreateTimerLaunchTask.json"));
        }
        public async Task <TimerResponse> Create(CreateTimerRequest request)
        {
            var content  = JObject.FromObject(request).ToString(Formatting.None);
            var response = await Client.PostAsync(string.Empty,
                                                  new StringContent(content, Encoding.UTF8, "application/json"));

            return(await response.BodyOrError(JsonConvert.DeserializeObject <TimerResponse>, HttpStatusCode.OK));
        }
Example #4
0
        public void CreateRequestNotifyOnly()
        {
            var request = new CreateTimerRequest(
                TimeSpan.FromMinutes(10),
                new NotifyOnlyOperation(),
                DisplayVisibility.Hidden,
                true,
                "exercise");

            Assert.True(Utility.CompareJson(request, "CreateTimerNotifyOnly.json"));
        }
Example #5
0
        public void CreateRequestAnnounce()
        {
            var request = new CreateTimerRequest(
                TimeSpan.FromMinutes(10),
                new AnnounceOperation(new LocaleText
            {
                Locale = "en-US",
                Text   = "That's enough stretching, start to run"
            }),
                DisplayVisibility.Visible,
                true,
                "exercise"
                );

            Assert.True(Utility.CompareJson(request, "CreateTimerAnnounce.json"));
        }
Example #6
0
        public async Task <Timer> CreateTimerAsync(CreateTimerRequest req)
        {
            //create timer and set base properties
            var res = new Timer()
            {
                Id             = Guid.NewGuid(),
                ExpertMode     = req.ExpertMode,
                ArrivalTimeUtc = req.ArrivalTimeUtc,
                Destination    = req.Destination,
                Origin         = req.Origin,
                Status         = TimerStatus.Active,
                TravelMode     = req.TravelMode
            };

            //validate and set expert mode specific information and properties
            if (req.ExpertMode)
            {
                var expertRes = await GetAndSetExpertModeProperties(req, res);

                if (!expertRes)
                {
                    return(res);
                }
            }

            //get route information and set route info properties
            var routeRes = await GetAndSetRouteInfoAsync(res, req);

            if (!routeRes)
            {
                return(res);
            }

            //store timer in memory, expire after 2 days
            res = await _repository.CreateTimerAsync(res);

            //return timer
            return(res);
        }
Example #7
0
 public async Task CreateCall()
 {
     var http = new HttpClient(new ActionHandler(async req =>
     {
         Assert.Equal("Bearer", req.Headers.Authorization.Scheme);
         Assert.Equal("ABC123", req.Headers.Authorization.Parameter);
         Assert.Equal(HttpMethod.Post, req.Method);
         Assert.Equal($"{TimersClient.EuropeEndpoint}/v1/alerts/timers/", req.RequestUri.ToString());
         var rawBody    = await req.Content.ReadAsStringAsync();
         var bodyObject = JsonConvert.DeserializeObject <CreateTimerRequest>(rawBody);
         Assert.Equal(TimeSpan.FromHours(1), bodyObject.Duration);
         Assert.Equal(DisplayVisibility.Visible, bodyObject.CreationBehavior.DisplayExperience.Visibility);
         Assert.True(bodyObject.TriggeringBehavior.NotificationConfig.PlayAudible);
         Assert.IsType <NotifyOnlyOperation>(bodyObject.TriggeringBehavior.Operation);
     }, new TimerResponse
     {
         Id = "ABC123",
     }));
     var notifyOnly = new CreateTimerRequest(TimeSpan.FromHours(1), new NotifyOnlyOperation(), DisplayVisibility.Visible, true);
     var client     = new TimersClient(TimersClient.EuropeEndpoint, "ABC123", http);
     await client.Create(notifyOnly);
 }
Example #8
0
 /// <summary>
 /// Gets the route information for a request and copies properties to the timer
 /// </summary>
 /// <param name="timer"></param>
 /// <returns></returns>
 private async Task <bool> GetAndSetRouteInfoAsync(Timer timer, CreateTimerRequest req)
 {
     return(await GetAndSetRouteInfoAsync(timer, req.Origin, req.Destination, req.TravelMode,
                                          req.ArrivalTimeUtc));
 }