docs/content/Interface/_index.md

72 lines
2.6 KiB
Markdown

+++
title = "Interface"
weight = 40
+++
# Interface
Interface is a service that acts as a connecting end of the bridge, listening
in for Notifications from a particular forge repository.
These notifications, which may be in the form of a Comment, Issue, or Pull Request,
are then further defined into Events to create
a workable unit set, that the interface can use to translate operations from
one forge to another forge.
The procedure of the Notification-Event Translation System, works as follows,
1. Upon creation of the Interface, and set up of a forge repository to look for, the interface subscribes to the forge's notifications.
2. Every notification received by the interface from the forges, is then identified and translated into it's respective `Event` model, be it an Issue or PR.
3. Upon conversion into the respective model, Interface processes these `Events`, and converts them into the model required for the destination forge.
## Setting up the Development Environment
In order to test out and utilise the Northstar lookup service, we will need to set
up an interface to be run on the local machine. There are a few configuration
changes that must be made for the interface to be recognized by the lookup service.
Changes to the `config/settings.toml`,
```toml
[default.system]
northstar = "http://computer.domain.com:port"
[default.server]
url = "http://computer.domain.com:port"
```
Note that the port assigned to the interface and northstar must not already be in
use by another application/service, and that you can find out the hostname for
your system through the following command,
```sh
hostname --fqdn
```
There are a few more settings to add in, as a means to validate the user who hosts
the interface, this also depends on the forge of your choosing. As of right now,
`interface` supports only gitea, and we can fill up the `config/settings.toml`,
with the same.
```toml
[default]
forge = "gitea"
[default.gitea]
host = "https://gitea.com"
api_key = "generate-the-api-key-from-gitea-and-paste-here"
username = "fluxer101"
password = "flux101"
```
Note that the API key in Gitea is known as an access token, one which can be
generated [here](https://gitea.com/user/settings/applications).
## FAQ
### Why does an integrity error show up?
As ForgeFlux's Interface is an actively developing project, there are a few
errors that are caused by an upgrade to the database, in which case integrity errors
are bound to pop up. In this case, remove the `instance/` directory where the database
for the service would be stored, to rebuild it the next time the application is run.