1
1
const { File } = require ( '@asyncapi/generator-react-sdk' ) ;
2
2
const _ = require ( 'lodash' ) ;
3
3
const { getRealSubscriber } = require ( '../helpers/all.js' )
4
- const { getFunctionNameByChannel } = require ( '../helpers/all.js' )
5
- const { getPayloadClass } = require ( '../helpers/all.js' )
4
+ const { functionName } = require ( '../helpers/all.js' )
5
+ const { payloadClass } = require ( '../helpers/all.js' )
6
6
const { getFirstPublisherMessenger } = require ( '../helpers/all.js' )
7
7
const { getMessengers } = require ( '../helpers/all.js' )
8
8
@@ -14,14 +14,10 @@ import time
14
14
import messaging
15
15
` ;
16
16
17
- if ( asyncapi . components ( ) && asyncapi . components ( ) . schemas ( ) ) {
18
- Object . entries ( asyncapi . components ( ) . schemas ( ) ) . forEach ( ( [ schemaName , schema ] ) => {
19
- const moduleName = _ . lowerFirst ( schemaName ) ;
20
- code += `from ${ moduleName } import ${ _ . upperFirst ( schemaName ) } \n` ;
21
- } ) ;
22
- } else {
23
- code += 'from payload import Payload\n' ;
24
- }
17
+ Object . entries ( asyncapi . components ( ) . schemas ( ) ) . map ( ( [ schemaName , schema ] ) => {
18
+ const moduleName = _ . lowerFirst ( schemaName ) ;
19
+ code += `from ${ moduleName } import ${ _ . upperFirst ( schemaName ) } \n` ;
20
+ } ) ;
25
21
26
22
code += `
27
23
# Config has the connection properties.
@@ -32,7 +28,22 @@ def getConfig():
32
28
return config
33
29
` ;
34
30
35
-
31
+ const channels = asyncapi . channels ( ) ;
32
+
33
+ Object . entries ( channels ) . map ( ( [ channelName , channel ] ) => {
34
+ const sub = getRealSubscriber ( [ asyncapi . info ( ) , params , channel ] ) ;
35
+ if ( sub ) {
36
+ const fnName = functionName ( [ channelName , channel ] ) ;
37
+ const payloadClasses = payloadClass ( sub ) ;
38
+ const varName = _ . lowerFirst ( payloadClasses ) ;
39
+ code += `def ${ fnName } (client, userdata, msg):
40
+ jsonString = msg.payload.decode('utf-8')
41
+ logging.info('Received json: ' + jsonString)
42
+ ${ _ . lowerFirst ( payloadClasses ) } = ${ payloadClasses } .from_json(jsonString)
43
+ logging.info('Received message: ' + str(${ _ . lowerFirst ( payloadClasses ) } ))
44
+ ` ;
45
+ }
46
+ } )
36
47
37
48
code += `
38
49
def main():
@@ -41,48 +52,46 @@ def main():
41
52
config = getConfig()
42
53
` ;
43
54
44
- // const publishMessenger = getFirstPublisherMessenger(params, asyncapi);
45
- // const messengers = getMessengers(params, asyncapi);
55
+ const publishMessenger = getFirstPublisherMessenger ( [ params , asyncapi ] ) ;
56
+ const messengers = getMessengers ( [ params , asyncapi ] ) ;
46
57
47
- // messengers.forEach(messenger => {
48
- // if (messenger.subscribeTopic) {
49
- // code += ` ${messenger.name} = messaging.Messaging(config, '${messenger.subscribeTopic}', ${messenger.functionName})\n`;
50
- // } else {
51
- // code += ` ${messenger.name} = messaging.Messaging(config)\n`;
52
- // }
58
+ messengers . forEach ( messenger => {
59
+ if ( messenger . subscribeTopic ) {
60
+ code += ` ${ messenger . name } = messaging.Messaging(config, '${ messenger . subscribeTopic } ', ${ messenger . functionName } )\n` ;
61
+ } else {
62
+ code += ` ${ messenger . name } = messaging.Messaging(config)\n` ;
63
+ }
53
64
54
- // if (publishMessenger) {
55
- // code += ` ${messenger.name}.loop_start()\n`;
56
- // } else {
57
- // code += ` ${messenger.name}.loop_forever()\n`;
58
- // }
59
- // });
65
+ if ( publishMessenger ) {
66
+ code += ` ${ messenger . name } .loop_start()\n` ;
67
+ } else {
68
+ code += ` ${ messenger . name } .loop_forever()\n` ;
69
+ }
70
+ } ) ;
60
71
61
- // if (publishMessenger) {
62
- // code += `
63
- // # Example of how to publish a message. You will have to add arguments to the constructor on the next line:
64
- // payload = ${publishMessenger.payloadClass}()
65
- // payloadJson = payload.to_json()
66
- // while True:
67
- // ${publishMessenger.name}.publish('${publishMessenger.publishTopic}', payloadJson)
68
- // time.sleep(1)
69
- // `;
70
- // }
72
+ if ( publishMessenger ) {
73
+ code += `
74
+ # Example of how to publish a message. You will have to add arguments to the constructor on the next line:
75
+ payload = ${ publishMessenger . payloadClass } ()
76
+ payloadJson = payload.to_json()
77
+ while True:
78
+ ${ publishMessenger . name } .publish('${ publishMessenger . publishTopic } ', payloadJson)
79
+ time.sleep(1)
80
+ ` ;
81
+ }
82
+
83
+ code += `if __name__ == '__main__':
84
+ main()`
71
85
72
86
return code ;
73
87
}
74
88
75
89
function MainFile ( { asyncapi, params } ) {
76
90
const generatedCode = generatePythonCode ( asyncapi , params ) ;
77
- // const allChannels = channels.all()
78
- console . log ( "HIIII" , asyncapi . channels ( ) )
79
- console . log ( "typeof" , typeof asyncapi . channels ( ) )
80
-
81
91
82
92
return (
83
93
< File name = "main.py" >
84
94
{ generatedCode }
85
- { /* {`heello from msin`} */ }
86
95
</ File >
87
96
) ;
88
97
}
0 commit comments