/// <summary> /// Real-Time Scheduling example. /// </summary> private static void RealTimeSchedulingExample() { Console.Write("Enter Client id: "); var clientId = Console.ReadLine(); Console.Write("Enter Secret: "); var clientSecret = Console.ReadLine(); Console.Write("Enter Account id for availablity: "); var sub = Console.ReadLine(); Console.Write("Enter calendar id for availablity: "); var calendarId = Console.ReadLine(); string redirectUrl = "http://example.com/redirectUri"; string scope = "read_events create_event"; string eventId = "testEventId"; string summary = "Test Summary"; DateTimeOffset start = DateTime.Now; DateTimeOffset end = DateTime.Now + new TimeSpan(2, 0, 0); var client = new CronofyOAuthClient(clientId, clientSecret); var upsertEventRequest = new UpsertEventRequestBuilder() .EventId(eventId) .Summary(summary) .Build(); var availabilityRequest = new AvailabilityRequestBuilder() .AddParticipantGroup(new ParticipantGroupBuilder().AddMember(sub).AllRequired()) .AddAvailablePeriod(start, end) .RequiredDuration(60) .Build(); var request = new RealTimeSchedulingRequestBuilder() .OAuthDetails(redirectUrl, scope) .Timezone("Etc/UTC") .UpsertEventRequest(upsertEventRequest) .AvailabilityRequest(availabilityRequest) .AddTargetCalendar(sub, calendarId) .Build(); var actualUrl = client.RealTimeScheduling(request); Console.WriteLine(actualUrl); Process.Start(actualUrl); }
public void CanGetOAuthUrlWithAvailabilityTargetCalendarsAndHourFormat() { var expectedUrl = "http://test.com"; var hourFormat = "H"; http.Stub( HttpPost .Url("https://api.cronofy.com/v1/real_time_scheduling") .RequestHeader("Content-Type", "application/json; charset=utf-8") .RequestBodyFormat( "{{" + "\"availability\":{{" + "\"participants\":[{{" + "\"members\":[{{" + "\"sub\":\"{6}\"" + "}}]" + "}}]," + "\"required_duration\":{{" + "\"minutes\":60" + "}}," + "\"available_periods\":[{{" + "\"start\":\"{7}\"," + "\"end\":\"{8}\"" + "}}]" + "}}," + "\"client_id\":\"{0}\"," + "\"client_secret\":\"{1}\"," + "\"oauth\":{{" + "\"redirect_uri\":\"{2}\"," + "\"scope\":\"{3}\"" + "}}," + "\"event\":{{" + "\"event_id\":\"{4}\"," + "\"summary\":\"{5}\"" + "}}," + "\"target_calendars\":[{{" + "\"sub\":\"{9}\"," + "\"calendar_id\":\"{10}\"" + "}}]," + "\"formatting\":{{" + "\"hour_format\":\"{11}\"" + "}}," + "\"tzid\":\"Etc/UTC\"" + "}}", clientId, clientSecret, redirectUrl, scope, eventId, summary, sub, startString, endString, sub, calendarId, hourFormat) .ResponseCode(200) .ResponseBodyFormat( "{{\"url\":\"{0}\"}}", expectedUrl) ); var request = new RealTimeSchedulingRequestBuilder() .OAuthDetails(redirectUrl, scope) .Timezone("Etc/UTC") .UpsertEventRequest(upsertEventRequestWithoutStartAndEnd) .AvailabilityRequest(availabilityRequest) .AddTargetCalendar(sub, calendarId) .HourFormat("H") .Build(); var actualUrl = client.RealTimeScheduling(request); Assert.AreEqual(expectedUrl, actualUrl); }