feat(vcs): generic provider interface + contrib implementations #193
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #188
Created a pair of abstract (ABC) classes to represent all information and functionality specific to indivudal VCS providers. The abstract methods take inputs and return outputs that are fully generic, using a set of new 'generic models'. Provider implementations are responsible for mapping API data to/from these models. The implemented methods of this pair of classes should not make any calls to the DB in order to keep responsibilities clearly separated and prevent unexpected behaviour.
Added provider implementations for GitHub and GitLab. For GitHub, much of the existing code was kept with some small changes. For GitLab, some code was taken (with permission to relicense under MIT) from https://codebase.helmholtz.cloud/rodare/invenio-gitlab.
This commit on its own is UNRELEASABLE. We will merge multiple commits related to the VCS upgrade into the
vcs-staging
branch and then merge them all intomaster
once we have a fully release-ready prototype. At that point, we will create a squash commit.