/// <summary> /// Gets a Tuple, containing queries for tracks, users, and playlists. /// Please note that this process can take considerably long. /// </summary> /// <param name="query"></param> /// <param name="limit"></param> /// <returns></returns> public Tuple <TrackQueryObject, UserQueryObject, PlaylistQueryObject> GetAllQuery(string query, int limit) { TrackQueryObject tracks = GetTrackQuery(query, limit); UserQueryObject users = GetUserQuery(query, limit); PlaylistQueryObject playlists = GetPlaylistQuery(query, limit); return(Tuple.Create(tracks, users, playlists)); }
public async Task ExecuteUserQuery() { var mockManager = new QueryMockManager(); var expectedPredicate = new SimplePredicate(nameof(User.NickName), ValueComparingOperator.StringContains, "Misko"); var mapperMock = mockManager.ConfigureMapperMock <User, UserDto, UserFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <User>(); var productQueryObject = new UserQueryObject(mapperMock.Object, queryMock.Object); var unused = await productQueryObject.ExecuteQuery(new UserFilterDto { SubName = "Misko" }); Assert.AreEqual(mockManager.CapturedPredicate, expectedPredicate); }
public async Task ApplyWhereClause_EmptyFilter_ReturnsNull() { var mockManager = new QueryMockManager(); var mapperMock = mockManager.ConfigureMapperMock <User, UserDto, UserFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <User>(); var userQueryObject = new UserQueryObject(mapperMock.Object, queryMock.Object); var filter = new UserFilterDto(); var temp = await userQueryObject.ExecuteQuery(filter); Assert.AreEqual(null, mockManager.CapturedPredicate); }
/// <summary> /// Get the next page in a user query. /// </summary> /// <param name="link"></param> /// <returns></returns> public UserQueryObject GetNextUserInQuery(string link) { using (Stream s = jsonClient.GetStreamAsync(link).Result) using (StreamReader sr = new StreamReader(s)) using (JsonReader reader = new JsonTextReader(sr)) { JsonSerializer serializer = new JsonSerializer(); UserQueryObject newUserObject = serializer.Deserialize <UserQueryObject>(reader); link = newUserObject.next_href; return(newUserObject); } }
public async Task ApplyWhereClause_SimpleFilterByBornBefore_ReturnsCorrectPredicate() { DateTime filterBornBefore = new DateTime(2018, 12, 12); var mockManager = new QueryMockManager(); var expectedPredicate = new CompositePredicate( new List <IPredicate> { new SimplePredicate(nameof(User.Birthdate), ValueComparingOperator.LessThan, filterBornBefore) }, LogicalOperator.AND); var mapperMock = mockManager.ConfigureMapperMock <User, UserDto, UserFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <User>(); var userQueryObject = new UserQueryObject(mapperMock.Object, queryMock.Object); var filter = new UserFilterDto { BornBefore = filterBornBefore }; var temp = await userQueryObject.ExecuteQuery(filter); Assert.AreEqual(expectedPredicate, mockManager.CapturedPredicate); }
public async Task ApplyWhereClause_SimpleFilterByEmail_ReturnsCorrectPredicate() { const string filteredEmail = "*****@*****.**"; var mockManager = new QueryMockManager(); var expectedPredicate = new CompositePredicate( new List <IPredicate> { new SimplePredicate(nameof(User.Email), ValueComparingOperator.Equal, filteredEmail) }, LogicalOperator.AND); var mapperMock = mockManager.ConfigureMapperMock <User, UserDto, UserFilterDto>(); var queryMock = mockManager.ConfigureQueryMock <User>(); var userQueryObject = new UserQueryObject(mapperMock.Object, queryMock.Object); var filter = new UserFilterDto { Email = filteredEmail }; var temp = await userQueryObject.ExecuteQuery(filter); Assert.AreEqual(expectedPredicate, mockManager.CapturedPredicate); }
public HttpResponseMessage UserQuery([FromBody] UserQueryObject uqo) { return(Request.CreateResponse(HttpStatusCode.OK, new UserDiagnosisResponseObject())); }
public static async Task Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { var storage = CloudStorageAccount.Parse(StorageAccount); var cloudTableClient = storage.CreateCloudTableClient(); var usersTable = cloudTableClient.GetTableReference("users"); var userStatisticsTable = cloudTableClient.GetTableReference("userstatistics"); await usersTable.CreateIfNotExistsAsync().ConfigureAwait(false); await userStatisticsTable.CreateIfNotExistsAsync().ConfigureAwait(false); // Get a Bearer Token with the App var httpClient = new HttpClient(); string token; try { var app = ConfidentialClientApplicationBuilder.Create(AppId) .WithAuthority($"https://login.windows.net/{TenantId}/oauth2/token") .WithRedirectUri("https://governance365function") .WithClientSecret(AppSecret) .Build(); var authenticationProvider = new MsalAuthenticationProvider(app, Scopes); token = authenticationProvider.GetTokenAsync().Result; httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); } catch (Exception) { throw; } httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); //initialize object for storing all user statistics UserQueryObject usersPage = null; var userStatistics = new UserStatisticsTableEntity() { PartitionKey = "userstatistics", RowKey = TenantId, DeactivatedUsers = 0, DeletedUsers = 0, GuestUsers = 0, InternalUsers = 0, Users = 0 }; //get all users (until nextlinnk is empty) and members/guests + sum up statistics do { if (string.IsNullOrEmpty(usersPage?.OdataNextLink?.ToString())) { //first request usersPage = JsonConvert.DeserializeObject <Governance365.Models.UserQueryObject>(await(await httpClient.GetAsync(usersUrl + UserSelectedProperties).ConfigureAwait(false)).Content.ReadAsStringAsync().ConfigureAwait(false)); } else { //next page request usersPage = JsonConvert.DeserializeObject <Governance365.Models.UserQueryObject>(await(await httpClient.GetAsync(usersPage?.OdataNextLink?.ToString()).ConfigureAwait(false)).Content.ReadAsStringAsync().ConfigureAwait(false)); } //batch request to store pages of users in Azure storage var userPageBatchOperation = new TableBatchOperation(); foreach (var user in usersPage.Value) { if (user.UserType != null) { userStatistics.Users++; if (user.UserType.Equals("Member")) { userStatistics.InternalUsers++; } else if (user.UserType.Equals("Guest")) { userStatistics.GuestUsers++; } if (string.IsNullOrEmpty(user.AccountEnabled) && !bool.Parse(user.AccountEnabled)) { userStatistics.DeactivatedUsers++; } } user.PartitionKey = "user"; user.RowKey = user.Id.ToString(); //add user entity to batch operation userPageBatchOperation.Add(TableOperation.InsertOrReplace(user)); } //write user page to Azure tabel storage await usersTable.ExecuteBatchAsync(userPageBatchOperation).ConfigureAwait(false); } while (!string.IsNullOrEmpty(usersPage.OdataNextLink?.ToString())); //write user statistics to table "userstatistics" -> single value with overwrite var insertUserStatisticsOperation = TableOperation.InsertOrReplace(userStatistics); await userStatisticsTable.ExecuteAsync(insertUserStatisticsOperation).ConfigureAwait(false); httpClient.Dispose(); }
public UserService(UnitOfWork unitOfWork, UserQueryObject uquery) { this.unitOfWork = unitOfWork; userQueryObject = uquery; }