Skip to content
This repository was archived by the owner on Mar 10, 2025. It is now read-only.

kguzek/guzek-uk-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

279 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Guzek UK API

DEPRECATION NOTICE 2024-03-10

Guzek UK API was made obsolete with the integration of PayloadCMS into the Guzek UK website. This repository no longer serves any use.

Intro

This repository contains the source code for the Guzek UK API, which is used to power the Guzek UK Website -- my personal homepage. It has general website-related routes, such as page content for my custom-made content management system, the entire backend of LiveSeries, a public torrent indexer and scraper, and much more.

API

This repository contains only the necessary lightweight public-facing APIs. It used to contain user authentication, but that has been moved to a separate server.

Fun fact: this API's first implementation was as a JSON file serving as the database, and raw Node.JS http server code. It's now a MariaDB database operated by Sequelize, an ORM for JS/TS -- yes, it's still based on Node.JS.

Routes

Below is a list of accessible API routes, all of which use a base of https://api.guzek.uk.

GET /pages

Permissions: public

Returns an array of pages to be displayed in the website navbar.

Parameters:

  • lang (required): EN or PL -- the language of the page titles. Can also be provided in cookies instead.

GET /pages/{pageId}

Returns the HTML body content for that page, if it exists. Parameters same as for GET /pages.

GET /updated

Permissions: public

Returns a dictionary of endpoint-timestamp pairs. For each endpoint, the UNIX timestamp represents the last modification date of any resource behind that API endpoint.

It ignores the /logs endpoint as well as itself (/updated); i.e. these endpoints are not present in the response body.

/logs

Permissions: admin only

All sub-endpoints return an object containing a date field and a logs field, where logs is an array of JSON-formatted log entries.

GET /logs/{date}

Returns all logs (except for error-level logs) made on the specified date. The date must be specified as a string in such a way that JavaScript's new Date() constructor can parse it. The date field is set to the date in ISO 8601 format.

GET /logs/error

Returns all logs ever made with level error. The date field is set to "error".

/liveseries

This parent endpoint is shared by the LiveSeries decentralised server.

GET /liveseries/watched-episodes

Permissions: admin only

Get all watched episode data stored in the database.

GET /liveseries/watched-episodes/personal

Permissions: authenticated only

Get all of the logged in user's watched episodes.

PUT /liveseries/watched-episodes/personal/{showId}/{season}

Sets the logged in user's watched episodes in the given season of the given TV show, where the ID is the numerical ID from the Episodate API.

GET /liveseries/shows

Permissions: admin only

Reads all user's liked and subscribed shows.

GET /liveseries/shows/personal

Permissions: authenticated only

Reads the logged in user's liked and subscribed shows, as arrays of show IDs.

POST|DELETE /liveseries/shows/personal/{type}/{showId}

Adds or removes (depending on request method) the show ID from the given list specified by type, where type is either liked or subscribed.

GET|POST /tu-lalem

Permissions: authenticated only

Reads all Tu Lałem entries or creates a new one, depending on the request method. New entries must be JSON objects with key coordinates and value in the form of a two-value array (geographical coordinates).

Tu Lałem is a currently-private dormant project, which may or may not be revisited in the future.

Usage

This repository isn't really meant to be cloned or downloaded by anyone, it's just where I keep the source code so I can develop from different locations. If you read this README, say hi!

Copyright

Copyright © 2021-2025 by Konrad Guzek

This file is part of Guzek UK API.

Guzek UK API is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Guzek UK API is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.