from marshmallow import fields
from marshmallow.schema import Schema
from marshmallow.validate import OneOf


class NgrokTunnelSchema(Schema):
    name = fields.String(
        metadata={
            'description': 'Tunnel friendly name or auto-generated name',
            'example': 'tcp-8080-my-tunnel',
        }
    )

    protocol = fields.String(
        allow_none=False,
        attribute='proto',
        validate=OneOf(['tcp', 'udp', 'http']),
        metadata={
            'description': 'Tunnel protocol',
            'example': 'tcp',
        },
    )

    url = fields.String(
        attribute='public_url',
        required=True,
        metadata={
            'description': 'Public URL to the ngrok tunnel',
            'example': 'tcp://8.tcp.ngrok.io:12345',
        },
    )
