Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration with CodeAbility Sharing Platform #3592

Open
Wallenstein61 opened this issue Jun 18, 2021 · 0 comments
Open

Integration with CodeAbility Sharing Platform #3592

Wallenstein61 opened this issue Jun 18, 2021 · 0 comments
Assignees
Labels
core Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module feature iris Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module text Pull requests that affect the corresponding module

Comments

@Wallenstein61
Copy link

Wallenstein61 commented Jun 18, 2021

Is your feature request related to a problem?

The CodeAbility Project currently operates and maintains a platform for sharing (among other content) programming exercises between interested parties. It is open to the programming teaching community.

CodeAbility also operates an Artemis instance that serves its 6 Austrian partners as a platform for programming teaching.
Artemis is currently a major source of programming exercises, as well as a potential target for re-using programming exercises.
However the exchange between separated instances of Artemis is only supported by a manual exchange of zipped exercises files.

We have implemented a REST-based connector interface in the sharing platform to import and export exercises between interested applications.
This connector interface allows among other features the import and export of programming exercises in an appropriate format.

We have already implemented an prototype integration of Artemis with the sharing platform based on the connector interface in order to allow for the smooth sharing of exercises.

Describe the solution you'd like

Base for the exchange is the zip-file download as currently supported by artemis.

Technically the zip-file is uncompressed and stored in the sharing platform git repository.

Profile definition

Artemis will be extended by an extra profile "sharing", that enables the connectivity with the Sharing Platform.

Configuration

The participating instance of Artemis has to exchange in advance a shared secret (API-key) with the maintainers of the sharing platform in order to enable the access to the sharing plattform.

In application-sharing.yml the following configurations have to be included:

Both could also be configured by environment variables

API-Extensions on Artemis

On Artemis side the following extra REST-call must be implemented (part of the connector interface):

  • import to Artemis
    • /api/sharing/config: For exchanging the specific connector configuration
    • /api//sharing/import/basket: For receiving exercise infos (shopping basket) from the sharing plattform. A basket is identified by an basket token
  • export to Sharing Platform
    • /api/sharing/export/{token}: A rest service to download the zipped exercise.

Additional (internally added REST API) for Artemis frontend

  • import
    • /api/sharing/config/isEnabled: frontend request to query that api is enabled.
    • /api//sharing/setup-import: frontend request to load basket information for import
    • /api/sharing/import/basket/exerciseDetails: frontend request for exercise details
    • /api/sharing/import/basket/problemStatement: frontend request for the problem statement
  • export
    • /api/sharing/export/{exerciseId} preparation for exercise export to sharing plattform (and technical url redirect to sharing platform)

initial and continous initialization

The Sharing Platform usually polls every 10 minutes for the (potenially updated) configuration of the connected Artemis application.
In order to avoid a small initialisation gap on startup of the connected application, it can request an reinitialisation by calling the sharing plattform at /api/pluginIF/v0.1/reInitialize the the respecitve api-key.

The configuration contains also a specification of the exercises in the Sharing Platform that can be exchange with Artemis. Those are currently all exercise with the format: "artemis".

user interface (on Artemis side)

  • for import into Artemis from the Sharing Platform
    • a landing page in Artemis, on order to transfer the control from the sharing platform to artemis:

image

  • additional server logic in order to transfer the exercise content from the sharing platform to artemis

  • for export from Artemis into the Sharing Platform

    • an extension of the export functionality
      image
      .

      This functionality will transfer the control to the sharing platform and will provide the exported contents via some rest services.

Describe alternatives you've considered

The only alternative we see, is the manual exchange of zipped exercises.

Additional context

There is already a prototypic implementation at https://search.sharing-codeability.uibk.ac.at/

@github-actions github-actions bot added core Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module iris Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module text Pull requests that affect the corresponding module labels Oct 25, 2024
@Wallenstein61 Wallenstein61 self-assigned this Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module feature iris Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module text Pull requests that affect the corresponding module
Projects
None yet
Development

No branches or pull requests

1 participant