Local API (#982)

* Introduce API scelleton

* Raw impl for session

* Simple state endpoint

* Apply _body naming

* Finalize session testing and comment out tons of useless code

* Clean and refactor part1

* Clean and refactor part2

* Clean and refactor part2

* Clean and refactor part2

* Clean and refactor part2

* Refactor middleware

* Refactor middleware

* Clean and refactor part3

* TDD and 2 beers

* TDD and 2 beers

* Complete state endpoints

* You can only set what is already present

* Use only JSON as response

* Use default logger

* Improve auth extraction

* Extend api command with more args

* Adjust API messages
This commit is contained in:
Henry Ruhs
2025-11-17 08:36:31 +01:00
committed by henryruhs
parent f1149ebc84
commit 87678da498
20 changed files with 647 additions and 79 deletions
+45
View File
@@ -0,0 +1,45 @@
import secrets
from datetime import timedelta
from facefusion.session_manager import clear_session, create_session, get_session, set_session, validate_session
def test_get_and_set_session() -> None:
session = create_session()
access_token = secrets.token_urlsafe(128)
set_session(access_token, session)
assert get_session(access_token) == session
def test_validate_session() -> None:
session = create_session()
access_token = secrets.token_urlsafe(128)
set_session(access_token, session)
assert validate_session(access_token) is True
set_session(access_token,
{
'access_token': session.get('access_token'),
'refresh_token': session.get('refresh_token'),
'created_at': session.get('created_at'),
'expires_at': session.get('expires_at') - timedelta(hours = 1)
})
assert validate_session(access_token) is False
def test_clear_session() -> None:
session = create_session()
access_token = secrets.token_urlsafe(128)
set_session(access_token, session)
assert validate_session(access_token) is True
clear_session(access_token)
assert validate_session(access_token) is None