public void GenerateJsonResponse(IDictionary <string, string> mimToGeneSymbol) { var i = 0; var mimNumbers = mimToGeneSymbol.Select(x => x.Key).ToArray(); bool needComma = false; using (Stream gzStream = new GZipStream(_jsonResponseStream, CompressionMode.Compress)) using (StreamWriter writer = new StreamWriter(gzStream)) { while (i < mimNumbers.Length) { int endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Length - 1); string mimNumberString = GetMimNumbersString(mimNumbers, i, endMimNumberIndex); string queryUrl = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString), ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"), ("format", ReturnDataFormat)); using (var response = _httpClient.GetAsync(queryUrl).Result) { string responseContent = response.Content.ReadAsStringAsync().Result; string entries = SetPrefixAndGetEntriesString(responseContent); if (i == 0) { writer.Write(_jsonPrefix); } if (needComma) { writer.Write(','); } writer.Write(entries); needComma = true; } i = endMimNumberIndex + 1; } writer.WriteLine(JsonTextEnding); } }
public void GenerateJsonResponse() { var i = 0; var mimNumbers = GetMimsToDownload(); var needComma = false; using Stream gzStream = new GZipStream(_jsonResponseStream, CompressionMode.Compress); using StreamWriter writer = new StreamWriter(gzStream); while (i < mimNumbers.Count) { var endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Count - 1); var mimNumberString = GetMimNumbersString(mimNumbers, i, endMimNumberIndex); var queryUrl = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString), ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"), ("format", ReturnDataFormat)); using (var response = _httpClient.GetAsync(queryUrl).Result) { string responseContent = response.Content.ReadAsStringAsync().Result; string entries = SetPrefixAndGetEntriesString(responseContent); if (i == 0) { writer.Write(_jsonPrefix); } if (needComma) { writer.Write(','); } writer.Write(entries); needComma = true; } i = endMimNumberIndex + 1; } writer.WriteLine(JsonTextEnding); }
private IEnumerable <OmimItem> GetOmimItemsFromMinNumbers(IDictionary <string, string> mimToGeneSymbol, ZipArchive zipArchive) { var i = 0; var queryIndex = 1; var mimNumbers = mimToGeneSymbol.Select(x => x.Key).ToArray(); while (i < mimNumbers.Length) { int endMimNumberIndex = Math.Min(i + EntryQueryLimit - 1, mimNumbers.Length - 1); string mimNumberString = GetMimNumbersString(mimNumbers, i, endMimNumberIndex); string queryUrl = GetApiQueryUrl(OmimApiUrl, EntryHandler, ("mimNumber", mimNumberString), ("include", "text:description"), ("include", "externalLinks"), ("include", "geneMap"), ("format", ReturnDataFormat)); using (StreamWriter writer = zipArchive == null ? null : new StreamWriter(zipArchive.CreateEntry($"EntryQueryResponses/response{queryIndex}.txt").Open())) using (var response = _httpClient.GetAsync(queryUrl).Result) { string responseContent = response.Content.ReadAsStringAsync().Result; writer?.Write(responseContent); var entryResponse = JsonConvert.DeserializeObject <EntryRoot>(responseContent); var entryIndex = 0; foreach (var entry in entryResponse.omim.entryList) { int mimNumber = entry.entry.mimNumber; string description = OmimUtilities.RemoveLinksInText(entry.entry.textSectionList?[0].textSection.textSectionContent); string geneName = entry.entry.geneMap?.geneName; var phenotypes = entry.entry.geneMap?.phenotypeMapList?.Select(x => OmimUtilities.GetPhenotype(x, _jsonSchema.GetSubSchema("phenotypes"))).ToList() ?? new List <OmimItem.Phenotype>(); yield return(new OmimItem(mimToGeneSymbol[mimNumber.ToString()], geneName, description, mimNumber, phenotypes, _jsonSchema)); entryIndex++; } } i = endMimNumberIndex + 1; queryIndex++; } }