From ffec14c93b58b653608fd3719c41519a0d851ed4 Mon Sep 17 00:00:00 2001 From: kgudel Date: Fri, 12 Jun 2026 15:25:31 -0400 Subject: [PATCH 1/2] update for 2025 reporting --- .../reporting/api/http/ReportingHttpApi.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hmda-reporting/src/main/scala/hmda/reporting/api/http/ReportingHttpApi.scala b/hmda-reporting/src/main/scala/hmda/reporting/api/http/ReportingHttpApi.scala index a9d0a28695..0073f86088 100644 --- a/hmda-reporting/src/main/scala/hmda/reporting/api/http/ReportingHttpApi.scala +++ b/hmda-reporting/src/main/scala/hmda/reporting/api/http/ReportingHttpApi.scala @@ -34,6 +34,7 @@ private class ReportingHttpApi(config: Config)(implicit ec: ExecutionContext) ex private val institutionRepository2022 = new InstitutionRepository(databaseConfig, "institutions2022") private val institutionRepository2023 = new InstitutionRepository(databaseConfig, "institutions2023") private val institutionRepository2024 = new InstitutionRepository(databaseConfig, "institutions2024") + private val institutionRepository2025 = new InstitutionRepository(databaseConfig, "institutions2025") private val filerListRoute: Route = { @@ -141,6 +142,20 @@ private class ReportingHttpApi(config: Config)(implicit ec: ExecutionContext) ex ) .toSet ) + case 2025 => + institutionRepository2025 + .getFilteredFilers(bankFilterList) + .map(sheets => + sheets + .map(instituionEntity => + HmdaFiler( + instituionEntity.lei.toUpperCase, + instituionEntity.respondentName, + instituionEntity.activityYear.toString + ) + ) + .toSet + ) case _ => Future(Set(HmdaFiler("", "", ""))) } @@ -163,6 +178,7 @@ private class ReportingHttpApi(config: Config)(implicit ec: ExecutionContext) ex case 2022 => institutionRepository2022 case 2023 => institutionRepository2023 case 2024 => institutionRepository2024 + case 2025 => institutionRepository2025 From e4ea707e902c94d5919d1b171f879071988ead3e Mon Sep 17 00:00:00 2001 From: kgudel Date: Tue, 16 Jun 2026 13:34:53 -0400 Subject: [PATCH 2/2] add pass through routes for testing --- .../hmda/uli/api/http/ProxyHttpApi.scala | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala b/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala index 0d60c3b006..f11f695c89 100644 --- a/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala +++ b/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala @@ -119,6 +119,26 @@ private class ProxyHttpApi(log: Logger)(implicit ec: ExecutionContext, system: A } } } + pathPrefix("passthrough" / "data-browser" / "maps" / Remaining) { (mapsUrl) => + (extractUri & get) { uri => + //println(uri) + val s3Key = s"data-browser/maps/$mapsUrl" + jsonStreamingS3Route(s3Key) + } + } + pathPrefix("passthrough" / "reports" / Remaining) { (reportsUrl) => + (extractUri & get) { uri => + //println(uri) + val s3Key = s"reports/$reportsUrl" + jsonStreamingS3Route(s3Key) + } + } + pathPrefix("passthrough" / Remaining) { (s3Url) => + (extractUri & get) { uri => + //println(uri) + streamingS3Route(s3Url) + } + } } } } @@ -144,6 +164,20 @@ private class ProxyHttpApi(log: Logger)(implicit ec: ExecutionContext, system: A } } + private def jsonStreamingS3Route(s3Key: String): Route = { + val fStream: Future[Source[ByteString, NotUsed]] = retrieveData(s3Key).flatMap { + case Some(stream) => + Future(stream) + case None => + Future(Source.empty) + } + + onComplete(fStream){ + case Success(stream) => complete(HttpEntity(ContentTypes.`application/json`, stream)) + case Failure(error) => complete(StatusCodes.BadRequest) + } + } + private def checkYearAvailable(availableYears: Seq[String], year: String): Directive0 = { Directive[Unit](route => if (availableYears.contains(year)) route(())