https://github.com/39software/webring-api
API server and frontend to help in maintaining a webring. Written in Quarkus + Kotlin!
https://github.com/39software/webring-api
webring webrings
Last synced: about 1 year ago
JSON representation
API server and frontend to help in maintaining a webring. Written in Quarkus + Kotlin!
- Host: GitHub
- URL: https://github.com/39software/webring-api
- Owner: x86-39
- License: cc0-1.0
- Created: 2023-10-02T14:27:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-03T11:18:54.000Z (almost 2 years ago)
- Last Synced: 2024-11-08T10:54:55.317Z (over 1 year ago)
- Topics: webring, webrings
- Language: Kotlin
- Homepage:
- Size: 409 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# webring-api
Wenring API & Frontend.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
API code: [SiteResource.kt](https://github.com/diademiemi/webring-api/blob/main/src/main/kotlin/dev/queercoded/webring/SiteResource.kt)
Integration Tests: [SiteResourceTest.kt](https://github.com/diademiemi/webring-api/blob/main/src/test/kotlin/dev/queercoded/webring/SiteResourceTest.kt)
## Running the application in dev mode
You can run your application in dev mode that enables live coding using:
```shell script
./gradlew quarkusDev
```
## Packaging and running the application
The application can be packaged using:
```shell script
./gradlew build
```
It produces the `quarkus-run.jar` file in the `build/quarkus-app/` directory.
Be aware that it’s not an _über-jar_ as the dependencies are copied into the `build/quarkus-app/lib/` directory.
The application is now runnable using `java -jar build/quarkus-app/quarkus-run.jar`.
If you want to build an _über-jar_, execute the following command:
```shell script
./gradlew build -Dquarkus.package.type=uber-jar
```
The application, packaged as an _über-jar_, is now runnable using `java -jar build/*-runner.jar`.
## Creating a native executable
You can create a native executable using:
```shell script
./gradlew build -Dquarkus.package.type=native
```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script
./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true
```
You can then execute your native executable with: `./build/webring-api-1.0.0-SNAPSHOT-runner`
If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.
# API Documentation
## Env vars
```
# Dev
export WEBRING_API_TOKEN=ADMIN_TOKEN_CHANGE_ME
export WEBRING_API_URL=http://127.0.0.1:8080
# Prod
export WEBRING_API_TOKEN=...
export WEBRING_API_URL=https://webring.queercoded.dev
```
## List sites
```
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/all | jq
```
## List all disabled sites
```
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/disabled | jq
```
## List all dead end sites
```
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/all-dead-end | jq
```
## List all sites including disabled & dead ends
```
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/all-plus-disabled | jq
```
## Create site
```
export SITE_DATA=$(cat << EOF
{
"name": "Queer Coded",
"domain": "queercoded.dev",
"https": true,
"author": "Queer Coded Staff",
"path": "/",
"disable_checks": false,
"enabled": true
}
EOF
)
curl -X POST \
-H \
"Content-Type: application/json" \
--data ${SITE_DATA} \
-H \
"Authorization: Bearer ${WEBRING_API_TOKEN}" \
-v -k ${WEBRING_API_URL}/sites/ --raw
```
## Update site
```
export SITE_ID=1
export SITE_DATA=$(cat << EOF
{
"disable_checks": true
}
EOF
)
curl -X PUT \
-H \
"Content-Type: application/json" \
--data ${SITE_DATA} \
-H \
"Authorization: Bearer ${WEBRING_API_TOKEN}" \
-v -k ${WEBRING_API_URL}/sites/id/${SITE_ID}/update --raw
```
## Enable site
```
export SITE_ID=1
curl -X PUT \
-H \
"Content-Type: application/json" \
-H \
"Authorization: Bearer ${WEBRING_API_TOKEN}" \
-v -k ${WEBRING_API_URL}/sites/id/${SITE_ID}/enable --raw
```
## Disable site
```
export SITE_ID=1
curl -X PUT \
-H \
"Content-Type: application/json" \
-H \
"Authorization: Bearer ${WEBRING_API_TOKEN}" \
-v -k ${WEBRING_API_URL}/sites/id/${SITE_ID}/disable --raw
```
## Delete site
```
export SITE_ID=1
curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/id/${SITE_ID} --raw
```
## Force recheck sites
```
curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer ${WEBRING_API_TOKEN}" -v -k ${WEBRING_API_URL}/sites/force-recheck --raw
```