File tree Expand file tree Collapse file tree 4 files changed +55
-3
lines changed Expand file tree Collapse file tree 4 files changed +55
-3
lines changed Original file line number Diff line number Diff line change 77from ecies import decrypt , encrypt
88
99from aleph .sdk .conf import settings
10+ from aleph .sdk .utils import enum_as_str
1011
1112logger = logging .getLogger (__name__ )
1213
@@ -22,7 +23,16 @@ def get_verification_buffer(message: Dict) -> bytes:
2223 Returns:
2324 bytes: Verification buffer
2425 """
25- return "{chain}\n {sender}\n {type}\n {item_hash}" .format (** message ).encode ("utf-8" )
26+
27+ # Convert Enum values to strings
28+ return "\n " .join (
29+ (
30+ enum_as_str (message ["chain" ]),
31+ message ["sender" ],
32+ enum_as_str (message ["type" ]),
33+ message ["item_hash" ],
34+ )
35+ ).encode ()
2636
2737
2838def get_public_key (private_key ):
Original file line number Diff line number Diff line change 11import errno
22import logging
33import os
4+ from enum import Enum
45from pathlib import Path
56from shutil import make_archive
6- from typing import Tuple , Type
7+ from typing import Tuple , Type , Union
78from zipfile import BadZipFile , ZipFile
89
910from aleph_message .models import MessageType
@@ -76,3 +77,16 @@ def check_unix_socket_valid(unix_socket_path: str) -> bool:
7677 unix_socket_path ,
7778 )
7879 return True
80+
81+
82+ def enum_as_str (obj : Union [str , Enum ]) -> str :
83+ """Returns the value of an Enum, or the string itself when passign a string.
84+
85+ Python 3.11 adds a new formatting of string enums.
86+ `str(MyEnum.value)` becomes `MyEnum.value` instead of `value`.
87+ """
88+ if isinstance (obj , str ):
89+ return obj
90+ else :
91+ assert isinstance (obj , Enum )
92+ return obj .value
Original file line number Diff line number Diff line change 1+ from aleph_message .models import Chain , ItemType
2+
3+ from aleph .sdk .chains .common import get_verification_buffer
4+
5+
6+ def test_get_verification_buffer ():
7+ message = {
8+ "chain" : Chain .ETH ,
9+ "sender" : "0x101d8D16372dBf5f1614adaE95Ee5CCE61998Fc9" ,
10+ "type" : ItemType .inline ,
11+ "item_hash" : "bd79839bf96e595a06da5ac0b6ba51dea6f7e2591bb913deccded04d831d29f4" ,
12+ }
13+ assert get_verification_buffer (message ) == (
14+ b"ETH\n "
15+ b"0x101d8D16372dBf5f1614adaE95Ee5CCE61998Fc9\n "
16+ b"inline\n "
17+ b"bd79839bf96e595a06da5ac0b6ba51dea6f7e2591bb913deccded04d831d29f4"
18+ )
Original file line number Diff line number Diff line change 11from aleph_message .models import (
22 AggregateMessage ,
3+ Chain ,
34 ForgetMessage ,
5+ ItemType ,
46 MessageType ,
57 PostMessage ,
68 ProgramMessage ,
79 StoreMessage ,
810)
911
10- from aleph .sdk .utils import get_message_type_value
12+ from aleph .sdk .utils import enum_as_str , get_message_type_value
1113
1214
1315def test_get_message_type_value ():
@@ -16,3 +18,11 @@ def test_get_message_type_value():
1618 assert get_message_type_value (StoreMessage ) == MessageType .store
1719 assert get_message_type_value (ProgramMessage ) == MessageType .program
1820 assert get_message_type_value (ForgetMessage ) == MessageType .forget
21+
22+
23+ def test_enum_as_str ():
24+ assert enum_as_str ("simple string" ) == "simple string"
25+ assert enum_as_str (Chain ("ETH" )) == "ETH"
26+ assert enum_as_str (Chain .ETH ) == "ETH"
27+ assert enum_as_str (ItemType ("inline" )) == "inline"
28+ assert enum_as_str (ItemType .inline ) == "inline"
You can’t perform that action at this time.
0 commit comments