public override async Task GetPrayerTimesByCityAndSchoolStream(RequestForPrayerTimesInCityAndSchool request, IServerStreamWriter <ResponseForPrayerTimesInCityAndSchool> responseStream, ServerCallContext context) { var client = httpClientFactory.CreateClient(); for (int i = 0; i < 30; i++) { if (context.CancellationToken.IsCancellationRequested) { logger.LogInformation("service request cancelled..."); break; } var prayerTimes = await GetPrayerTimesWithSchool(request, client); await responseStream.WriteAsync(new ResponseForPrayerTimesInCityAndSchool { Asr = prayerTimes.Results.Datetime[0].Times.Asr, Dhuhr = prayerTimes.Results.Datetime[0].Times.Dhuhr, Fajr = prayerTimes.Results.Datetime[0].Times.Fajr, Isha = prayerTimes.Results.Datetime[0].Times.Isha, Maghrib = prayerTimes.Results.Datetime[0].Times.Maghrib, TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow), School = request.School, City = request.City }); await Task.Delay(1000); } }
private static async Task <PrayerTimes> GetPrayerTimesWithSchool(RequestForPrayerTimesInCityAndSchool request, HttpClient client) { var response = await client.GetStringAsync($"https://api.pray.zone/v2/times/today.json?city={request.City}&school={request.School}"); var prayerTimes = PrayerTimes.FromJson(response); return(prayerTimes); }
public override async Task <ResponseForPrayerTimesInCityAndSchool> GetPrayerTimesByCityAndSchool(RequestForPrayerTimesInCityAndSchool request, ServerCallContext context) { var client = httpClientFactory.CreateClient(); PrayerTimes prayerTimes = await GetPrayerTimesWithSchool(request, client); return(new ResponseForPrayerTimesInCityAndSchool { Asr = prayerTimes.Results.Datetime[0].Times.Asr, Dhuhr = prayerTimes.Results.Datetime[0].Times.Dhuhr, Fajr = prayerTimes.Results.Datetime[0].Times.Fajr, Isha = prayerTimes.Results.Datetime[0].Times.Isha, Maghrib = prayerTimes.Results.Datetime[0].Times.Maghrib, TimeStamp = Timestamp.FromDateTime(DateTime.UtcNow), City = request.City, School = request.School }); }