private async Task <JArray> Search(string graphUrl) { var url = graphUrl; var result = new List <JObject>(); var i = 0; do { i++; // Print page number Log.Info($"Getting page #{i}"); // Query Graph var json = await _graph.SendGraphRequest(HttpMethod.Get, url, null); result.AddRange((JObject.Parse(json)["value"] as JArray).Cast <JObject>()); // Get next link url var root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = graphUrl + "&$" + root.odata_nextLink; } } while (string.IsNullOrEmpty(url) == false); return(JArray.FromObject(result)); }
private async Task <JArray> QueryUsers(UserFilter filter) { var url = _graph.BuildUrl(ApiPath, filter.Filter); var result = new List <JObject>(); var i = 0; do { i++; // Print page number Log.Info($"Getting page #{i}"); // Query Graph var json = await _graph.SendGraphRequest(HttpMethod.Get, url, null); var jt = Json.TryParse(json); if (jt is JObject jo && jo["value"] is JArray ja) { result.AddRange(ja.Cast <JObject>()); } else { if (jt != null) { Log.Error($"Invalid response {jt.ToString(Formatting.Indented)}"); } else { Log.Error($"Invalid response {json}"); } return(null); } // Get next link url var root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = url + "&$" + root.odata_nextLink; } } while (string.IsNullOrEmpty(url) == false);
public override async Task Run() { // Create an output folder var outputFolder = Settings.OutputFolder.Subdirectory(DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); outputFolder.Create(); // Set the report URL string graphUrl = _graph.BuildUrl("/activities/audit", $"$filter=category eq 'B2C'&$top={Settings.PageSize}"); string url = graphUrl; int i = 0; do { i++; // Print page number Log.Info($"Getting page #{i}"); // Query Graph var json = await _graph.SendGraphRequest(HttpMethod.Get, url, null); // Get next link url GraphRootElementModel root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = graphUrl + "&$" + root.odata_nextLink; } // Save the data var file = outputFolder.File($"Audit_{i.ToString("0000")}.txt"); File.WriteAllText(file.FullName, json); } while (string.IsNullOrEmpty(url) == false); }
public async Task Run() { // Create an output folder string outputFolder = Path.Combine(this.AppSettings.OutputFolder, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); Directory.CreateDirectory(outputFolder); // Set the report URL string graphUrl = this.AzureADGraphClient.BuildUrl("/activities/audit", $"$filter=category eq 'B2C'&$top={AppSettings.PageSize}"); string url = graphUrl; int i = 0; do { i++; // Print page number Console.WriteLine($"Getting page #{i}"); // Query Graph var json = await this.AzureADGraphClient.SendGraphRequest(HttpMethod.Get, url, null); // Get next link url GraphRootElementModel root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = graphUrl + "&$" + root.odata_nextLink; } // Save the data string filePath = Path.Combine(outputFolder, $"Audit_{i.ToString("0000")}.txt"); File.WriteAllText(filePath, json); } while (string.IsNullOrEmpty(url) == false); }
private async Task Export(string graphUrl, string outputFolder, string fileName) { string url = graphUrl; int i = 0; do { i++; // Print page number Log.Info($"Getting page #{i}"); // Query Graph var json = await this._graph.SendGraphRequest(HttpMethod.Get, url, null); // Get next link url GraphRootElementModel root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = graphUrl + "&$" + root.odata_nextLink; } // Save the data string pageNumber = string.Empty; if (i > 1) { pageNumber = "_" + i.ToString(); } string filePath = Path.Combine(outputFolder, $"{fileName}{pageNumber}.txt"); File.WriteAllText(filePath, json); } while (string.IsNullOrEmpty(url) == false); }
private async Task Search(string graphUrl) { // Create an output folder string outputFolder = Path.Combine(this.AppSettings.OutputFolder, DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); string url = graphUrl; Directory.CreateDirectory(outputFolder); int i = 0; do { i++; // Print page number Console.WriteLine($"Getting page #{i}"); // Query Graph var json = await this.AzureADGraphClient.SendGraphRequest(HttpMethod.Get, url, null); // Get next link url GraphRootElementModel root = GraphRootElementModel.Parse(json); if (root == null || string.IsNullOrEmpty(root.odata_nextLink)) { url = null; } else { url = graphUrl + "&$" + root.odata_nextLink; } // Save the data string filePath = Path.Combine(outputFolder, $"Users_{i.ToString("0000")}.txt"); File.WriteAllText(filePath, json); } while (string.IsNullOrEmpty(url) == false); }