From b6f5198636a78558d7be15bbe45a12f4b8bcea82 Mon Sep 17 00:00:00 2001 From: Lukasz Gornicki Date: Mon, 22 May 2023 18:44:54 +0200 Subject: [PATCH] chore(blog): new article about writing code generator (#62) --- data/blog/asyncapi-codegen-python.mdx | 1063 +++++++++++++++++ .../asyncapicodegen/but-its-working.webp | Bin 0 -> 16468 bytes .../images/asyncapicodegen/cry-dev.webp | Bin 0 -> 10842 bytes .../asyncapicodegen/diagram-mistery.svg | 1 + .../asyncapicodegen/diagram-reveald.svg | 1 + .../images/asyncapicodegen/ihavespoken.webp | Bin 0 -> 10008 bytes .../images/asyncapicodegen/leave-room.webp | Bin 0 -> 42704 bytes .../asyncapicodegen/printing-press.webp | Bin 0 -> 6122 bytes .../asyncapicodegen/printing-template.webp | Bin 0 -> 66266 bytes .../asyncapicodegen/project-structure.webp | Bin 0 -> 15136 bytes .../asyncapicodegen/this-is-the-way.webp | Bin 0 -> 5418 bytes 11 files changed, 1065 insertions(+) create mode 100644 data/blog/asyncapi-codegen-python.mdx create mode 100644 public/static/images/asyncapicodegen/but-its-working.webp create mode 100644 public/static/images/asyncapicodegen/cry-dev.webp create mode 100644 public/static/images/asyncapicodegen/diagram-mistery.svg create mode 100644 public/static/images/asyncapicodegen/diagram-reveald.svg create mode 100644 public/static/images/asyncapicodegen/ihavespoken.webp create mode 100644 public/static/images/asyncapicodegen/leave-room.webp create mode 100644 public/static/images/asyncapicodegen/printing-press.webp create mode 100644 public/static/images/asyncapicodegen/printing-template.webp create mode 100644 public/static/images/asyncapicodegen/project-structure.webp create mode 100644 public/static/images/asyncapicodegen/this-is-the-way.webp diff --git a/data/blog/asyncapi-codegen-python.mdx b/data/blog/asyncapi-codegen-python.mdx new file mode 100644 index 0000000..8b66427 --- /dev/null +++ b/data/blog/asyncapi-codegen-python.mdx @@ -0,0 +1,1063 @@ +--- +title: 'Creating MQTT client code generator with AsyncAPI 2.x' +date: 2023-05-22 09:00:00Z +lastmod: '2023-05-23' +tags: ['asyncapi', 'codegen'] +draft: false +summary: "In this article I'm exploring how to create a code generation template. My requirements are to use AsyncAPI document and AsyncAPI Generator." +layout: PostSimple +--- + + + +tl;dr + +``` +if ('I only want to generate models from my schemas){ + return "https://www.asyncapi.com/tools/modelina" +} else { + return "https://www.asyncapi.com/tools/generator" +} +``` + +This article goes with the `else` option. + +## Intro to AsyncAPI Generator + +AsyncAPI Generator is a library that you need to use to generate apps, SDKs or docs. Generator itself is just a set of helpers and configurations. Generator do not have any logic about SDKs or other stuff that you'd like to generate. The part that defines what should be generated is what we call `Template`. + +What the heck is this? `Generator` and `Template`? + +Do you know Johannes Gutenberg and his printing press? not personally of course, he is dead...he died almost 600y ago. Gutenberg is not important in this story, but his printing press. + +picture showing old printing press + +So `Generator` is like printing press. It helps you to print stuff at scale, but alone, it is useless. Printing press needs input, a `Template` and your AsyncAPI document. + +picture showing printing press template + +In your AsyncAPI document you describe your application, its interface, its actions. In the `Template` you say what part of the document should be used for a specific print output. So basically when you feed `Generator` with your AsyncAPI document and the `Template`, in `Template` you specify where `asyncapi.info.title()` taken from AsyncAPI document should be rendered. + +## Community Templates + +You do not have to create a `Template` to generate something out of your AsyncAPI document. There are many [community maintained templates](https://www.asyncapi.com/docs/tools/generator/template#generator-templates-list), but for sure many others are missing. + +Sometimes you need to create your custom template, tailored for your use case, which is completely fine. Just please remember, maintaining a template together with the community makes maintainance easier and also helps other community members to save on development time. + +## Prerequisite before template development + +As I explained earlier, all the fun makes sense when the generator gets the template and AsyncAPI document. Thus before you start writing the template, you definitely need some sample AsyncAPI document that you will test your template with. + +The template that I develop as part of this article is based on the following example: + +```yml +asyncapi: 2.6.0 + +info: + title: Comments Service + version: 1.0.0 + description: This service is in charge of processing all the events related to comments. + +servers: + dev: + url: test.mosquitto.org + protocol: mqtt + +channels: + comment/liked: + description: Updates the likes count in the database when new like is noticed. + publish: + operationId: commentLiked + message: + description: Message that is being sent when a comment has been liked by someone. + payload: + $ref: '#/components/schemas/commentId' + +# It is a very good practice to write your AsyncAPI document with reusability in heart from the start. +# Even if you have one schema, put it in components and assign a name to it. +components: + schemas: + commentId: + type: object + additionalProperties: false + properties: + commentId: + type: string +``` + +I created `asyncapi.yml` document in new `test/fixtures` directory in my template project. + +## Creating first template + +For the sake of this article I will create a template that will support MQTT protocol and generate a Python client. + +I'm not a Python developer. This will actually be my first time I write some Python code, but I'm not worried, I'll try to get some inspiration from [articles like this one](https://medium.com/python-point/mqtt-basics-with-python-examples-7c758e605d4) and see if AI will be able to help a bit. + +Why Python then and not my beloved JavaScript? + +> The noisy sound of people leaving the room because they've heard the author loves JavaScript! + +picture of people leaving the room + +I wanted to use Python as my lovely wife is learning it now, and I want to be able to mentor her on a long run. + +### Template tech stack + +Template is a standalone project that is not part of the `Generator` library logic and its codebase. You can store a template code wherever you want. + +AsyncAPI Generator is written in JavaScript. + +> Java people already left the room anyway, but now the rest, TypeScript lovers, left + +Ok, now we have only people with strong character left... :) + +AsyncAPI Generator is written in JavaScript and uses [npm](https://www.npmjs.com/) libraries to pass template logic through the generator. In other words, when you tell AsyncAPI Generator to use `Template A`, the generator basically does `npm install` of the template. Thanks to this approach templates can be stored anywhere, like package registries, remote repository or just a tarball file - basically whatever `npm install` supports now. + +### Basic template structure + +I store all template code in folder called `python-mqtt-client-template`. + +1. First I create a `package.json` like you see below: + + ```json + { + "name": "python-mqtt-client-template", + "version": "0.0.1", + "generator": { + "renderer": "react", + "apiVersion": "v1", + "generator": ">=1.10.0 <2.0.0", + "supportedProtocols": ["mqtt"] + }, + "dependencies": { + "@asyncapi/generator-react-sdk": "^0.2.25" + } + } + ``` + + AsyncAPI Generator supports two ways of writing templates: + + - Using [Nunjucks templating language](https://mozilla.github.io/nunjucks/) + - Using [React](https://www.asyncapi.com/blog/react-as-generator-engine) + + Don't use the first one. Every AsyncAPI Generator maintainer lost a lot of hair debugging Nunjucks templates. One day it will be deprecated. + + Lets see what is there in the `package.json`, guessing that `name` and `version` do not require intro: + + - `generator` is where I specify [generator specific configuration](https://www.asyncapi.com/docs/tools/generator/configuration-file). + - `renderer` is where I specify that the generator should push my template through react rendering engine, + - `apiVersion` is where I specify that I want to use in my template the latest and gratest [Parser API](https://github.com/asyncapi/parser-api/blob/master/docs/v1.md) for extracting information from AsyncAPI documents, + - `generator` is where I specify what versions of generator is my template compatible with. I don't know if AsyncAPI Generator 2.0 will bring changes that will break my template. I want my template users to have good experience and get a nice human-readable message from the generator that my template is not compatible with certain version of the generator. Also the `apiVersion` was introduced in the generator `1.10.0` so I know my template won't work with older version, + - `supportedProtocols` is where I specify what protocols my template supports. Again purely developer experience related setting. I could leave that out, but no. I do not want user of my template to get undefined errors if they use `kafka` but a nice human-readable info that my template is at the moment compatible only with the `mqtt` protocol, + - `dependencies > @asyncapi/generator-react-sdk` is where I specify what version of `@asyncapi/generator-react-sdk` should be used. This package contains a set of useful components that you MUST use in your template. + +1. Since there are dependencies added, I need them locally, so I run `npm install`, +1. Now I create `template` folder where all my template code will be located + +### Create highway to heaven + +Or to hell, if you are a developer that loves strongly typed languages but agile drawing machine drum picked you to work on the template with JavaScript. + +picture of crying emoji looking at drawing machine + +Everything starts in `index.js` + +```js +import { File } from '@asyncapi/generator-react-sdk' + +export default function ({ asyncapi }) { + return {asyncapi.info().title()} +} +``` + +First template file and you already see `@asyncapi/generator-react-sdk` dependency is a must have. Among other components, it contains a `File` component that you need to use to specify that given template file must return a phisical file. + +Focus your eyes on `{ asyncapi.info().title() }` as this is most important. Template files get access to many different goodies thanks to the generator, one of those is `asyncapi` that is not representing your AsyncAPI document 1:1 but it is an instance of the [AsyncAPI Parser](https://www.asyncapi.com/docs/tools/generator/parser). The AsyncAPI Parser responsible for validating AsyncAPI documents and giving you an API that makes it much easier to extract information from AsyncAPI document. + +In other words `{ asyncapi.info().title() }` means that `asyncapi` contains a set of helper functions like `info()` that returns the `Info` object from an AsyncAPI document: + +```yml +# ...(redacted for brevity) +info: + title: Comments Service + version: 1.0.0 + description: This service is in charge of processing all the events related to comments. +# ...(redacted for brevity) +``` + +And the `title()` helper let's you extract the title from the `Info` object. + +Lets see if it will work and the template is valid. + +### Test the highway + +[AsyncAPI CLI](https://www.asyncapi.com/tools/cli) is a terminal tool that integrates different AsyncAPI tools that allow you to do different things with your AsyncAPI documents, like validation, optimization, bunding and others. + +You probably guessed already that AsyncAPI Generator is there too. + +#### Install AsyncAPI CLI + +Well, yes, this one is written in JavaScript as well. Like the source code is in TypeScript, but whatever, installation still requires you do run: + +```bash +npm install -g @asyncapi/cli +``` + +But calm down, we know people that do not like JS, also can't imagine installing node and npm. AsyncAPI CLI is also published as binaries dedicated to different operating systems. + +I'm Mac user so I like this one the most: `brew install asyncapi`. + +For more options just [check out the docs](https://www.asyncapi.com/docs/tools/cli/installation). + +#### Use AsyncAPI CLI to test Template + +tl;dr just run `asyncapi generate fromTemplate test/fixtures/asyncapi.yml ./ --output test/project` + +- `asyncapi generate fromTemplate` is the way to use AsyncAPI Generator in the CLI, +- `test/fixtures/asyncapi.yml` is how you provide the AsyncAPI document to the generator. Can be URL if you want. +- `./` since this article describes how to write template, I explain how to run generation from local template sources. I assume you call `asyncapi generate fromTemplate` from the directory where your template project is located, +- `--output test/project` is how you specify the folder where code should be generated + +In case all is good, success looks like below: + +```bash +Generation in progress. Keep calm and wait a bit... done +Check out your shiny new generated files at test/project. +``` + +Looks the same on your side, right? + +meme saying that it works on my computer + +I can see `client.js` file in `test/project` directory and the only content is `Comments Service`. + +### Let's finally create that client + +Nobody does it this way, like write template from scratch directly. At least I can't imagine doing it. My brain can't get on that level of abstraction. + +Anyway, this is my article and we do it my way: + +1. Create some real working client code +1. Create some test code that uses the client +1. Update template with working client code +1. Setup some script that will help you run this code quickly to test +1. Start templating your code + +mandalorian image with this is the way inscription + +### Create some real working client code + +I'm not a Pyton dev and to save my time to get some real working code I used ChatGPT for the first time. I could get some code with additional refactoring in just few minutes. + +This is the module for the client I have in `client.py` file in the `test/project`: + +```python +import paho.mqtt.client as mqtt + +mqttBroker = "test.mosquitto.org" + +class CommentsServiceClient: + def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker) + + + def sendCommentLiked(self, id): + topic = "comment/liked" + self.client.publish(topic, id) +``` + +I'm using here an MQTT client from [Eclipse Paho](https://www.eclipse.org/paho/) project to connect to the MQTT broker. In this article I will not explain what MQTT is and its use case, instead, I send you to [article about MQTT in IoT](https://medium.com/python-point/mqtt-basics-with-python-examples-7c758e605d4). + +Instead of spinning my own broker instance, I'm using a public test instance of [Eclipse Mosquitto broker](https://test.mosquitto.org/). + +You will have to install that Paho package with `pip install paho-mqtt`. + +The idea is that if somebody wants to interact with my `Comments Service` they do it using my client module. Just create instance of the client like `client = CommentsServiceClient()` and then use `client.sendCommentLiked` function to publish messages that `Comments Service` is subscribed to. + +This is what the purpose of the client is, right? User do not need the info about the server and topic name. User just needs a helper function with clear info about what data should be passed to it. + +### Create some test code that uses the client + +Let me try it in action. I created `test.py` in `test/project` directory that looks like below: + +```py +from client import CommentsServiceClient +from random import randrange +import time + +client = CommentsServiceClient() + +id_length = 8 +min_value = 10**(id_length-1) # Minimum value with 8 digits (e.g., 10000000) +max_value = 10**id_length - 1 # Maximum value with 8 digits (e.g., 99999999) + +while True: + randomId = randrange(min_value, max_value + 1) + client.sendCommentLiked(randomId) + print("New like for comment " + str(randomId) + " sent to comment/liked") + time.sleep(1) +``` + +The code focuses only on sending the message, no need for any configurations, all is provided by the client instance. +Rest of the code is only focused on generating some random comment ID and then endlessly sending it to the broker. + +After calling `python test.py` I see the following logs: + +```bash +New like for comment 39097159 sent to comment/liked +New like for comment 13144095 sent to comment/liked +New like for comment 19962377 sent to comment/liked +New like for comment 10554318 sent to comment/liked +``` + +But how do I know it works? There are no errors comming from the broker. +How can I be 100% sure that the message I'm sending is actually reaching the broker and potential consumers? + +diagram showing event driven flow with broker in the middle and unknown consumer + +I need to emulate some consumer that will subscribe to `comment/liked` and will log information about received message. I could write another python script that subscribes to the topic, but that would complicate the article too much and better is just use some MQTT CLI, and best to do it through docker. + +```bash +docker run hivemq/mqtt-cli sub -t comment/liked -h test.mosquitto.org +``` + +Nothing more is needed. CLI connects to broker and subscribes to `comment/liked` and I should see incomming comment IDs: + +```bash +$ docker run hivemq/mqtt-cli sub -t comment/liked -h test.mosquitto.org +60982511 +93401458 +47315214 +30191547 +``` + +All the dots are connected: + +diagram showing event driven flow with broker in the middle and known consumer + +### Update template with working client code + +This part is the simplest. I copy contents of my `client.py` and replace what I had in my `index.js`. +To be exact, I replace `asyncapi.info().title()` and result is: + +```js +import { File } from '@asyncapi/generator-react-sdk' + +export default function ({ asyncapi }) { + return ( + + {`import paho.mqtt.client as mqtt + +mqttBroker = "test.mosquitto.org" + +class CommentsServiceClient: + def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker) + + + def sendCommentLiked(self, id): + topic = "comment/liked" + self.client.publish(topic, id)`} + + ) +} +``` + +This is not all yet. There are hardcodes, right? + +### Setup script that runs test code + +Last step before actuall template work. During template development I will go back and forth quite a lot, so it would be nice to have a script that I can run to use the client, if it is still working. + +Let's laverage the fact that templates are Node.js projects and that we use `package.json`. + +In `package.json` you can have `scripts` property that later you can invoke by calling `npm run `. + +Before I show you my scripts, lets have a look at the current structure of the project: + +picture showing project structure + +This are the scripts: + +```json + "scripts": { + "test:clean": "rimraf test/project/client.js", + "test:generate": "asyncapi generate fromTemplate test/fixtures/asyncapi.yml ./ --output test/project --force-write", + "test:start": "python test/project/test.py", + "test": "npm run test:clean && npm run test:generate && npm run test:start" + } +``` + +For clarity I created four scripts, to make it clear what each step of `test` script is doing. + +> You probably noticed something confusing, that is called `rimraf`. This is pretty standard package Node.js folks use in npm scripts for cleanup. The `rimraf` package is used to perform deletion. You will need to add it as development dependency to the template like this: `npm install rimraf --save-dev` + +- `test:clean` is needed because every time you run your test, you need to remove the old version of generated `client.py` +- `test:generate` is responsible for calling AsyncAPI CLI to generate fresh version of `client.py` +- `test:start` is for callin test python code that uses the `client.py` + +And the only thing I have to do in terminal to check if my generated code works is: `npm test`. + +### This time we can really start templating + +The first part of the code that requires templating is: + +```js +mqttBroker = 'test.mosquitto.org' +``` + +The URL of the broker is not a static information, especially in professional environment where you have different instances of broker, for production and testing. + +In AsyncAPI document you can provide a list of different servers, but when you generate client code, it is for one of servers only. + +AsyncAPI Generator has cool feature that allows you to make template configurable in runtime. It is called `parameters`. + +#### Adding first parameters config + +In `package.json` under `generator` property (the one where I already specified that the template is created with react render engine), I add `parameters` object. +I use it to define a set of different parameters that user can pass to template in runtime and dynamically modify the output. + +There is one special parameter that the generator supports and it is called `server`. It means that in the runtime I can say that "please generate code for me, but for server A" so in template code it is later much easier to extract server details from the AsyncAPI document. + +Ok, bla bla bla. Give examples as for now it sounds misterious. + +I added below to my `package.json`: + +```json + "generator": { + # ...(redacted for brevity) + "parameters": { + "server": { + "description": "The server you want to use in the code.", + "required": true + } + } + } +``` + +> "required": true makes the parameter mandatory and once user forgets about it, proper error message is yield + +This means that later when I trigger generation with AsyncAPI CLI, I can pass to the generator information about server to be used in generated client: + +``` +--param server=dev +``` + +It simplifies template code a lot because I can then extract the URL of the server like this: + +```js +// "params" is a parametes object that generator injects into the template in runtime +// "asyncapi" is the instance of the parsed AsyncAPI document that I mentioned earlier in the article +asyncapi.servers().get(params.server).url() +``` + +So the template for now looks like: + +```js +import { File } from '@asyncapi/generator-react-sdk' + +// notice that now the template not only gets the instance of parsed AsyncAPI document but also the parameters +export default function ({ asyncapi, params }) { + return ( + + {`import paho.mqtt.client as mqtt + +mqttBroker = "${asyncapi.servers().get(params.server).url()}" + +class CommentsServiceClient: + def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker) + + + def sendCommentLiked(self, id): + topic = "comment/liked" + self.client.publish(topic, id)`} + + ) +} +``` + +If you follow the article the right way, you did `npm test` now and the test code created few chapters below works. + +#### Side small talk about React + +This is the moment where I feel like I need to share more about React before I throw you at code like this: + +```js + + import paho.mqtt.client as mqtt + + + + mqttBroker = "{ asyncapi.servers().get(params.server).url() }" + + + + class { asyncapi.info().title().replaceAll(" ", "") }Client: + + + + {`def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker)`} + + + + + +``` + +> This is the moment backend developer says: "what the hell is it, HTML in a template for code generator?" + +I hope this code do not look scary, but if it does, lemme sell it to you. + +First of all do not be scared of word **REACT**. You do not have to learn a lot about it to create templates. +You will not have to write code like this: + +```js +class ClassComponent extends React.Component { + constructor(props) { + super(props) + } + + render() { + // In `childrenContent` prop is stored `text wrapped by custom component\n\n`. + // The content of the `children` prop is transformed to string and saved to the `childrenContent` prop. + return this.props.childrenContent + } +} +``` + +Above code scares the hell out of me too. You only need to know the generic concept of components in modern frontend frameworks. +They exist to enable composition and reusability. + +You need to remember that: + +- Your component should return string +- You can reuse components and they can behave differently depending on the props you pass to them + +Maybe I'm biased, but please look at below samples of template, written with classical templating enginge, Nunjucks, and React: + +```js +//Nunjucks + +{% macro list(data, type = "-") %} +{% for item in data %} +{{type}} {{item}} +{% endfor %} +{% endmacro %} + +{% from "partials/list.njk" import list %} +{{ list(["one", "two", "three"]) }} +``` + +```js +//React + +function List({ list = [], type = '-' }) { + return list.map((item) => `${type} ${item}\n`) +} + +// use `List` component in another component +export function SimpleList() { + return +} +``` + +Look into a mirror and answer that super important question every developer has to answer: "which code would you prefer to maintain in the future". + +React toolset, community support, IDEs plugings. I can go on and on about it. + +AsyncAPI Generator still supports Nunjucks, but yeah, don't go this way. + +During development of this article, I had an error in code of my template and I got below super clear feedback what and where is wrong: + +```bash +Generator Error: /Users/wookiee/sources/example-template/template/index.js: Unexpected token (41:67) + + 39 | + 40 | +> 41 | mqttBroker = "{ asyncapi.servers().get(params.server).url( }" + | ^ + 42 | + 43 | + 44 | +``` + +Good luck having the same experience with Nunjucks. + +I have spoken mandalorian meme + +#### Small refactoring + +In React the only disadvantage is that whatever component returns is a not formatted string. This means you need to care for new lines and indents. + +Luckily the dependency I added at the beginning to my template have what I need. I import a `Text` component that I will use to wrap strings that need to be indent properly: + +```js +import { File, Text } from '@asyncapi/generator-react-sdk' +``` + +Maybe when you generate code you do not care that much on structure and proper indents, but yeah, I picked Python for that excercise, + +``` + this is why + indents + are pretty + important here +``` + +First I will refactor just part of this code: + +```js +// ...(redacted for brevity) + + {`import paho.mqtt.client as mqtt + +mqttBroker = "${asyncapi.servers().get(params.server).url()}" +// ...(redacted for brevity) + `} + +``` + +It doesn't look nice because of indents. + +Paho module import `import paho.mqtt.client as mqtt` is static. I turn it into: + +```js +import paho.mqtt.client as mqtt +``` + +This way I assure that once this line of code is rendered in `client.py` file, it will add two extra new lines. + +Next is broker URL: + +```js +mqttBroker = '${asyncapi.servers().get(params.server).url()}' +``` + +I turn it into: + +```js +mqttBroker = "{asyncapi.servers().get(params.server).url()}" +``` + +You can see a slight difference between how dynamic information is templated in a string (first version) with `$` and inside components it is slightly different without `$`. + +#### Templating class + +The final part of the code that needs templating is: + +```py +class CommentsServiceClient: + + def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker) + + def sendCommentLiked(self, id): + topic = "comment/liked" + self.client.publish(topic, id) +``` + +First I focus on class name and the `__init__` function. + +Design of my client assumes that there is always one class, no matter how many channels are there in the AsyncAPI document. +This means I need to pick the class name from the AsyncAPI document from the `Info` object, and not `Channels`. +Using the Parser API inside the template code it will be something like: + +```js +asyncapi.info().title() +``` + +This returns `Comments Service` string therefore in the template code I need to make sure there are no spaces, and there is `Client` suffix. Final code looks like this: + +```js +class {asyncapi.info().title().replaceAll(' ', '')}Client: +``` + +There is no templating needed in the `__init__` function, there are only hardcoded information: + +```js + + {`def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker)`} + +``` + +#### Creating first component - templating functions + +Last part is how to make sure that the template, inside single class, renders as many functions as there are channels in AsyncAPI document. + +In case of templating I will need to focus on function name that will be dynamic and based on the channel operation and the `operationId` value. + +To extract more specific information from the AsyncAPI document this time I will write some helper function and also create a reusable component that I can use like this: + +```js + +``` + +Is component really necessary here? No, components are best when you know you need reusability. Just imagine use case where you need functions that not only send but also read from broker: + +```js + + +``` + +I use component, because my article goal is to educate how to write a template, I want to show you how to write a component as well. + +You can do it without using components, because as I explained earlier, it is all about strings, so just write a plain JavaScript function that returns string. This could be a potential pseudo code without component: + +```js +{getTopicFunctions()} +``` + +Now let me make sure that class `CommentsServiceClient` gets as many functions as there are channels in AsyncAPI document that contain `publish` operation. + +Basically imagine there is another channel that describes usage of topic `comment/unliked`. So the generated code would look like: + +```py +import paho.mqtt.client as mqtt + +mqttBroker = "test.mosquitto.org" + +class CommentsServiceClient: + + def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker) + + def sendCommentLiked(self, id): + topic = "comment/liked" + self.client.publish(topic, id) + def sendCommentUnliked(self, id): + topic = "comment/unliked" + self.client.publish(topic, id) +``` + +I need to template `sendCommentLiked` and `sendCommentUnliked` that are dynamic basing on AsyncAPI document content. + +My goal is to get working template code like: + +```js + + + +``` + +You can see that I want to have `TopicFunction` component that I could reuse in other scenarios to return topic-dedicated functions. + +In my scenario, I specify that I want functions only for channels that `Comments Service` application is subscribed to. +In other words, I only want send functions. + +Recommended path is to put reusable components outside `template` directory in a new directory called `components`, surprise surprise. + +I end up with code in `components/TopicFunction.js` that looks like this: + +```js +/* + * This component returns a blok of functions that user can use to send messages to specific topic. + * As input it requires a list of Channel models from the parsed AsyncAPI document + */ +export function TopicFunction({ channels }) { + const topicsDetails = getTopics(channels) + let functions = '' + + topicsDetails.forEach((t) => { + functions += `def send${t.name}(self, id): + topic = "${t.topic}" + self.client.publish(topic, id)\n` + }) + + return functions +} +``` + +Not that scarry right? component is just another lovely JavaScript function. + +I don't think there is much to explain here other than below: + +```js +{ + channels +} +``` + +This component argument is a standard way of enabling component to accept custom props. You can see here the `channels` prop I showed in action in a component few paragraphs above: + +```js + + + +``` + +The component must return a string and this is what it is doing. + +You can now ask what is `getTopics(channels)` function responsible for. + +```js +/* + * This function returns a list of objects, one for each channel with two properties, name and topic + * name - holds information about the operationId provided in the AsyncAPI document + * topic - holds information about the address of the topic + * + * As input it requires a list of Channel models from the parsed AsyncAPI document + */ +function getTopics(channels) { + const channelsCanSendTo = channels + let topicsDetails = [] + + channelsCanSendTo.forEach((ch) => { + const topic = {} + const operationId = ch.operations().filterByReceive()[0].id() + topic.name = operationId.charAt(0).toUpperCase() + operationId.slice(1) + topic.topic = ch.address() + + topicsDetails.push(topic) + }) + + return topicsDetails +} +``` + +Channel in AsyncAPI document holds a lot of different information. It is good for clarity to have separate testable code where you extract specific information from the AsyncAPI docs. + +I won't explain entire JavaScript code but focus on the part where data is extracted from single channel: + +```js +topic.topic = ch.address() +const operationId = ch.operations().filterByReceive()[0].id() +topic.name = operationId.charAt(0).toUpperCase() + operationId.slice(1) +``` + +Using Parser API I extract the channel address and record it as `topic`. In case of name of function I decided to use `operationId` of the operation associated with the channel. + +You can see that I assume that there is just one operation. Which is completely fine prior 3.0 AsyncAPI spec and most pobably even in 3.0 people will still not have multiple receiving operations on the same channel, not in MQTT. +To not complicate article and code more than needed, I just pick first operation from the list. + +Final version of `components/TopicVariable.js` is: + +```js +/* + * This component returns a blok of functions that user can use to send messages to specific topic. + * As input it requires a list of Channel models from the parsed AsyncAPI document + */ +export function TopicFunction({ channels }) { + const topicsDetails = getTopics(channels) + let functions = '' + + topicsDetails.forEach((t) => { + functions += `def send${t.name}(self, id): + topic = "${t.topic}" + self.client.publish(topic, id)\n` + }) + + return functions +} + +/* + * This function returns a list of objects, one for each channel with two properties, name and topic + * name - holds information about the operationId provided in the AsyncAPI document + * topic - holds information about the address of the topic + * + * As input it requires a list of Channel models from the parsed AsyncAPI document + */ +function getTopics(channels) { + const channelsCanSendTo = channels + let topicsDetails = [] + + channelsCanSendTo.forEach((ch) => { + const topic = {} + const operationId = ch.operations().filterByReceive()[0].id() + topic.name = operationId.charAt(0).toUpperCase() + operationId.slice(1) + topic.topic = ch.address() + + topicsDetails.push(topic) + }) + + return topicsDetails +} +``` + +And now, in my template, in `index.js` I can import the component and this is how final code looks like, readable and testable: + +```js +import { File, Text } from '@asyncapi/generator-react-sdk' +import { TopicFunction } from '../components/TopicFunction' + +export default function ({ asyncapi, params }) { + return ( + + import paho.mqtt.client as mqtt + + mqttBroker = "{asyncapi.servers().get(params.server).url()}" + + class {asyncapi.info().title().replaceAll(' ', '')}Client: + + + {`def __init__(self): + self.client = mqtt.Client() + self.client.connect(mqttBroker)`} + + + + + + + ) +} +``` + +If you follow the article the right way, you did `npm test` now and the test code created few chapters above works. At least it should :) + +#### Check if the template works + +Best way to check is to modify AsyncAPI document. I add another channel called `comment/unliked` because the user of the client might not only want to send message that there is a new comment but that someone unliked a comment. + +```js +asyncapi: 2.6.0 + +info: + title: Comments Service + version: 1.0.0 + description: This service is in charge of processing all the events related to comments. + +servers: + dev: + url: test.mosquitto.org + protocol: mqtt + +channels: + comment/liked: + description: Updates the likes count in the database when new like is noticed. + publish: + operationId: commentLiked + message: + description: Message that is being sent when a comment has been liked by someone. + payload: + $ref: '#/components/schemas/commentId' + + comment/unliked: + description: Updates the likes count in the database when comment is unliked. + publish: + operationId: commentUnliked + message: + description: Message that is being sent when a comment has been unliked by someone. + payload: + $ref: '#/components/schemas/commentId' + +components: + schemas: + commentId: + type: object + additionalProperties: false + properties: + commentId: + type: string +``` + +Now, if everything goes well, running `npm test` will still work. I just need to extend the test scrip, to test two functions and not one: + +```py +client.sendCommentLiked(randomId) +print("New like for comment " + str(randomId) + " sent to comment/liked") +client.sendCommentUnliked(randomId) +print("Comment " + str(randomId) + " unliked info sent to comment/unliked") +``` + +Works perfect: + +``` +New like for comment 84641472 sent to comment/liked +Comment 84641472 unliked info sent to comment/unliked +New like for comment 73287785 sent to comment/liked +Comment 73287785 unliked info sent to comment/unliked +New like for comment 44391365 sent to comment/liked +Comment 44391365 unliked info sent to comment/unliked +``` + +When I connect to `comment/unlike` I only get messages with `commentId` when unlike took place + +```bash +docker run hivemq/mqtt-cli sub -t comment/unliked -h test.mosquitto.org + +# output +84641472 +73287785 +44391365 +``` + +## Final words + +There could be a lot of things improved in the template that I presented to you, tests added, even the test code that I have there could also be generated. + +That would be too much for a already-long article. + +The code of the template that I created while writing this article is available [under my GitHub profile](https://github.com/derberg/python-mqtt-client-template/tree/main). + +These are the main resources you should follow when learning about AsyncAPI generator and template development: + +- [Official docs](https://www.asyncapi.com/docs/tools/generator) +- [Template project that highlights all Generator features](https://github.com/asyncapi/template-for-generator-templates/tree/master/template) + +I hope you enjoyed a thinking process that I follwed while writing this article and creating actually my first template with support for AsyncAPI Parser 2.0 with a brand new Parser API. diff --git a/public/static/images/asyncapicodegen/but-its-working.webp b/public/static/images/asyncapicodegen/but-its-working.webp new file mode 100644 index 0000000000000000000000000000000000000000..9f725636f1ee7eb4f5797af1a1737e9e8c8cf37e GIT binary patch literal 16468 zcmV(vKcG z31w~{sfbFMApS5*+*Kihl)G=?tH19!x?Z9DTN>{|?yS3D+P=O$H@SKGoqkbv!+mSp ze~O%^(X;gb-~VerH$KjN=l3N0*Yytd-}^ty-ij^X!(Z*c@4o2%8valHfA_x+U+Mq1 zelLB1|1AEY{&(&Z=U?`oMIUniSL_Y^*ZT+k@9_WOz0d#g|6}Q=>p$9WfuGl(`(C^L z%KaJ(7H-#_75a{V@OuLpA`ro9m#?qXbfEarS+ba*iJs z_;f~79Jy;clwyf)V~*`2#Ys=`+{TL-1Eb}c>Wl~ZHD8W;G(nKni`HfKFE8Lu1;=8X z8&@cL|NchI(P#i?7~f_4;>uj`@M>P9G`~arN%th{z=bc9)0QbM<}Fsnd&v=2RB#Ef zl*XsD*l&!Tk~+5p35wE#JmN%9NmXgsC6eC5Zw5&Cr$PyWM&Ocks#;G%@^O)|P?u7} zEPXdmdM8~u2>&jN^}C;wEqVWJzne42&hYkO9z>2IQgX}ptoNf35XC#n+^YMT#=2vX z0mUN>Fcms_q(9+EQPJWD%hO_PY|a{oRLMu?;Vueg-Tx;C1na2Ddfbn|u!fv1SNjZ@ z4cthT^?`?zg}S1SYjky$FZc0oL++p&tipzGu=W zf^x@S5d-`yq3FWip4PJX0jgFVidHvtS32YHk)*2k&~K5YA^_5xdt`+MJEeyH+s(@l zVP=-VHiwx_leXxFlL0v`W@g^pUJAeycn|SuHlzr~e%Lm%LE87<_Cd)@9E2r(l<=h| zGL;sydtD8l&|LZoE2KWKyC%nXftZd^16}b-C&{>2lIN6Jgd}lO%-#$tWEzolg#yOb zaDZ_(SYbIa)%ohf*s+dENAI=ju%&9bbji6INCKE{R)K~IZ`k$nHLwQ`4nM_clamjP z4H@i^8mH2~mu(GIR}sQtD?6HJcZFxjyqp|YQ;A3YX7$4wZFovJJH^3_0QhOcb^LZ@ zMQ+f1dY_UVHQL;tD1LB2S+sB#HE^&EHht8|G2mokeN%4P9LibhfAAHC=G+qDL9UIZt4Gwtp)B&J6>~DaWP`%`|vz#04%b3MJq|@_c z=kEjO5+3Ui<*DsiEr3>`Kv^&aR;GeIz(|Fl~qlf~)yYcBArs2t0S^lD4u|cTMNLxzZtFC{XqEPxseT3ma z+eVe^(?f`aWgq}T4BQ{xC@4vpgNbX8t(CqE8`C>isVQyO{po6eTbHe37(`4PEZ#YA z#X7g89UaoZ2}hd0YT6+)*xA!?$bWe5QBE%~yttBY?mie;-(!{)h=UX5IXg5e|s%ffhdn3L2kOS(ur(}cT z(KS7BKs1864>?+mDmb3J^=#t7t{o?gO21=(foQX?*gQbJobM zKy8lqTYf}Tmk%hs{BIFy{PXPrqdj*W>KI1lYv`w_=_pvwNk^(!@a0~lR@{iV0=OHO z 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 literal 0 HcmV?d00001 diff --git a/public/static/images/asyncapicodegen/diagram-mistery.svg b/public/static/images/asyncapicodegen/diagram-mistery.svg new file mode 100644 index 0000000..93f7f73 --- /dev/null +++ b/public/static/images/asyncapicodegen/diagram-mistery.svg @@ -0,0 +1 @@ +
broker
topic -> comment/liked
producer -> test.py
consumer -> ?
\ No newline at end of file diff --git a/public/static/images/asyncapicodegen/diagram-reveald.svg b/public/static/images/asyncapicodegen/diagram-reveald.svg new file mode 100644 index 0000000..a1c8237 --- /dev/null +++ b/public/static/images/asyncapicodegen/diagram-reveald.svg @@ -0,0 +1 @@ +
broker
topic -> comment/liked
producer -> test.py
consumer -> MQTT CLI over Docker
\ No newline at end of file diff --git a/public/static/images/asyncapicodegen/ihavespoken.webp b/public/static/images/asyncapicodegen/ihavespoken.webp new file mode 100644 index 0000000000000000000000000000000000000000..7f609a9f665a25a2affbe7a687f749fa979358e4 GIT binary patch literal 10008 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 i-a-}3RTs2h)7BaWvjI5ht?QtmIJ+Qvd*OSZ`1O literal 0 HcmV?d00001 diff --git a/public/static/images/asyncapicodegen/leave-room.webp b/public/static/images/asyncapicodegen/leave-room.webp new file mode 100644 index 0000000000000000000000000000000000000000..31c77acc8e08d837e2974a9802f93b07ce706343 GIT binary patch literal 42704 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 literal 0 HcmV?d00001 diff --git a/public/static/images/asyncapicodegen/printing-press.webp b/public/static/images/asyncapicodegen/printing-press.webp new file mode 100644 index 0000000000000000000000000000000000000000..63f7df53d8dbee402ed52f58282084c93cc7b319 GIT binary patch literal 6122 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 literal 0 HcmV?d00001 diff --git a/public/static/images/asyncapicodegen/project-structure.webp b/public/static/images/asyncapicodegen/project-structure.webp new file mode 100644 index 0000000000000000000000000000000000000000..b8c359a57667466fc38e5c80a98a738c258137f8 GIT binary patch literal 15136 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 O4Wx=8+rl6K0002-)_AJ` literal 0 HcmV?d00001 diff --git a/public/static/images/asyncapicodegen/this-is-the-way.webp b/public/static/images/asyncapicodegen/this-is-the-way.webp new file mode 100644 index 0000000000000000000000000000000000000000..f7ba7e9ccf477664479a2b35d547fa8c5d7ca6ed GIT binary patch literal 5418 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 U11U|H`brla-eeQ=z}g@H0FM`R6951J literal 0 HcmV?d00001