/// <summary> /// Gets the unique ID of the recorder specified by <paramref name="recorderName"/>. /// </summary> /// <param name="recorderName">Name of the recorder to get the ID for.</param> /// <param name="rrMgr">The client in which holds the information about the recorder <paramref name="recorderName"/>.</param> /// <param name="rrAuth">The authentication information for which to access the information from <paramref name="rrMgr"/>.</param> /// <returns>Returns the unique ID, if found. Else, will return Guid.Empty.</returns> public static Guid GetRecorderID(string recorderName, IRemoteRecorderManagement rrMgr, RemoteRecorderManagement42.AuthenticationInfo rrAuth) { Guid rrID = Guid.Empty; // Handle no recorder name here if (recorderName.Equals("")) { return(rrID); } // set the recorderName to lowercase for insensitive lookup recorderName = recorderName.ToLowerInvariant(); if (recorderIds.ContainsKey(recorderName)) { return(recorderIds[recorderName]); } if (recorderIds.Count > 0) { return(Guid.Empty); } bool lastPage = false; int resultsPerPage = 5; int pageNumber = 0; while (!lastPage) { RemoteRecorderManagement42.Pagination rrPage = new RemoteRecorderManagement42.Pagination() { MaxNumberResults = resultsPerPage, PageNumber = pageNumber }; ListRecordersResponse rrResponse = rrMgr.ListRecorders(rrAuth, rrPage, RecorderSortField.Name); if (resultsPerPage * (pageNumber + 1) >= rrResponse.TotalResultCount) { lastPage = true; } // Populate the lookup map with the lowercase'd names of the recorders foreach (RemoteRecorder rr in rrResponse.PagedResults) { recorderIds[rr.Name.ToLowerInvariant()] = rr.Id; } // keep looking pageNumber++; } // If rrID stays empty then remote recorder wasn't found or handle the case in which not found return(GetRecorderID(recorderName, rrMgr, rrAuth)); }
/// <summary> /// Attempts to get any remote recorder with the provided <paramref name="rrAuth"/> credentials. /// </summary> /// <param name="rrMgr">The client in which holds the information about the recorders</param> /// <param name="rrAuth">The authentication information for which to access the information from <paramref name="rrMgr"/>.</param> /// <returns>A code that determines the result of the attempted login.</returns> public static LoginResults TryLoginGetRecorder(IRemoteRecorderManagement rrMgr, RemoteRecorderManagement42.AuthenticationInfo rrAuth) { try { var pagination = new RemoteRecorderManagement42.Pagination { MaxNumberResults = 1, PageNumber = 0 }; var recorderListResponse = rrMgr.ListRecorders(rrAuth, pagination, RecorderSortField.Name); // no Remote Recorders found if (recorderListResponse.TotalResultCount < 1) { return(LoginResults.NoAccess); } } catch { // ListRecorders throws an exception if authentication fails either incorrect credentials or not admin. return(LoginResults.Failure); } return(LoginResults.Success); }