1
0
Fork 0
mirror of https://github.com/Luzifer/preserve.git synced 2024-11-08 14:20:05 +00:00
Little HTTP server to preserve the presence of URLs
Find a file
Knut Ahlers a2664f671c
Lint: Fix linter issues
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2021-11-05 17:26:15 +01:00
.gitignore Initial version 2020-06-14 02:09:06 +02:00
.golangci.yml Add PR linting / auto-publishing 2021-11-05 17:21:32 +01:00
.repo-runner.yaml Add PR linting / auto-publishing 2021-11-05 17:21:32 +01:00
cache.go Lint: Fix linter issues 2021-11-05 17:26:15 +01:00
Dockerfile Initial version 2020-06-14 02:09:06 +02:00
go.mod Add HTTP log and Gzip compression for transit 2021-06-09 10:59:30 +02:00
go.sum Add HTTP log and Gzip compression for transit 2021-06-09 10:59:30 +02:00
History.md prepare release v0.3.0 2021-11-05 16:20:49 +01:00
LICENSE Initial version 2020-06-14 02:09:06 +02:00
main.go Fix: decode b64 URIs before generating cache path 2021-11-05 16:16:22 +01:00
Makefile Add PR linting / auto-publishing 2021-11-05 17:21:32 +01:00
README.md Add base64 description to README 2021-11-05 16:19:51 +01:00
storage.go Add modular storage API / GCS support (#1) 2021-02-23 14:08:53 +01:00
storage_gcs.go Add modular storage API / GCS support (#1) 2021-02-23 14:08:53 +01:00
storage_local.go Lint: Fix linter issues 2021-11-05 17:26:15 +01:00

Go Report Card

Luzifer / preserve

preserve is a little HTTP server to preserve the presence of URLs.

Ever relied on an HTTP resource to be available and it vanished? Happened too often to me so I wrote a little tool to prevent URLs from vanishing: preserve.

Usage

After you've started preserve it will by default listen on port 3000 and you can start using it by prefixing the URL of the resource:

Lets say you want to ensure the image https://example.com/image.png does not vanish:

  • http://localhost:3000/https://example.com/image.png will fetch the resource once and then deliver it from the local cache
  • http://localhost:3000/latest/https://example.com/image.png will fetch the resource with every request until it gets unavailable and then serve it from local cache

This also works with parameters:

http://localhost:3000/https://pbs.twimg.com/media/somemediaid?format=jpg&name=4096x4096

If you do have some service (like Discord) screwing up these URLs you can apply base64 URL-Encoding to them (do NOT omit the padding):

http://localhost:3000/b64:aHR0cHM6Ly9wYnMudHdpbWcuY29tL21lZGlhL3NvbWVtZWRpYWlkP2Zvcm1hdD1qcGcmbmFtZT00MDk2eDQwOTY=

Select Storage Provider

Local files

preserve \
  --listen=:3000 \
  --storage-provider=local \
  --storage-dir=/var/lib/preserve

Google Cloud Storage

preserve \
  --listen=:3000 \
  --storage-provider=gcs \
  --bucket-uri=gs://mybucket/prefix