in API/Controllers/MeetingController.cs [247:317]
public async Task<dynamic> Put([FromBody]MeetingRequest mreq)
{
if (mreq.meetingId == null)
{
throw CreateAPIError("0", "Request is missing the required field 'meetingId'");
}
dynamic authDetails;
try
{
authDetails = await AuthenticateUCWA();
}
catch (Exception ex)
{
telemetry.TrackException(ex);
throw CreateAPIError("3", "Could not authenticate to UCWA.");
}
string meetingManagementURL = authDetails.onlineMeetingURL + "/" + mreq.meetingId;
// Extract the magic etag value & GUID that need to be passed in PUT operations
string guid = "";
string etag = "";
try
{
HttpWebRequest req = CreateRequest(meetingManagementURL, "GET", authDetails.accessToken);
string res = GetResponse(req);
dynamic jsonResponse = JsonConvert.DeserializeObject(res);
etag = jsonResponse.etag.ToString();
foreach (var x in jsonResponse)
{
if (x.Value.ToString() == ucwaPassMeString)
{
guid = x.Name.ToString();
}
}
}
catch (Exception ex)
{
telemetry.TrackException(ex);
throw CreateAPIError("2", "Could not retrieve meeting information from UCWA");
}
// Issue the PUT request based on passed values
try
{
MeetingRequestUCWA meeting = new MeetingRequestUCWA();
meeting.attendees = PreprocessAttendeeList(mreq.attendees);
meeting.accessLevel = "Invited";
meeting.automaticLeaderAssignment = "SameEnterprise";
meeting.subject = mreq.subject;
meeting.description = mreq.description;
meeting.expirationTime = mreq.expirationTime;
JObject o = JObject.FromObject(meeting);
o.Add("onlineMeetingId", mreq.meetingId);
o.Add(guid, ucwaPassMeString);
var json = o.ToString();
HttpWebRequest req = CreateRequest(meetingManagementURL, "PUT", authDetails.accessToken, "application/json");
req.Headers.Add("If-Match", '"' + etag + '"');
SendRequestBody(req, json);
var res = GetResponse(req);
return JsonConvert.DeserializeObject(res);
}
catch (Exception ex)
{
telemetry.TrackException(ex);
throw CreateAPIError("1", "Unexpected error occurred.");
}
}