akai-org / akai-org/put-wiki

external providers for lecturers data

Open
#120 0 comments 0 reactions 0 assignees View on GitHub
area:backend type:task
Dominant language
TypeScript
Stars
6
Forks
3
Avg merge
3d 17h
Merged PRs (30d)
15

Description

## Summary
Implement an Anti-Corruption Layer (ACL, more info: [1](https://oneuptime.com/blog/post/2026-01-30-anti-corruption-layer-pattern/view), [2](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/acl.html), [3](https://learn.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer)) and a design pattern (e.g., strategy) to unify the fetching of lecturer data from multiple external sources (USOS, Informator PP, lecturer websites).

## [Acceptance criteria](https://www.atlassian.com/work-management/project-management/acceptance-criteria)
- [ ] Define a common interface in the Application layer.
- [ ] Implement concrete providers in the Infrastructure layer for different external systems.
- [ ] Utilize the already existing `IUsosHttpClient` for USOS integration. (Do not introduce retry mechanisms at this stage).
- [ ] Providers translate raw external structures into unified DTOs understood by our domain.
- [ ] In case of external API unavailability, methods return a `Result.Failure` object instead of throwing exceptions.

## Notes
The focus here is solely on a data extraction mechanism. Providers must isolate the rest of the application from changes in the USOS API or HTML on lecturers websites. A single interface allows us to easily plug in new data sources in the future.

This task should focus only on external providers, not storing this data in db, returning from api, etc.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.