/// <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); }
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)); }
public void CreateRequestNotifyOnly() { var request = new CreateTimerRequest( TimeSpan.FromMinutes(10), new NotifyOnlyOperation(), DisplayVisibility.Hidden, true, "exercise"); Assert.True(Utility.CompareJson(request, "CreateTimerNotifyOnly.json")); }
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")); }
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); }
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); }
/// <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)); }