Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }