csrd-utils 0.3.64__tar.gz → 0.3.66__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/PKG-INFO +1 -1
  2. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/pyproject.toml +1 -1
  3. csrd_utils-0.3.66/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +3 -0
  4. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +6 -1
  5. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +21 -7
  6. csrd_utils-0.3.64/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -3
  7. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/.gitignore +0 -0
  8. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/README.md +0 -0
  9. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/__init__.py +0 -0
  10. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/__main__.py +0 -0
  11. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/audit.py +0 -0
  12. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/augmentor.py +0 -0
  13. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/cluster.py +0 -0
  14. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/doctor.py +0 -0
  15. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
  16. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
  17. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/manifest.yaml +0 -0
  18. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/requirements.fragment +0 -0
  19. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
  20. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
  21. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
  22. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
  23. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/manifest.yaml +0 -0
  24. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/requirements.fragment +0 -0
  25. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
  26. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
  27. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
  28. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
  29. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
  30. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
  31. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
  32. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
  33. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
  34. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
  35. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
  36. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
  37. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
  38. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
  39. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
  40. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
  41. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
  42. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
  43. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/manifest.yaml +0 -0
  44. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/requirements.fragment +0 -0
  45. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
  46. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
  47. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
  48. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
  49. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
  50. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/fragments.py +0 -0
  51. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/generator.py +0 -0
  52. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/resources.py +0 -0
  53. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
  54. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
  55. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
  56. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
  57. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  58. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  59. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  60. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  61. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
  62. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
  63. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
  64. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  65. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
  66. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
  67. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
  68. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
  69. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
  70. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
  71. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
  72. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  73. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
  74. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  75. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  76. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
  77. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
  78. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
  79. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
  80. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
  81. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
  82. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
  83. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
  84. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
  85. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
  86. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
  87. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  88. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  89. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  90. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
  91. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
  92. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
  93. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +0 -0
  94. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  95. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  96. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  97. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  98. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  99. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  100. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  101. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  102. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  103. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
  104. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  105. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  106. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  107. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  108. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  109. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  110. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
  111. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  112. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  113. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  114. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  115. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +0 -0
  116. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  117. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
  118. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
  119. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
  120. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
  121. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
  122. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
  123. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
  124. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
  125. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
  126. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
  127. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
  128. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
  129. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
  130. {csrd_utils-0.3.64 → csrd_utils-0.3.66}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csrd-utils
3
- Version: 0.3.64
3
+ Version: 0.3.66
4
4
  Summary: CLI utilities for csrd service generation and feature augmentation
5
5
  Project-URL: Repository, https://github.com/csrd-api/fastapi-common
6
6
  Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "csrd-utils"
3
- version = "0.3.64"
3
+ version = "0.3.66"
4
4
  description = "CLI utilities for csrd service generation and feature augmentation"
5
5
  license = { text = "MIT" }
6
6
  requires-python = ">=3.12"
@@ -0,0 +1,3 @@
1
+ from .auth_service import BearerAuthDep, VerifiedTokenDep
2
+
3
+ __all__ = ("BearerAuthDep", "VerifiedTokenDep")
@@ -3,6 +3,7 @@ from typing import Annotated
3
3
  import httpx
4
4
  from fastapi import HTTPException, Security
5
5
  from fastapi.requests import Request
6
+ from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
6
7
 
7
8
  from csrd.auth import CallbackAuthenticator, create_bearer_dependency
8
9
  from csrd.models.claims import UserClaims
@@ -46,10 +47,14 @@ async def _remote_verify(_: Request, token: str) -> UserClaims:
46
47
 
47
48
 
48
49
  _authenticator = CallbackAuthenticator(callback=_remote_verify)
50
+ _http_bearer_scheme = HTTPBearer()
49
51
 
50
52
  VerifiedTokenDep = Annotated[
51
53
  UserClaims,
52
54
  Security(create_bearer_dependency(_authenticator, token_finder=find_token)),
53
55
  ]
54
56
 
55
- __all__ = ("VerifiedTokenDep",)
57
+ # OpenAPI docs dependency to surface the Swagger "Authorize" button.
58
+ BearerAuthDep = Annotated[HTTPAuthorizationCredentials, Security(_http_bearer_scheme)]
59
+
60
+ __all__ = ("BearerAuthDep", "VerifiedTokenDep")
@@ -4,7 +4,7 @@ from datetime import UTC, datetime
4
4
  from fastapi import APIRouter, HTTPException
5
5
  from pydantic import BaseModel
6
6
 
7
- from ...dependencies import VerifiedTokenDep
7
+ from ...dependencies import BearerAuthDep, VerifiedTokenDep
8
8
 
9
9
  router = APIRouter(prefix="/api", tags=["Items Endpoints"])
10
10
 
@@ -47,7 +47,11 @@ class ItemDeleteResponse(BaseModel):
47
47
 
48
48
 
49
49
  @router.post("/items", response_model=ItemResponse)
50
- async def create_item(payload: CreateItemRequest, _verified: VerifiedTokenDep) -> ItemResponse:
50
+ async def create_item(
51
+ payload: CreateItemRequest,
52
+ _auth: BearerAuthDep,
53
+ _verified: VerifiedTokenDep,
54
+ ) -> ItemResponse:
51
55
  item_id = str(uuid.uuid4())
52
56
  created_at = datetime.now(UTC).isoformat()
53
57
  item = {"id": item_id, "name": payload.name, "created_at": created_at}
@@ -56,12 +60,12 @@ async def create_item(payload: CreateItemRequest, _verified: VerifiedTokenDep) -
56
60
 
57
61
 
58
62
  @router.get("/items", response_model=ItemListResponse)
59
- async def list_items(_verified: VerifiedTokenDep) -> ItemListResponse:
63
+ async def list_items(_auth: BearerAuthDep, _verified: VerifiedTokenDep) -> ItemListResponse:
60
64
  return {"items": list(_ITEMS.values())}
61
65
 
62
66
 
63
67
  @router.get("/items/{entity_id}", response_model=ItemResponse)
64
- async def get_item(entity_id: str, _verified: VerifiedTokenDep) -> ItemResponse:
68
+ async def get_item(entity_id: str, _auth: BearerAuthDep, _verified: VerifiedTokenDep) -> ItemResponse:
65
69
  item = _ITEMS.get(entity_id)
66
70
  if item is None:
67
71
  raise HTTPException(status_code=404, detail="item not found")
@@ -70,7 +74,10 @@ async def get_item(entity_id: str, _verified: VerifiedTokenDep) -> ItemResponse:
70
74
 
71
75
  @router.put("/items/{entity_id}", response_model=ItemUpdateResponse)
72
76
  async def update_item(
73
- entity_id: str, payload: UpdateItemRequest, _verified: VerifiedTokenDep
77
+ entity_id: str,
78
+ payload: UpdateItemRequest,
79
+ _auth: BearerAuthDep,
80
+ _verified: VerifiedTokenDep,
74
81
  ) -> ItemUpdateResponse:
75
82
  item = _ITEMS.get(entity_id)
76
83
  if item is None:
@@ -81,7 +88,10 @@ async def update_item(
81
88
 
82
89
  @router.put("/items/{entity_id}/upsert", response_model=ItemUpsertResponse)
83
90
  async def upsert_item(
84
- entity_id: str, payload: UpdateItemRequest, _verified: VerifiedTokenDep
91
+ entity_id: str,
92
+ payload: UpdateItemRequest,
93
+ _auth: BearerAuthDep,
94
+ _verified: VerifiedTokenDep,
85
95
  ) -> ItemUpsertResponse:
86
96
  existing = _ITEMS.get(entity_id)
87
97
  if existing is None:
@@ -93,7 +103,11 @@ async def upsert_item(
93
103
 
94
104
 
95
105
  @router.delete("/items/{entity_id}", response_model=ItemDeleteResponse)
96
- async def delete_item(entity_id: str, _verified: VerifiedTokenDep) -> ItemDeleteResponse:
106
+ async def delete_item(
107
+ entity_id: str,
108
+ _auth: BearerAuthDep,
109
+ _verified: VerifiedTokenDep,
110
+ ) -> ItemDeleteResponse:
97
111
  rows = 1 if _ITEMS.pop(entity_id, None) is not None else 0
98
112
  if rows == 0:
99
113
  raise HTTPException(status_code=404, detail="item not found")
@@ -1,3 +0,0 @@
1
- from .auth_service import VerifiedTokenDep
2
-
3
- __all__ = ("VerifiedTokenDep",)
File without changes
File without changes