Skip to main content

Autodoc for socket

Project description

Autodoc for Socketio and Fastapi

Create autodoc for socketio and access using API Router.

Use decorator and method for describe the event running, Use sub for 'subscribe' and use pub for 'publish'. This code also integrated with pydantic, so it will be detect data model in your params if using pydantic. Beside that other type data like array or general type like str, int, etc can be solved. Other type from python typing like Optional and Union especially Union with none type can be solved.

Example Using

To use this import the class SokcetDocumentations, and assign the class to var. Use decorator (@) to create documentation. There is two option to create documentation. First is class method sub to define the event under decorator is subscribe, The second is pub to define the event or method under decorator is to publish. In this bellow is example how to use the code:

from pdc_event_autodoc import SocketDocumentation 

doc = SocketDocumentation()

First time is set your application info like bellow:

doc.set_info_app(title= 'Example App', version= '1.0.0', description= 'This is example documentation of Example App version 1.0.0')

You can decla your params using pydantic model:

class PydanticModel(BaseModel):
    id: int
    name: str
    address: str

# Example using pydantic model
@doc.sub(event_name= 'message', 
        tags= ['SubcribeMessage'], 
        schema= PydanticModel, 
        summary= 'ReceiveMessage', 
        description= 'This is event when we receive a message.')
@sm.on('message')
def receive_message(sid, data: PydanticModel):
    return data.dict()

Or using general type like

@doc.pub(event_name= 'message', 
        tags= ['PublishMessage'],
        summary= 'To Send a Message', 
        description= 'This is event when we want to send a message.')
def sending_message(sid, data: str):
    return sm.emit('message', data)

To preview the documentation, you can using FastAPI or APIRouter. This is an example using APIRouter:

from fastapi import APIRouter
from fastapi.encoders import jsonable_encoder
from pydantic import AnyHttpUrl

from pdc_event_autodoc import SocketDocumentation, get_asyncapi_html

doc = SocketDocumentation()

router = APIRouter(tags= ['Socket Documentations])

@router.get('/socket.json')
def get_socket_json():
    return jsonable_encoder(doc.main_data)

@router.get('/socket_doc')
def get_socket_documentation():
    async_url= AnyHttpUrl('/socket.json', scheme= 'http')
    return get_asyncapi_html(asyncapi_url= async_url, title= 'Notification Service')

In AnyHttpUrl if you using prefix, don't forget to include your prefix.!

The documentattion can be access in path '/socket_doc'.

Notice

Dont't forget to declare your type params (it can be Pydantic model, array, str, int, Optional or Union, etc).

If not be declare it will be detect that your function using Any params.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdc_event_autodoc-1.0.1.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdc_event_autodoc-1.0.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file pdc_event_autodoc-1.0.1.tar.gz.

File metadata

  • Download URL: pdc_event_autodoc-1.0.1.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.7 Windows/10

File hashes

Hashes for pdc_event_autodoc-1.0.1.tar.gz
Algorithm Hash digest
SHA256 dc160979016855e6841822c65946217d4f40dd002baada130331130ca2bdbbeb
MD5 a49bc3e4af04ada1c8571c44fdae3361
BLAKE2b-256 46ff27ecf82cd1e3d493ec263eb7e1f6fe6c3e877920315f1a901c584a4ea016

See more details on using hashes here.

File details

Details for the file pdc_event_autodoc-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pdc_event_autodoc-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.7 Windows/10

File hashes

Hashes for pdc_event_autodoc-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6cd193c1802033d83c8a54481369e5117f409510d2adc68fa093de02386e23c7
MD5 43db6bc2113357e391d897ee26fd3f62
BLAKE2b-256 e69e0622fd8928ed7edd25269219cecc1dc62c4f62563c869f6b614f48b1b178

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page