From c1cdda4cf4c714f92b5fd7676e44ab5a92e637a9 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Fri, 4 Jan 2019 13:31:37 -0800 Subject: update main README --- README.md | 46 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 1433e62b..4c75dffc 100644 --- a/README.md +++ b/README.md @@ -13,25 +13,30 @@ published written works (mostly journal articles), with a focus on tracking the location and status of full-text copies to ensure "perpetual access". The [RFC](./fatcat-rfc.md) is the original design document, and the best place -to start for background. There is a work-in-progress "guide" at +to start for technical background. There is a work-in-progress "guide" at ; the canonical public location of this repository is . +The public production web interface is . + +See the `LICENSE` file for detailed permissions and licensing of both python +and rust code. In short, the auto-generated client libraries are permissively +released, while the API server and web interface are strong copyleft (AGPLv3). + +## Building and Tests + There are three main components: - backend API server and database (in Rust) - API client libraries and bots (in Python) - front-end web interface (in Python; built on API and library) -See the LICENSE file for details permissions and licensing of both python and -rust code. In short, the auto-generated client libraries are permissively -released, while the API server and web interface are strong copyleft (AGPLv3). - -## Building and Tests - Automated integration tests run on Gitlab CI (see `.gitlab-ci.yml`) on the Internet Archive's internal (not public) infrastructure. +See `./python/README.md` and `./rust/README.md` for details on building, +running, and testing these components. + ## Status - SQL and HTTP API schemas @@ -44,8 +49,8 @@ Internet Archive's internal (not public) infrastructure. - HTTP API Server - [x] base32 encoding of UUID identifiers - [x] inverse many-to-many helpers (files-by-release, release-by-creator) - - [ ] Authentication (eg, accounts, OAuth2, JWT) - - [ ] Authorization (aka, roles) + - [x] Authentication (eg, accounts, OAuth2, JWT) + - [x] Authorization (aka, roles) - Web Interface - [x] Migrate Python codebase - [ ] Creation and editing of all entities @@ -57,26 +62,3 @@ Internet Archive's internal (not public) infrastructure. - [ ] Sentry (error reporting) - [ ] Metrics -## Identifiers - -Fatcat entity identifiers are 128-bit UUIDs encoded in base32 format. Revision -ids are also UUIDs, and encoded in normal UUID fashion, to disambiguate from -edity identifiers. - -Python helpers for conversion: - - import base64 - import uuid - - def fcid2uuid(s): - s = s.split('_')[-1].upper().encode('utf-8') - assert len(s) == 26 - raw = base64.b32decode(s + b"======") - return str(uuid.UUID(bytes=raw)).lower() - - def uuid2fcid(s): - raw = uuid.UUID(s).bytes - return base64.b32encode(raw)[:26].lower().decode('utf-8') - - test_uuid = '00000000-0000-0000-3333-000000000001' - assert test_uuid == fcid2uuid(uuid2fcid(test_uuid)) -- cgit v1.2.3