Skip to content

Latest commit

 

History

History
96 lines (83 loc) · 3.26 KB

README.md

File metadata and controls

96 lines (83 loc) · 3.26 KB

fasterid

Identifier generator based on FastAPI and erdi8

Disclaimer

This software intentionally has no license attached. It does not need to comply to the GPL-3.0 license of erdi8 as the erdi8 copyright holder and the author of fasterid are the same person. Please get in touch if you plan to use this in a commercial setting.

Quick start

$ pip install -r requirements.txt
$ cat fasterid.env
    ERDI8_STRIDE = "453459956896834"
    ERDI8_START = "b222222222"
    ERDI8_SAFE = "True"
    FASTERID_FILENAME = "last-id.txt"
    FASTERID_MAX_NUM = 50
    FASTERID_ALWAYS_RDF = "False"
    FASTERID_MAX_PREFIX_LEN = 100
    FASTERID_ID_PROPERTY = "https://schema.org/identifier"
    FASTERID_ID_DEFAULT_PREFIX = "https://example.org/"

$ uvicorn fasterid:app
	INFO:     Started server process [116821]
	INFO:     Waiting for application startup.
	INFO:     Application startup complete.
	INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

$ curl http://127.0.0.1:8000 -X POST
{"@id": "k7zydqrp64"}

# Call http://127.0.0.1:8000/docs for API info in a browser

Test

# From a different terminal
$ while true; do printf "$(curl -X POST http://127.0.0.1:8000)\n" >> ids; done

# After some seconds stop with: CTRL+C
$ head ids
{"@id":"ptzxm3mz85"}
{"@id":"tfzwsfhbb6"}
{"@id":"y2zvyscnd7"}
{"@id":"cnzv657yg8"}
{"@id":"h8ztch49j9"}
{"@id":"mvzsjtymmb"}
{"@id":"rgzrr6txpc"}
{"@id":"w3zqxjq8rd"}
{"@id":"zpzq4wkktf"}
{"@id":"f9zpb8fwwg"}

Advanced

The service accepts also three parameters: prefix, number, and rdf. The first can be used for creating individual identifiers with a prefix, the second is creating a batch with a certain number of ids, the third uses the prefix or the FASTERID_ID_DEFAULT_PREFIX environment setting to create valid RDF. All parameters are optional. For the rdf = true settings the generated erdi8 identifier MUST form a valid absolute IRI together with the provided prefix or FASTERID_ID_DEFAULT_PREFIX. number and prefix and can be configured respecting max batch size and prefix length.

$ curl -X POST http://127.0.0.1:8000 --data '{"number": 5, "prefix": "https://example.com/", "rdf": true}' -H "content-type: application/json" | jq
[
  {
    "@id": "https://example.com/t7t9vt26f4",
    "https://schema.org/identifier": "t7t9vt26f4"
  },
  {
    "@id": "https://example.com/xtt935whh5",
    "https://schema.org/identifier": "xtt935whh5"
  },
  {
    "@id": "https://example.com/cft88hrtk6",
    "https://schema.org/identifier": "cft88hrtk6"
  },
  {
    "@id": "https://example.com/h2t7fvn5n7",
    "https://schema.org/identifier": "h2t7fvn5n7"
  },
  {
    "@id": "https://example.com/mnt6n7hgq8",
    "https://schema.org/identifier": "mnt6n7hgq8"
  }
]

Docker

docker build -t fasterid .
docker run -d -p 80:80 fasterid
# OR
docker run -d -p 80:80 -e FASTERID_ID_DEFAULT_PREFIX="" fasterid
# OR
docker run -d -p 80:80 -e FASTERID_ID_DEFAULT_PREFIX="https://w3id.org/myspace/" -e FASTERID_ALWAYS_RDF="True" fasterid
# OR
docker run --log-driver=awslogs -d -p 80:80 -e FASTERID_ID_DEFAULT_PREFIX="" fasterid
# OR
docker run --log-driver=awslogs -d -v /home/ec2-user/latest-id.txt:/fasterid-0.1.2/last-id.txt  -e FASTERID_ID_DEFAULT_PREFIX="" -p 80:80 fasterid