Skip to content

Commit 755ded0

Browse files
committed
Added Yandex Object request signatures
1 parent 896a7cf commit 755ded0

File tree

4 files changed

+36
-2
lines changed

4 files changed

+36
-2
lines changed

signa/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from .core import new, Factory
22

3-
__version__ = '0.2.2'
3+
__version__ = '0.2.3'

signa/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from signa.providers import s3
22
from signa.providers import onesignal
33
from signa.providers import dospaces
4+
from signa.providers import yaobject
45

56
PROVIDERS = {
67
's3': s3.new,
78
'onesignal': onesignal.new,
89
'dospaces': dospaces.new,
10+
'yaobject': yaobject.new,
911
}
1012

1113

signa/providers/yaobject.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from .aws import aws_headers
2+
3+
4+
def new(method=None, region=None, bucket=None, key=None,
5+
auth=None, headers=None, payload=None):
6+
headers = headers.copy() if headers else {}
7+
8+
assert (not region) or (region == 'ru-central1')
9+
10+
headers['host'] = 'storage.yandexcloud.net'
11+
region = 'ru-central1'
12+
13+
if key:
14+
rel_uri = '/%s/%s' % (bucket, key)
15+
else:
16+
rel_uri = '/%s' % bucket
17+
18+
headers.update(aws_headers(
19+
method=method,
20+
region=region,
21+
service='s3',
22+
uri=rel_uri,
23+
auth=auth,
24+
headers=headers,
25+
payload=payload
26+
))
27+
28+
return {
29+
'url': 'https://%s%s' % (headers['host'], rel_uri),
30+
'headers': headers,
31+
}

tests/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
aws_region = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')
1010
aws_access_key = os.environ.get('AWS_ACCESS_KEY_ID')
1111
aws_secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')
12+
aws_s3_provider = os.environ.get('AWS_S3_PROVIDER') or 's3'
1213
aws_s3_bucket = os.environ.get('AWS_S3_BUCKET')
1314
onesignal_app_id = os.environ.get('ONESIGNAL_APP_ID')
1415
onesignal_api_key = os.environ.get('ONESIGNAL_API_KEY')
@@ -24,7 +25,7 @@ def tearDown(self):
2425
def test_new_s3(self):
2526
key = 'test.txt'
2627
_ = signa.new(
27-
's3',
28+
aws_s3_provider,
2829
method='PUT',
2930
region=aws_region,
3031
bucket=aws_s3_bucket,

0 commit comments

Comments
 (0)