An HTTP Service for using the TextWatermark module to watermark text.
Based on Fastapi.
Modify Dockerfile and docker-compose.yml then run
docker-compose -f docker-compose.yml up
There are 2 steps for using textwatermark-service
- Create a worker when you want to watermark some text.
- Do the watermarking job with the worker you created.
Visit http://0.0.0.0:8000/docs
and you will see swagger UI.
The params JSON string is the same as what you exported by using the TextWatermark
package in the console. see https://textwatermark.jd.army/cmdline/#export-parameters-example
curl -X 'POST' \
'http://0.0.0.0:8000/worker/create?authorize_key=d0f4ac8c14eae3a992aa574a55099e4f' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"params": {
"tpl_type": "INVISIBLE_CHARS",
"confusables_chars": [],
"confusables_chars_key": "",
"wm_base": 29,
"method": "INSERT_INTO_POSITION",
"wm_mode": "REAL_NUMBER",
"wm_len": 5,
"wm_flag_bit": true,
"wm_loop": false,
"wm_max": "99999",
"start_at": 1,
"version": "0.3.2"
},
"use_job_id": true,
"text": "12345678901"
}'
Result:
{
"worker_id": 65542
}
curl -X 'POST' \
'http://0.0.0.0:8000/worker/1/do_job?authorize_key=d0f4ac8c14eae3a992aa574a55099e4f' \
-H 'accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'wm_str='
Result:
{
"use_job_id": false,
"job_id": 66433,
"wm_str": "888888",
"wm_text": "Σ2ππΊΖΌππ©890123456789012345678901234567890"
}
curl -X 'GET' \
'http://0.0.0.0:8000/worker/10000?authorize_key=d0f4ac8c14eae3a992aa574a55099e4f' \
-H 'accept: application/json'
Result:
{
"use_job_id": false,
"created": "2023-03-11T15:16:02.791571",
"text": "1234567890123456789012345678901234567890",
"params": {
"tpl_type": "HOMOGRAPH_NUMBERS",
"confusables_chars": [],
"confusables_chars_key": "",
"wm_base": 7,
"method": 1,
"wm_mode": 1,
"wm_len": 8,
"wm_flag_bit": false,
"wm_loop": false,
"wm_max": "999999",
"start_at": 0,
"version": "0.2.1"
},
"id": 65542
}
curl -X 'POST' \
'http://0.0.0.0:8000/worker/1/job/1/redo?authorize_key=d0f4ac8c14eae3a992aa574a55099e4f' \
-H 'accept: application/json' \
-d ''
Result:
{
"use_job_id": false,
"job_id": 4904,
"wm_str": "888888",
"wm_text": "Σ2ππΊΖΌππ©890123456789012345678901234567890"
}
curl -X 'GET' \
'http://0.0.0.0:8000/worker/1/job/1?authorize_key=d0f4ac8c14eae3a992aa574a55099e4f' \
-H 'accept: application/json'
Result:
{
"created": "2023-03-11T15:18:17.792940",
"id": 4904,
"worker_id": 65542,
"wm_str": "888888",
"worker": {
"use_job_id": false,
"created": "2023-03-11T15:16:02.791571",
"text": "1234567890123456789012345678901234567890",
"params": {
"tpl_type": "HOMOGRAPH_NUMBERS",
"confusables_chars": [],
"confusables_chars_key": "",
"wm_base": 7,
"method": 1,
"wm_mode": 1,
"wm_len": 8,
"wm_flag_bit": false,
"wm_loop": false,
"wm_max": "999999",
"start_at": 0,
"version": "0.2.1"
},
"id": 65542
}
}
code .
virtualenv venv
. venv/bin/activate
pip install poetry
poetry lock
poetry install
tox
Run uvicorn textwatermark_service.main:app --port 8000 --reload
see wrk.md
in Benchmarks
Directory.