dimp 2.3.4__tar.gz → 2.4.1__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.
- {dimp-2.3.4 → dimp-2.4.1}/PKG-INFO +99 -23
- {dimp-2.3.4 → dimp-2.4.1}/README.md +98 -22
- {dimp-2.3.4 → dimp-2.4.1}/dimp/__init__.py +142 -62
- {dimp-2.3.4 → dimp-2.4.1}/dimp/crypto/__init__.py +9 -21
- {dimp-2.3.4 → dimp-2.4.1}/dimp/crypto/algorithms.py +0 -15
- {dimp-2.3.4 → dimp-2.4.1}/dimp/dkd/__init__.py +48 -43
- {dimp-2.3.4/dimp/msg → dimp-2.4.1/dimp/dkd}/base.py +9 -8
- {dimp-2.3.4/dimp/msg → dimp-2.4.1/dimp/dkd}/envelope.py +8 -9
- {dimp-2.3.4/dimp/msg → dimp-2.4.1/dimp/dkd}/instant.py +37 -27
- {dimp-2.3.4/dimp/msg → dimp-2.4.1/dimp/dkd}/reliable.py +17 -16
- {dimp-2.3.4/dimp/msg → dimp-2.4.1/dimp/dkd}/secure.py +26 -39
- {dimp-2.3.4 → dimp-2.4.1}/dimp/ext/__init__.py +40 -25
- dimp-2.4.1/dimp/format/__init__.py +110 -0
- dimp-2.4.1/dimp/format/base.py +212 -0
- dimp-2.4.1/dimp/format/data.py +113 -0
- dimp-2.4.1/dimp/format/duri.py +285 -0
- dimp-2.4.1/dimp/format/embed.py +224 -0
- dimp-2.4.1/dimp/format/file.py +296 -0
- dimp-2.4.1/dimp/format/file_wrapper.py +191 -0
- dimp-2.4.1/dimp/format/pnf.py +182 -0
- dimp-2.4.1/dimp/format/pnf_wrapper.py +222 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp/mkm/__init__.py +24 -22
- {dimp-2.3.4 → dimp-2.4.1}/dimp/mkm/docs.py +48 -56
- {dimp-2.3.4 → dimp-2.4.1}/dimp/mkm/document.py +47 -56
- {dimp-2.3.4 → dimp-2.4.1}/dimp/mkm/meta.py +44 -28
- dimp-2.4.1/dimp/protocol/__init__.py +187 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/assets.py +42 -21
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/base.py +129 -94
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/commands.py +33 -22
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/contents.py +131 -64
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/docs.py +64 -24
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/files.py +201 -106
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/forward.py +54 -52
- dimp-2.4.1/dimp/protocol/groups.py +263 -0
- dimp-2.4.1/dimp/protocol/quote.py +235 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/receipt.py +36 -40
- {dimp-2.3.4 → dimp-2.4.1}/dimp/protocol/types.py +12 -61
- dimp-2.4.1/dimp/protocol/version.py +78 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp.egg-info/PKG-INFO +99 -23
- {dimp-2.3.4 → dimp-2.4.1}/dimp.egg-info/SOURCES.txt +16 -12
- dimp-2.4.1/dimp.egg-info/requires.txt +2 -0
- {dimp-2.3.4 → dimp-2.4.1}/setup.py +3 -3
- dimp-2.3.4/dimp/crypto/keys.py +0 -194
- dimp-2.3.4/dimp/crypto/pnf.py +0 -150
- dimp-2.3.4/dimp/crypto/ted.py +0 -154
- dimp-2.3.4/dimp/msg/__init__.py +0 -68
- dimp-2.3.4/dimp/protocol/__init__.py +0 -130
- dimp-2.3.4/dimp/protocol/app.py +0 -135
- dimp-2.3.4/dimp/protocol/groups.py +0 -466
- dimp-2.3.4/dimp/protocol/helpers.py +0 -41
- dimp-2.3.4/dimp/protocol/quote.py +0 -158
- dimp-2.3.4/dimp.egg-info/requires.txt +0 -2
- {dimp-2.3.4 → dimp-2.4.1}/LICENSE +0 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp.egg-info/dependency_links.txt +0 -0
- {dimp-2.3.4 → dimp-2.4.1}/dimp.egg-info/top_level.txt +0 -0
- {dimp-2.3.4 → dimp-2.4.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dimp
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.1
|
|
4
4
|
Summary: Decentralized Instant Messaging Protocol
|
|
5
5
|
Home-page: https://github.com/dimchat/core-py
|
|
6
6
|
Author: Albert Moky
|
|
@@ -49,7 +49,7 @@ from abc import ABC, abstractmethod
|
|
|
49
49
|
from enum import IntEnum
|
|
50
50
|
from typing import Optional, Dict
|
|
51
51
|
|
|
52
|
-
from dimp import
|
|
52
|
+
from dimp import *
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class HandshakeState(IntEnum):
|
|
@@ -78,12 +78,12 @@ class HandshakeCommand(Command, ABC):
|
|
|
78
78
|
~~~~~~~~~~~~~~~~~
|
|
79
79
|
|
|
80
80
|
data format: {
|
|
81
|
-
type : 0x88,
|
|
82
|
-
sn :
|
|
81
|
+
"type" : i2s(0x88),
|
|
82
|
+
"sn" : 12345,
|
|
83
83
|
|
|
84
|
-
command : "handshake", // command name
|
|
85
|
-
title : "Hello world!", // "DIM?", "DIM!"
|
|
86
|
-
session : "{SESSION_ID}", // session key
|
|
84
|
+
"command" : "handshake", // command name
|
|
85
|
+
"title" : "Hello world!", // "DIM?", "DIM!"
|
|
86
|
+
"session" : "{SESSION_ID}", // session key
|
|
87
87
|
}
|
|
88
88
|
"""
|
|
89
89
|
HANDSHAKE = 'handshake'
|
|
@@ -91,17 +91,23 @@ class HandshakeCommand(Command, ABC):
|
|
|
91
91
|
@property
|
|
92
92
|
@abstractmethod
|
|
93
93
|
def title(self) -> str:
|
|
94
|
-
raise
|
|
94
|
+
raise NotImplementedError(
|
|
95
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.title getter'
|
|
96
|
+
)
|
|
95
97
|
|
|
96
98
|
@property
|
|
97
99
|
@abstractmethod
|
|
98
100
|
def session(self) -> Optional[str]:
|
|
99
|
-
raise
|
|
101
|
+
raise NotImplementedError(
|
|
102
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.session getter'
|
|
103
|
+
)
|
|
100
104
|
|
|
101
105
|
@property
|
|
102
106
|
@abstractmethod
|
|
103
107
|
def state(self) -> HandshakeState:
|
|
104
|
-
raise
|
|
108
|
+
raise NotImplementedError(
|
|
109
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.state getter'
|
|
110
|
+
)
|
|
105
111
|
|
|
106
112
|
#
|
|
107
113
|
# Factories
|
|
@@ -175,42 +181,112 @@ class BaseHandshakeCommand(BaseCommand, HandshakeCommand):
|
|
|
175
181
|
### Extends Content
|
|
176
182
|
|
|
177
183
|
```python
|
|
178
|
-
from
|
|
184
|
+
from abc import ABC, abstractmethod
|
|
179
185
|
|
|
180
186
|
from dimp import *
|
|
181
187
|
|
|
182
188
|
|
|
183
|
-
class
|
|
189
|
+
class AppContent(Content, ABC):
|
|
190
|
+
"""
|
|
191
|
+
Content for Application 0nly
|
|
192
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
193
|
+
|
|
194
|
+
data format: {
|
|
195
|
+
"type" : i2s(0xA0),
|
|
196
|
+
"sn" : 12345,
|
|
197
|
+
|
|
198
|
+
"app" : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
199
|
+
"extra" : info // action parameters
|
|
200
|
+
}
|
|
201
|
+
"""
|
|
202
|
+
|
|
203
|
+
@property
|
|
204
|
+
@abstractmethod
|
|
205
|
+
def application(self) -> str:
|
|
206
|
+
""" App ID """
|
|
207
|
+
raise NotImplementedError(
|
|
208
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.application getter'
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class CustomizedContent(Content, ABC):
|
|
184
213
|
"""
|
|
185
214
|
Application Customized message
|
|
186
215
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
187
216
|
|
|
188
217
|
data format: {
|
|
189
|
-
type : i2s(
|
|
190
|
-
sn :
|
|
218
|
+
"type" : i2s(0xCC),
|
|
219
|
+
"sn" : 12345,
|
|
191
220
|
|
|
192
|
-
app : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
193
|
-
|
|
221
|
+
"app" : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
222
|
+
"mod" : "{MODULE}", // module name (e.g.: "drift_bottle")
|
|
223
|
+
"act" : "{ACTION}", // action name (e.g.: "throw")
|
|
224
|
+
"extra" : info // action parameters
|
|
194
225
|
}
|
|
195
226
|
"""
|
|
196
227
|
|
|
197
|
-
|
|
198
|
-
|
|
228
|
+
@property
|
|
229
|
+
@abstractmethod
|
|
230
|
+
def module(self) -> str:
|
|
231
|
+
""" Module Name """
|
|
232
|
+
raise NotImplementedError(
|
|
233
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.module getter'
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
@property
|
|
237
|
+
@abstractmethod
|
|
238
|
+
def action(self) -> str:
|
|
239
|
+
""" Action Name """
|
|
240
|
+
raise NotImplementedError(
|
|
241
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.action getter'
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
#
|
|
245
|
+
# Factory method
|
|
246
|
+
#
|
|
247
|
+
@classmethod
|
|
248
|
+
def create(cls, app: str, mod: str, act: str):
|
|
249
|
+
return AppCustomizedContent(app=app, mod=mod, act=act)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
from typing import Dict
|
|
254
|
+
|
|
255
|
+
from dimp import *
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
class AppCustomizedContent(BaseContent, AppContent, CustomizedContent):
|
|
259
|
+
|
|
260
|
+
def __init__(self, content: Dict = None,
|
|
261
|
+
msg_type: str = None,
|
|
262
|
+
app: str = None, mod: str = None, act: str = None):
|
|
199
263
|
if content is None:
|
|
200
|
-
# 1. new content with type,
|
|
201
|
-
assert app is not None
|
|
264
|
+
# 1. new content with type, application, module & action
|
|
265
|
+
assert app is not None and mod is not None and act is not None, \
|
|
266
|
+
'customized content error: %s, %s, %s, %s' % (msg_type, app, mod, act)
|
|
202
267
|
if msg_type is None:
|
|
203
|
-
msg_type = ContentType.
|
|
268
|
+
msg_type = ContentType.CUSTOMIZED
|
|
204
269
|
super().__init__(None, msg_type)
|
|
205
270
|
self['app'] = app
|
|
271
|
+
self['mod'] = mod
|
|
272
|
+
self['act'] = act
|
|
206
273
|
else:
|
|
207
274
|
# 2. content info from network
|
|
208
|
-
assert msg_type is None and app is None
|
|
275
|
+
assert msg_type is None and app is None and mod is None and act is None, \
|
|
276
|
+
'params error: %s, %s, %s, %s, %s' % (content, msg_type, app, mod, act)
|
|
209
277
|
super().__init__(content)
|
|
210
278
|
|
|
211
279
|
@property # Override
|
|
212
280
|
def application(self) -> str:
|
|
213
281
|
return self.get_str(key='app', default='')
|
|
282
|
+
|
|
283
|
+
@property # Override
|
|
284
|
+
def module(self) -> str:
|
|
285
|
+
return self.get_str(key='mod', default='')
|
|
286
|
+
|
|
287
|
+
@property # Override
|
|
288
|
+
def action(self) -> str:
|
|
289
|
+
return self.get_str(key='act', default='')
|
|
214
290
|
```
|
|
215
291
|
|
|
216
292
|
### Extends ID Address
|
|
@@ -219,5 +295,5 @@ class ApplicationContent(BaseContent, AppContent):
|
|
|
219
295
|
|
|
220
296
|
----
|
|
221
297
|
|
|
222
|
-
Copyright © 2018-
|
|
298
|
+
Copyright © 2018-2026 Albert Moky
|
|
223
299
|
[](https://github.com/moky?tab=followers)
|
|
@@ -35,7 +35,7 @@ from abc import ABC, abstractmethod
|
|
|
35
35
|
from enum import IntEnum
|
|
36
36
|
from typing import Optional, Dict
|
|
37
37
|
|
|
38
|
-
from dimp import
|
|
38
|
+
from dimp import *
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class HandshakeState(IntEnum):
|
|
@@ -64,12 +64,12 @@ class HandshakeCommand(Command, ABC):
|
|
|
64
64
|
~~~~~~~~~~~~~~~~~
|
|
65
65
|
|
|
66
66
|
data format: {
|
|
67
|
-
type : 0x88,
|
|
68
|
-
sn :
|
|
67
|
+
"type" : i2s(0x88),
|
|
68
|
+
"sn" : 12345,
|
|
69
69
|
|
|
70
|
-
command : "handshake", // command name
|
|
71
|
-
title : "Hello world!", // "DIM?", "DIM!"
|
|
72
|
-
session : "{SESSION_ID}", // session key
|
|
70
|
+
"command" : "handshake", // command name
|
|
71
|
+
"title" : "Hello world!", // "DIM?", "DIM!"
|
|
72
|
+
"session" : "{SESSION_ID}", // session key
|
|
73
73
|
}
|
|
74
74
|
"""
|
|
75
75
|
HANDSHAKE = 'handshake'
|
|
@@ -77,17 +77,23 @@ class HandshakeCommand(Command, ABC):
|
|
|
77
77
|
@property
|
|
78
78
|
@abstractmethod
|
|
79
79
|
def title(self) -> str:
|
|
80
|
-
raise
|
|
80
|
+
raise NotImplementedError(
|
|
81
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.title getter'
|
|
82
|
+
)
|
|
81
83
|
|
|
82
84
|
@property
|
|
83
85
|
@abstractmethod
|
|
84
86
|
def session(self) -> Optional[str]:
|
|
85
|
-
raise
|
|
87
|
+
raise NotImplementedError(
|
|
88
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.session getter'
|
|
89
|
+
)
|
|
86
90
|
|
|
87
91
|
@property
|
|
88
92
|
@abstractmethod
|
|
89
93
|
def state(self) -> HandshakeState:
|
|
90
|
-
raise
|
|
94
|
+
raise NotImplementedError(
|
|
95
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.state getter'
|
|
96
|
+
)
|
|
91
97
|
|
|
92
98
|
#
|
|
93
99
|
# Factories
|
|
@@ -161,42 +167,112 @@ class BaseHandshakeCommand(BaseCommand, HandshakeCommand):
|
|
|
161
167
|
### Extends Content
|
|
162
168
|
|
|
163
169
|
```python
|
|
164
|
-
from
|
|
170
|
+
from abc import ABC, abstractmethod
|
|
165
171
|
|
|
166
172
|
from dimp import *
|
|
167
173
|
|
|
168
174
|
|
|
169
|
-
class
|
|
175
|
+
class AppContent(Content, ABC):
|
|
176
|
+
"""
|
|
177
|
+
Content for Application 0nly
|
|
178
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
179
|
+
|
|
180
|
+
data format: {
|
|
181
|
+
"type" : i2s(0xA0),
|
|
182
|
+
"sn" : 12345,
|
|
183
|
+
|
|
184
|
+
"app" : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
185
|
+
"extra" : info // action parameters
|
|
186
|
+
}
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
@property
|
|
190
|
+
@abstractmethod
|
|
191
|
+
def application(self) -> str:
|
|
192
|
+
""" App ID """
|
|
193
|
+
raise NotImplementedError(
|
|
194
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.application getter'
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class CustomizedContent(Content, ABC):
|
|
170
199
|
"""
|
|
171
200
|
Application Customized message
|
|
172
201
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
173
202
|
|
|
174
203
|
data format: {
|
|
175
|
-
type : i2s(
|
|
176
|
-
sn :
|
|
204
|
+
"type" : i2s(0xCC),
|
|
205
|
+
"sn" : 12345,
|
|
177
206
|
|
|
178
|
-
app : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
179
|
-
|
|
207
|
+
"app" : "{APP_ID}", // application (e.g.: "chat.dim.sechat")
|
|
208
|
+
"mod" : "{MODULE}", // module name (e.g.: "drift_bottle")
|
|
209
|
+
"act" : "{ACTION}", // action name (e.g.: "throw")
|
|
210
|
+
"extra" : info // action parameters
|
|
180
211
|
}
|
|
181
212
|
"""
|
|
182
213
|
|
|
183
|
-
|
|
184
|
-
|
|
214
|
+
@property
|
|
215
|
+
@abstractmethod
|
|
216
|
+
def module(self) -> str:
|
|
217
|
+
""" Module Name """
|
|
218
|
+
raise NotImplementedError(
|
|
219
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.module getter'
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
@property
|
|
223
|
+
@abstractmethod
|
|
224
|
+
def action(self) -> str:
|
|
225
|
+
""" Action Name """
|
|
226
|
+
raise NotImplementedError(
|
|
227
|
+
f'Not implemented: {type(self).__module__}.{type(self).__name__}.action getter'
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
#
|
|
231
|
+
# Factory method
|
|
232
|
+
#
|
|
233
|
+
@classmethod
|
|
234
|
+
def create(cls, app: str, mod: str, act: str):
|
|
235
|
+
return AppCustomizedContent(app=app, mod=mod, act=act)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
```python
|
|
239
|
+
from typing import Dict
|
|
240
|
+
|
|
241
|
+
from dimp import *
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class AppCustomizedContent(BaseContent, AppContent, CustomizedContent):
|
|
245
|
+
|
|
246
|
+
def __init__(self, content: Dict = None,
|
|
247
|
+
msg_type: str = None,
|
|
248
|
+
app: str = None, mod: str = None, act: str = None):
|
|
185
249
|
if content is None:
|
|
186
|
-
# 1. new content with type,
|
|
187
|
-
assert app is not None
|
|
250
|
+
# 1. new content with type, application, module & action
|
|
251
|
+
assert app is not None and mod is not None and act is not None, \
|
|
252
|
+
'customized content error: %s, %s, %s, %s' % (msg_type, app, mod, act)
|
|
188
253
|
if msg_type is None:
|
|
189
|
-
msg_type = ContentType.
|
|
254
|
+
msg_type = ContentType.CUSTOMIZED
|
|
190
255
|
super().__init__(None, msg_type)
|
|
191
256
|
self['app'] = app
|
|
257
|
+
self['mod'] = mod
|
|
258
|
+
self['act'] = act
|
|
192
259
|
else:
|
|
193
260
|
# 2. content info from network
|
|
194
|
-
assert msg_type is None and app is None
|
|
261
|
+
assert msg_type is None and app is None and mod is None and act is None, \
|
|
262
|
+
'params error: %s, %s, %s, %s, %s' % (content, msg_type, app, mod, act)
|
|
195
263
|
super().__init__(content)
|
|
196
264
|
|
|
197
265
|
@property # Override
|
|
198
266
|
def application(self) -> str:
|
|
199
267
|
return self.get_str(key='app', default='')
|
|
268
|
+
|
|
269
|
+
@property # Override
|
|
270
|
+
def module(self) -> str:
|
|
271
|
+
return self.get_str(key='mod', default='')
|
|
272
|
+
|
|
273
|
+
@property # Override
|
|
274
|
+
def action(self) -> str:
|
|
275
|
+
return self.get_str(key='act', default='')
|
|
200
276
|
```
|
|
201
277
|
|
|
202
278
|
### Extends ID Address
|
|
@@ -205,5 +281,5 @@ class ApplicationContent(BaseContent, AppContent):
|
|
|
205
281
|
|
|
206
282
|
----
|
|
207
283
|
|
|
208
|
-
Copyright © 2018-
|
|
284
|
+
Copyright © 2018-2026 Albert Moky
|
|
209
285
|
[](https://github.com/moky?tab=followers)
|
|
@@ -28,18 +28,12 @@
|
|
|
28
28
|
# SOFTWARE.
|
|
29
29
|
# ==============================================================================
|
|
30
30
|
|
|
31
|
-
from
|
|
32
|
-
from mkm.format import *
|
|
33
|
-
from mkm.crypto import *
|
|
34
|
-
from mkm import *
|
|
35
|
-
from dkd import *
|
|
36
|
-
|
|
37
|
-
from .protocol.base import CommandFactory
|
|
38
|
-
from .protocol import *
|
|
31
|
+
from .format import *
|
|
39
32
|
from .crypto import *
|
|
33
|
+
from .protocol import *
|
|
40
34
|
from .mkm import *
|
|
41
35
|
from .dkd import *
|
|
42
|
-
from .
|
|
36
|
+
from .ext import *
|
|
43
37
|
|
|
44
38
|
|
|
45
39
|
name = "DIMP"
|
|
@@ -53,6 +47,7 @@ __all__ = [
|
|
|
53
47
|
'URI', 'DateTime',
|
|
54
48
|
|
|
55
49
|
'Converter', 'DataConverter', 'BaseConverter',
|
|
50
|
+
|
|
56
51
|
'Copier',
|
|
57
52
|
'Wrapper', 'Stringer', 'Mapper',
|
|
58
53
|
'ConstantString', # 'String',
|
|
@@ -73,8 +68,42 @@ __all__ = [
|
|
|
73
68
|
'json_encode', 'json_decode',
|
|
74
69
|
'utf8_encode', 'utf8_decode',
|
|
75
70
|
|
|
76
|
-
'
|
|
77
|
-
'
|
|
71
|
+
'TransportableResource',
|
|
72
|
+
'TransportableData',
|
|
73
|
+
|
|
74
|
+
'TransportableDataFactory',
|
|
75
|
+
|
|
76
|
+
'TransportableDataHelper',
|
|
77
|
+
'FormatExtensions', 'shared_format_extensions',
|
|
78
|
+
|
|
79
|
+
'Header', 'DataURI',
|
|
80
|
+
|
|
81
|
+
#
|
|
82
|
+
# TED
|
|
83
|
+
#
|
|
84
|
+
|
|
85
|
+
'EncodeAlgorithms',
|
|
86
|
+
|
|
87
|
+
'BaseString', 'BaseData',
|
|
88
|
+
|
|
89
|
+
'Base64Data', 'PlainData',
|
|
90
|
+
'EmbedData',
|
|
91
|
+
|
|
92
|
+
#
|
|
93
|
+
# PNF
|
|
94
|
+
#
|
|
95
|
+
|
|
96
|
+
'TransportableFile', 'TransportableFileFactory',
|
|
97
|
+
# 'TransportableFileHelper', 'TransportableFileExtension',
|
|
98
|
+
'TransportableFileWrapper', 'TransportableFileWrapperFactory',
|
|
99
|
+
# 'TransportableFileWrapperExtension',
|
|
100
|
+
|
|
101
|
+
'PortableNetworkFile',
|
|
102
|
+
'PortableNetworkFileWrapper',
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# ================================================================
|
|
106
|
+
|
|
78
107
|
|
|
79
108
|
#
|
|
80
109
|
# Digest
|
|
@@ -95,102 +124,153 @@ __all__ = [
|
|
|
95
124
|
|
|
96
125
|
'SymmetricKeyFactory', 'PrivateKeyFactory', 'PublicKeyFactory',
|
|
97
126
|
|
|
98
|
-
'
|
|
99
|
-
'BaseAsymmetricKey', 'BasePublicKey', 'BasePrivateKey',
|
|
127
|
+
'SymmetricKeyHelper', 'PublicKeyHelper', 'PrivateKeyHelper',
|
|
100
128
|
|
|
101
|
-
'
|
|
102
|
-
'
|
|
129
|
+
'SymmetricKeyExtension', 'PublicKeyExtension', 'PrivateKeyExtension',
|
|
130
|
+
'CryptoExtensions', 'shared_crypto_extensions',
|
|
103
131
|
|
|
104
132
|
#
|
|
105
|
-
#
|
|
133
|
+
# Algorithms
|
|
106
134
|
#
|
|
135
|
+
|
|
107
136
|
'AsymmetricAlgorithms', 'SymmetricAlgorithms',
|
|
108
|
-
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
# ================================================================
|
|
140
|
+
|
|
109
141
|
|
|
110
142
|
#
|
|
111
|
-
#
|
|
143
|
+
# Ming-Ke-Ming
|
|
112
144
|
#
|
|
113
145
|
|
|
114
146
|
'EntityType',
|
|
115
|
-
'Address',
|
|
116
|
-
'
|
|
117
|
-
'Meta',
|
|
118
|
-
'Document', 'Visa', 'Bulletin',
|
|
119
|
-
|
|
120
|
-
'MetaType', 'DocumentType',
|
|
147
|
+
'Address', 'ID',
|
|
148
|
+
'Meta', 'TAI', 'Document',
|
|
121
149
|
|
|
122
|
-
'AddressFactory',
|
|
123
|
-
'
|
|
124
|
-
'MetaFactory',
|
|
125
|
-
'DocumentFactory',
|
|
150
|
+
'AddressFactory', 'IDFactory',
|
|
151
|
+
'MetaFactory', 'DocumentFactory',
|
|
126
152
|
|
|
127
|
-
'Identifier',
|
|
128
|
-
'ANYONE', 'EVERYONE', 'FOUNDER',
|
|
129
153
|
'ANYWHERE', 'EVERYWHERE',
|
|
130
|
-
|
|
154
|
+
'ANYONE', 'EVERYONE', 'FOUNDER',
|
|
155
|
+
'BroadcastAddress', 'Identifier',
|
|
131
156
|
|
|
132
|
-
'
|
|
133
|
-
'
|
|
157
|
+
'AddressHelper', 'IDHelper',
|
|
158
|
+
'MetaHelper', 'DocumentHelper',
|
|
159
|
+
|
|
160
|
+
'AddressExtension', 'IDExtension',
|
|
161
|
+
'MetaExtension', 'DocumentExtension',
|
|
162
|
+
'AccountExtensions', 'shared_account_extensions',
|
|
134
163
|
|
|
135
164
|
#
|
|
136
|
-
#
|
|
165
|
+
# Dao-Ke-Dao
|
|
137
166
|
#
|
|
138
167
|
|
|
139
|
-
'
|
|
140
|
-
'Content',
|
|
141
|
-
'Envelope',
|
|
168
|
+
'Content', 'Envelope',
|
|
142
169
|
'Message',
|
|
143
170
|
'InstantMessage', 'SecureMessage', 'ReliableMessage',
|
|
144
171
|
|
|
145
|
-
|
|
172
|
+
'ContentFactory', 'EnvelopeFactory',
|
|
173
|
+
'InstantMessageFactory', 'SecureMessageFactory', 'ReliableMessageFactory',
|
|
174
|
+
|
|
175
|
+
'ContentHelper', 'EnvelopeHelper',
|
|
176
|
+
'InstantMessageHelper', 'SecureMessageHelper', 'ReliableMessageHelper',
|
|
177
|
+
|
|
178
|
+
'ContentExtension',
|
|
179
|
+
'InstantMessageExtension', 'SecureMessageExtension', 'ReliableMessageExtension',
|
|
180
|
+
'MessageExtensions', 'shared_message_extensions',
|
|
181
|
+
|
|
182
|
+
#
|
|
183
|
+
# Core Protocols
|
|
184
|
+
#
|
|
185
|
+
|
|
186
|
+
'MetaType',
|
|
187
|
+
'DocumentType',
|
|
188
|
+
'Visa', 'Bulletin',
|
|
189
|
+
|
|
190
|
+
'ContentType',
|
|
191
|
+
|
|
192
|
+
'Command', 'CommandFactory',
|
|
193
|
+
|
|
194
|
+
# 'CommandHelper', 'GeneralCommandHelper',
|
|
195
|
+
# 'CommandExtension', 'CmdExtension',
|
|
196
|
+
|
|
197
|
+
#
|
|
198
|
+
# Contents
|
|
199
|
+
#
|
|
200
|
+
|
|
146
201
|
'TextContent', 'PageContent', 'NameCard',
|
|
147
|
-
'ForwardContent', 'CombineContent', 'ArrayContent',
|
|
148
|
-
'FileContent', 'ImageContent', 'AudioContent', 'VideoContent',
|
|
149
202
|
'MoneyContent', 'TransferContent',
|
|
203
|
+
'FileContent', 'ImageContent', 'AudioContent', 'VideoContent',
|
|
204
|
+
'ForwardContent', 'CombineContent', 'ArrayContent',
|
|
150
205
|
'QuoteContent',
|
|
151
|
-
'
|
|
206
|
+
# 'QuoteHelper', 'QuotePurifier', 'QuoteExtension',
|
|
207
|
+
|
|
208
|
+
#
|
|
209
|
+
# Commands
|
|
210
|
+
#
|
|
152
211
|
|
|
153
|
-
# commands
|
|
154
|
-
'Command',
|
|
155
212
|
'MetaCommand', 'DocumentCommand',
|
|
156
213
|
'ReceiptCommand',
|
|
157
214
|
|
|
158
|
-
# group history
|
|
159
215
|
'HistoryCommand', 'GroupCommand',
|
|
160
216
|
'InviteCommand', 'ExpelCommand', 'JoinCommand', 'QuitCommand', 'ResetCommand',
|
|
161
|
-
'HireCommand', 'FireCommand', 'ResignCommand',
|
|
162
217
|
|
|
163
|
-
|
|
164
|
-
|
|
218
|
+
|
|
219
|
+
# ================================================================
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
#
|
|
223
|
+
# Account Implementations
|
|
224
|
+
#
|
|
225
|
+
|
|
226
|
+
'BaseMeta',
|
|
227
|
+
'BaseDocument', 'BaseVisa', 'BaseBulletin',
|
|
228
|
+
|
|
229
|
+
#
|
|
230
|
+
# Content Implementations
|
|
231
|
+
#
|
|
232
|
+
|
|
233
|
+
'BaseContent', 'BaseCommand',
|
|
234
|
+
# 'CommandHelper', 'GeneralCommandHelper',
|
|
235
|
+
# 'CommandExtension', 'CmdExtension',
|
|
236
|
+
|
|
165
237
|
'BaseTextContent', 'WebPageContent', 'NameCardContent',
|
|
166
|
-
'SecretContent', 'CombineForwardContent', 'ListContent',
|
|
167
|
-
'BaseFileContent', 'ImageFileContent', 'AudioFileContent', 'VideoFileContent',
|
|
168
238
|
'BaseMoneyContent', 'TransferMoneyContent',
|
|
239
|
+
'BaseFileContent', 'ImageFileContent', 'AudioFileContent', 'VideoFileContent',
|
|
240
|
+
'SecretContent', 'CombineForwardContent', 'ListContent',
|
|
169
241
|
'BaseQuoteContent',
|
|
170
|
-
'
|
|
242
|
+
# 'QuoteHelper', 'QuotePurifier', 'QuoteExtension',
|
|
171
243
|
|
|
172
|
-
# extend commands
|
|
173
|
-
'BaseCommand',
|
|
174
244
|
'BaseMetaCommand', 'BaseDocumentCommand',
|
|
175
245
|
'BaseReceiptCommand',
|
|
176
|
-
|
|
177
|
-
# extend group history
|
|
178
246
|
'BaseHistoryCommand', 'BaseGroupCommand',
|
|
179
|
-
'InviteGroupCommand', 'ExpelGroupCommand',
|
|
180
|
-
'JoinGroupCommand', 'QuitGroupCommand', 'ResetGroupCommand',
|
|
181
|
-
'HireGroupCommand', 'FireGroupCommand', 'ResignGroupCommand',
|
|
247
|
+
'InviteGroupCommand', 'ExpelGroupCommand', 'JoinGroupCommand', 'QuitGroupCommand', 'ResetGroupCommand',
|
|
182
248
|
|
|
183
249
|
#
|
|
184
|
-
# Message
|
|
250
|
+
# Message Implementations
|
|
185
251
|
#
|
|
186
252
|
|
|
187
253
|
'MessageEnvelope',
|
|
188
254
|
'BaseMessage',
|
|
189
255
|
'PlainMessage', 'EncryptedMessage', 'NetworkMessage',
|
|
190
256
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
257
|
+
|
|
258
|
+
# ================================================================
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
'GeneralCryptoHelper', 'GeneralCryptoExtension',
|
|
262
|
+
'GeneralAccountHelper', 'GeneralAccountExtension',
|
|
263
|
+
|
|
264
|
+
'GeneralMessageHelper', 'GeneralMessageExtension',
|
|
265
|
+
|
|
266
|
+
'TransportableFileHelper',
|
|
267
|
+
'TransportableFileExtension',
|
|
268
|
+
'TransportableFileWrapperExtension',
|
|
269
|
+
|
|
270
|
+
'CommandHelper', 'GeneralCommandHelper',
|
|
271
|
+
'CommandExtension', 'CmdExtension',
|
|
272
|
+
|
|
273
|
+
'QuoteHelper', 'QuotePurifier',
|
|
274
|
+
'QuoteExtension',
|
|
195
275
|
|
|
196
276
|
]
|