/// <summary> /// Creates a new adhoc online meeting. /// Permissions required : OnlineMeetings.ReadWrite.All. /// </summary> /// <param name="tenantId">The tenant identifier.</param> /// <param name="organizerId">The meeting organizer identifier.</param> /// <param name="correlationId">The correlation identifier - needed in case of debugging for correlating client side request with server side logs.</param> /// <returns> The onlinemeeting. </returns> public async Task <Microsoft.Graph.OnlineMeeting> CreateOnlineMeetingAsync(string tenantId, string organizerId, Guid correlationId) { var statelessClient = new DefaultContainerClient( this.graphEndpointUri.AbsoluteUri, this.GetAuthenticationProvider(tenantId, correlationId)); var meetingRequest = statelessClient.App.OnlineMeetings.Request(); var onlineMeeting = new Microsoft.Graph.OnlineMeeting() { MeetingType = MeetingType.MeetNow, Participants = new MeetingParticipants() { Organizer = new MeetingParticipantInfo() { Identity = new IdentitySet() { User = new Identity() { Id = organizerId, }, }, }, }, Subject = "Test meeting.", }; var meeting = await meetingRequest.AddAsync(onlineMeeting).ConfigureAwait(false); return(meeting); }
/// <summary> /// Gets the online meeting. /// Permissions required : Either OnlineMeetings.Read.All or OnlineMeetings.ReadWrite.All. /// </summary> /// <param name="tenantId">The tenant identifier.</param> /// <param name="meetingId">The meeting identifier.</param> /// <param name="correlationId">The correlation identifier - needed in case of debugging for correlating client side request with server side logs.</param> /// <returns> The onlinemeeting. </returns> public async Task <Microsoft.Graph.OnlineMeeting> GetOnlineMeetingAsync(string tenantId, string meetingId, Guid correlationId) { var statelessClient = new DefaultContainerClient( this.graphEndpointUri.AbsoluteUri, this.GetAuthenticationProvider(tenantId, correlationId)); var meetingRequest = statelessClient.App.OnlineMeetings[meetingId].Request(); var meeting = await meetingRequest.GetAsync().ConfigureAwait(false); return(meeting); }
/// <summary> /// Gets the online meeting. /// </summary> /// <param name="tenantId">The tenant identifier.</param> /// <param name="meetingId">The meeting identifier.</param> /// <param name="correlationId">The correlation identifier.</param> /// <returns> The onlinemeeting. </returns> public async Task <Microsoft.Graph.OnlineMeeting> GetOnlineMeetingAsync(string tenantId, string meetingId, Guid correlationId) { IAuthenticationProvider GetAuthenticationProvider() { return(new DelegateAuthenticationProvider(async request => { request.Headers.Add(CoreConstants.Headers.ScenarioId, correlationId.ToString()); request.Headers.Add(CoreConstants.Headers.ClientRequestId, Guid.NewGuid().ToString()); await this.requestAuthenticationProvider.AuthenticateOutboundRequestAsync(request, tenantId) .ConfigureAwait(false); })); } var statelessClient = new DefaultContainerClient(this.graphEndpointUri.AbsoluteUri, GetAuthenticationProvider()); var meetingRequest = statelessClient.App.OnlineMeetings[meetingId].Request(); var meeting = await meetingRequest.GetAsync().ConfigureAwait(false); return(meeting); }