private static void WriteFile() { Models.json json1 = new Models.json(); string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string json = JToken.Parse(JsonConvert.SerializeObject(data)).ToString(); Console.WriteLine("\n\n" + json); if (File.Exists(path + "\\output.json")) { File.Delete(path + "\\output.json"); } json = json.Remove(0, 1); json = json.Remove(json.Length - 1, 1); json = json.Remove(json.Length - 1, 1); System.IO.File.WriteAllText(path + "\\output.json", json); }
private static async void getDataAsync() { Console.WriteLine("Using path: " + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)); using (var client = new HttpClient()) { client.BaseAddress = new Uri("https://api.github.com"); client.DefaultRequestHeaders.Add("User-Agent", "Anything"); client.DefaultRequestHeaders.Add("Authorization", "token " + ConfigurationManager.AppSettings["Token"]); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); Models.json json = new Models.json(); List <Models.json> jsondata = new List <Models.json>(); List <Models.MetaData> data1 = new List <Models.MetaData>(); for (int page = 1; page <= Convert.ToInt32(ConfigurationManager.AppSettings["Page"]); page++) { Console.WriteLine("i is: " + page + "; Count: " + data.Count()); if (page > 1) { Thread.Sleep(TimeSpan.FromSeconds(3)); } HttpResponseMessage response = await client.GetAsync(ConfigurationManager.AppSettings["Organization Path"] + "?per_page=100&page=" + page); if (response.StatusCode != HttpStatusCode.OK) { Console.WriteLine("\n\n>>>: " + response.ToString()); return; } response.EnsureSuccessStatusCode(); List <Models.Repository> repositories = await response.Content.ReadAsAsync <List <Models.Repository> >(); json.Headerversion = response.RequestMessage.Version.ToString(); json.agency = ConfigurationManager.AppSettings["Organization"]; json.measurementType = new Models.json.measurement(); json.measurementType.method = "projects"; if (repositories != null && repositories.Count() > 0) { foreach (Models.Repository repository in repositories) { Models.MetaData MetaData = new Models.MetaData(); MetaData.name = repository.FullName; string[] partsList = MetaData.name.Split("/"); if (partsList.Count() == 2) { MetaData.organization = partsList[0]; } MetaData.name = repository.Name; if (repository.Description == null) { MetaData.description = "No description available..."; } else { MetaData.description = repository.Description; } MetaData.date = new Models.MetaData.DateDef(); MetaData.homepageURL = repository.SvnUrl; MetaData.downloadURL = repository.DownloadsUrl; MetaData.repositoryURL = repository.CloneUrl; MetaData.date.created = repository.CreatedAt; MetaData.date.lastModified = repository.UpdatedAt; MetaData.date.metadataLastUpdated = DateTime.Now; if (!String.IsNullOrWhiteSpace(repository.Language)) { /// languages MetaData.languages.Add(repository.Language); } if (repository.Licenses == null) { MetaData.permissions.licenses = null; } else { if (repository.Licenses.Url == null) { MetaData.permissions.licenses = null; } else { List <Models.MetaData.licenses> licenses = new List <Models.MetaData.licenses>(); Models.MetaData.licenses l = new Models.MetaData.licenses(); l.name = repository.Licenses.Name; l.URL = repository.Licenses.Url; licenses.Add(l); MetaData.permissions.licenses = licenses; } } if (repository.TagsUrl != null) { HttpResponseMessage tagsResponse = await client.GetAsync(repository.TagsUrl); if (tagsResponse.StatusCode == HttpStatusCode.OK) { List <Models.UnConfirmed.RepositoryTag> tags = await tagsResponse.Content.ReadAsAsync <List <Models.UnConfirmed.RepositoryTag> >(); if (tags != null) { Console.WriteLine("Tags: " + tags.Count()); foreach (Models.UnConfirmed.RepositoryTag repoTag in tags) { MetaData.tags.Add(repoTag.Name); } } } } /// About the Organization Information if (!String.IsNullOrEmpty(MetaData.organization)) { HttpResponseMessage repostoryResponse = await client.GetAsync("/orgs/" + MetaData.organization); Models.Organization organization = await repostoryResponse.Content.ReadAsAsync <Models.Organization>(); if (organization != null) { MetaData.contact = new Models.MetaData.ContactDef(); MetaData.contact.email = organization.Email; MetaData.contact.name = organization.Name; } } /// Get latest release Thread.Sleep(TimeSpan.FromSeconds(1)); HttpResponseMessage latestReleaseResponse = await client.GetAsync(repository.Url + "/releases"); List <Models.UnConfirmed.Release> releases = await latestReleaseResponse.Content.ReadAsAsync <List <Models.UnConfirmed.Release> >(); /// Languages Thread.Sleep(TimeSpan.FromSeconds(1)); HttpResponseMessage languagesResponse = await client.GetAsync(repository.Url + "/languages"); Dictionary <string, string> k = JsonConvert.DeserializeObject <Dictionary <string, string> >(await languagesResponse.Content.ReadAsStringAsync()); foreach (KeyValuePair <string, string> entry in k) { // do something with entry.Value or entry.Key if (entry.Key != null && !MetaData.languages.Contains(entry.Key)) { MetaData.languages.Add(entry.Key); } } MetaData.organization = ConfigurationManager.AppSettings["Organization Name"]; data1.Add(MetaData); /// WriteFile(); } json.releases = data1; } else { break; } } data.Add(json); WriteFile(); } Console.WriteLine("THE END!"); }