apexdevkit 1.30.3__tar.gz → 1.30.4__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.
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/PKG-INFO +1 -1
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/__init__.py +2 -1
- apexdevkit-1.30.4/apexdevkit/http/httpx/__init__.py +10 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/httpx/hooks.py +13 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/pyproject.toml +7 -1
- apexdevkit-1.30.3/apexdevkit/http/httpx/__init__.py +0 -6
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/LICENSE +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/README.md +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/annotation/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/annotation/deprecate.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/date.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/environment.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/error.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/builder.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/dependable.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/docs.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/name.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/resource.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/response.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/router.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/schema.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fastapi/service.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/fluent.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/formatter.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/fake.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/fluent.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/httpx/client.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/json.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/http/url.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/key_fn.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/py.typed +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/query/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/query/generator.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/query/query.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/database.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/decorator.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/interface.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/mixin.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/core/multi.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/in_memory/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/in_memory/mixin.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/in_memory/repository.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/in_memory/store.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/sql/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/sql/connector.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/sql/field.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/sql/mssql.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/repository/sql/sqlite.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/security/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/security/core.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/security/hashing.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/server.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/testing/__init__.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/testing/database.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/testing/fake.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/testing/rest.py +0 -0
- {apexdevkit-1.30.3 → apexdevkit-1.30.4}/apexdevkit/value.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .fake import FakeHttp
|
|
2
2
|
from .fluent import FluentHttp, FluentHttpRequest, FluentHttpResponse, Http, HttpMethod
|
|
3
|
-
from .httpx import Httpx, HttpxConfig
|
|
3
|
+
from .httpx import Httpx, HttpxConfig, SignPayloadWith
|
|
4
4
|
from .json import JsonDict
|
|
5
5
|
from .url import HttpUrl
|
|
6
6
|
|
|
@@ -13,6 +13,7 @@ __all__ = [
|
|
|
13
13
|
"HttpMethod",
|
|
14
14
|
"Httpx",
|
|
15
15
|
"HttpxConfig",
|
|
16
|
+
"SignPayloadWith",
|
|
16
17
|
"JsonDict",
|
|
17
18
|
"HttpUrl",
|
|
18
19
|
]
|
|
@@ -4,6 +4,9 @@ from dataclasses import dataclass
|
|
|
4
4
|
from typing import Generic, Protocol, TypeVar
|
|
5
5
|
|
|
6
6
|
import httpx
|
|
7
|
+
from httpx import Request, SyncByteStream
|
|
8
|
+
|
|
9
|
+
from apexdevkit.security import Authority
|
|
7
10
|
|
|
8
11
|
ContextT = TypeVar("ContextT", contravariant=True)
|
|
9
12
|
|
|
@@ -70,3 +73,13 @@ class AfterResponseHook:
|
|
|
70
73
|
self.handler.on_delete(response)
|
|
71
74
|
case _:
|
|
72
75
|
pass
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@dataclass(frozen=True)
|
|
79
|
+
class SignPayloadWith(DefaultHandler[Request]):
|
|
80
|
+
authority: Authority
|
|
81
|
+
|
|
82
|
+
def on_post(self, context: Request) -> None:
|
|
83
|
+
assert isinstance(context.stream, SyncByteStream)
|
|
84
|
+
signature = self.authority.sign(next(iter(context.stream)).decode())
|
|
85
|
+
context.headers[signature.name] = signature.value
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "apexdevkit"
|
|
3
|
-
version = "1.30.
|
|
3
|
+
version = "1.30.4"
|
|
4
4
|
description = "Apex Development Tools for python."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -24,6 +24,7 @@ approvaltests = "*"
|
|
|
24
24
|
pytest = "*"
|
|
25
25
|
pytest-approvaltests = "*"
|
|
26
26
|
pytest-cov = "*"
|
|
27
|
+
pytest-env = "^1.6.0"
|
|
27
28
|
pytest-recording = "*"
|
|
28
29
|
coverage = "*"
|
|
29
30
|
faker = "*"
|
|
@@ -80,3 +81,8 @@ source = [
|
|
|
80
81
|
skip_empty = true
|
|
81
82
|
skip_covered = true
|
|
82
83
|
show_missing = true
|
|
84
|
+
|
|
85
|
+
[tool.pytest]
|
|
86
|
+
env = [
|
|
87
|
+
"ECHO_SERVER=http://httpbin.org"
|
|
88
|
+
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|