ridl

package
v0.18.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2024 License: MIT Imports: 11 Imported by: 0

README

ridl, pronounced "riddle"

a ridl file is a "rpc interface design language" schema file that describes a webrpc client/server app.

Define webrpc schema errors

You can now define your own custom schema errors in RIDL file, for example:

error   1 Unauthorized    "unauthorized"        HTTP 401
error   2 ExpiredToken    "expired token"       HTTP 401
error   3 InvalidToken    "invalid token"       HTTP 401
error   4 Deactivated     "account deactivated" HTTP 403
error   5 ConfirmAccount  "confirm your email"  HTTP 403
error   6 AccessDenied    "access denied"       HTTP 403
error   7 MissingArgument "missing argument"    HTTP 400
error   8 UnexpectedValue "unexpected value"    HTTP 400
error 100 RateLimited     "too many requests"   HTTP 429
error 101 DatabaseDown    "service outage"      HTTP 503
error 102 ElasticDown     "search is degraded"  HTTP 503
error 103 NotImplemented  "not implemented"     HTTP 501
error 200 UserNotFound    "user not found"
error 201 UserBusy        "user busy"
error 202 InvalidUsername "invalid username"
error 300 FileTooBig      "file is too big (max 1GB)"
error 301 FileInfected    "file is infected"
error 302 FileType        "unsupported file type"

Note: Unless specified, the default HTTP status for webrpc errors is HTTP 400.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArgumentNode added in v0.5.0

type ArgumentNode struct {
	// contains filtered or unexported fields
}

func (*ArgumentNode) Children added in v0.5.0

func (n *ArgumentNode) Children() []Node

func (*ArgumentNode) End added in v0.5.0

func (n *ArgumentNode) End() int

func (*ArgumentNode) Filter added in v0.5.0

func (n *ArgumentNode) Filter(nt NodeType) []Node

func (*ArgumentNode) Name added in v0.5.0

func (an *ArgumentNode) Name() *TokenNode

func (*ArgumentNode) Optional added in v0.5.0

func (an *ArgumentNode) Optional() bool

func (*ArgumentNode) Push added in v0.5.0

func (n *ArgumentNode) Push(child Node)

func (*ArgumentNode) Start added in v0.5.0

func (n *ArgumentNode) Start() int

func (*ArgumentNode) Type added in v0.5.0

func (an *ArgumentNode) Type() NodeType

func (*ArgumentNode) TypeName added in v0.5.0

func (an *ArgumentNode) TypeName() *TokenNode

type DefinitionNode added in v0.5.0

type DefinitionNode struct {
	// contains filtered or unexported fields
}

func (*DefinitionNode) Children added in v0.5.0

func (n *DefinitionNode) Children() []Node

func (DefinitionNode) Comment added in v0.14.3

func (dn DefinitionNode) Comment() string

func (*DefinitionNode) End added in v0.5.0

func (n *DefinitionNode) End() int

func (*DefinitionNode) Filter added in v0.5.0

func (n *DefinitionNode) Filter(nt NodeType) []Node

func (DefinitionNode) Left added in v0.5.0

func (dn DefinitionNode) Left() *TokenNode

func (DefinitionNode) Meta added in v0.5.0

func (dn DefinitionNode) Meta() []*DefinitionNode

func (DefinitionNode) Optional added in v0.5.0

func (dn DefinitionNode) Optional() bool

func (*DefinitionNode) Push added in v0.5.0

func (n *DefinitionNode) Push(child Node)

func (DefinitionNode) Right added in v0.5.0

func (dn DefinitionNode) Right() *TokenNode

func (*DefinitionNode) Start added in v0.5.0

func (n *DefinitionNode) Start() int

func (DefinitionNode) Type added in v0.5.0

func (dn DefinitionNode) Type() NodeType

type EnumNode added in v0.5.0

type EnumNode struct {
	// contains filtered or unexported fields
}

func (*EnumNode) Children added in v0.5.0

func (n *EnumNode) Children() []Node

func (EnumNode) Comments added in v0.14.3

func (en EnumNode) Comments() string

func (*EnumNode) End added in v0.5.0

func (n *EnumNode) End() int

func (*EnumNode) Filter added in v0.5.0

func (n *EnumNode) Filter(nt NodeType) []Node

func (EnumNode) Name added in v0.5.0

func (en EnumNode) Name() *TokenNode

func (*EnumNode) Push added in v0.5.0

func (n *EnumNode) Push(child Node)

func (*EnumNode) Start added in v0.5.0

func (n *EnumNode) Start() int

func (EnumNode) Type added in v0.5.0

func (en EnumNode) Type() NodeType

func (EnumNode) TypeName added in v0.5.0

func (en EnumNode) TypeName() *TokenNode

func (EnumNode) Values added in v0.5.0

func (en EnumNode) Values() []*DefinitionNode

type ErrorNode added in v0.11.0

type ErrorNode struct {
	// contains filtered or unexported fields
}

func (*ErrorNode) Children added in v0.11.0

func (n *ErrorNode) Children() []Node

func (*ErrorNode) End added in v0.11.0

func (n *ErrorNode) End() int

func (*ErrorNode) Filter added in v0.11.0

func (n *ErrorNode) Filter(nt NodeType) []Node

func (ErrorNode) Name added in v0.11.0

func (en ErrorNode) Name() *TokenNode

func (*ErrorNode) Push added in v0.11.0

func (n *ErrorNode) Push(child Node)

func (*ErrorNode) Start added in v0.11.0

func (n *ErrorNode) Start() int

func (ErrorNode) Type added in v0.11.0

func (en ErrorNode) Type() NodeType

type ImportNode added in v0.5.0

type ImportNode struct {
	// contains filtered or unexported fields
}

func (*ImportNode) Children added in v0.5.0

func (n *ImportNode) Children() []Node

func (*ImportNode) End added in v0.5.0

func (n *ImportNode) End() int

func (*ImportNode) Filter added in v0.5.0

func (n *ImportNode) Filter(nt NodeType) []Node

func (ImportNode) Members added in v0.5.0

func (in ImportNode) Members() []*TokenNode

func (ImportNode) Path added in v0.5.0

func (in ImportNode) Path() *TokenNode

func (*ImportNode) Push added in v0.5.0

func (n *ImportNode) Push(child Node)

func (*ImportNode) Start added in v0.5.0

func (n *ImportNode) Start() int

func (ImportNode) Type added in v0.5.0

func (in ImportNode) Type() NodeType

type MethodNode added in v0.5.0

type MethodNode struct {
	// contains filtered or unexported fields
}

func (*MethodNode) Comment added in v0.14.3

func (mn *MethodNode) Comment() string

func (*MethodNode) Inputs added in v0.5.0

func (mn *MethodNode) Inputs() []*ArgumentNode

func (*MethodNode) Name added in v0.5.0

func (mn *MethodNode) Name() *TokenNode

func (*MethodNode) Outputs added in v0.5.0

func (mn *MethodNode) Outputs() []*ArgumentNode

func (*MethodNode) Proxy added in v0.5.0

func (mn *MethodNode) Proxy() bool

func (*MethodNode) StreamInput added in v0.5.0

func (mn *MethodNode) StreamInput() bool

func (*MethodNode) StreamOutput added in v0.5.0

func (mn *MethodNode) StreamOutput() bool

type Node added in v0.5.0

type Node interface {
	Start() int
	End() int
	Type() NodeType
}

Node represents a parser tree node

type NodeType added in v0.5.0

type NodeType uint

NodeType represents the type of a parser tree node.

const (
	RootNodeType NodeType = iota
	TokenNodeType
	DefinitionNodeType
	ImportNodeType
	EnumNodeType
	StructNodeType
	ErrorNodeType
	ArgumentNodeType
	MethodNodeType
	ServiceNodeType
)

type Parser added in v0.5.0

type Parser struct {
	// contains filtered or unexported fields
}

func NewParser added in v0.5.0

func NewParser(fsys fs.FS, path string) *Parser

func (*Parser) Parse added in v0.5.0

func (p *Parser) Parse() (*schema.WebRPCSchema, error)

type RootNode added in v0.5.0

type RootNode struct {
	// contains filtered or unexported fields
}

func (*RootNode) Children added in v0.5.0

func (n *RootNode) Children() []Node

func (RootNode) Definitions added in v0.5.0

func (rn RootNode) Definitions() []*DefinitionNode

func (*RootNode) End added in v0.5.0

func (n *RootNode) End() int

func (RootNode) Enums added in v0.5.0

func (rn RootNode) Enums() []*EnumNode

func (RootNode) Errors added in v0.11.0

func (rn RootNode) Errors() []*ErrorNode

func (*RootNode) Filter added in v0.5.0

func (n *RootNode) Filter(nt NodeType) []Node

func (RootNode) Imports added in v0.5.0

func (rn RootNode) Imports() []*ImportNode

func (*RootNode) Push added in v0.5.0

func (n *RootNode) Push(child Node)

func (RootNode) Services added in v0.5.0

func (rn RootNode) Services() []*ServiceNode

func (*RootNode) Start added in v0.5.0

func (n *RootNode) Start() int

func (RootNode) Structs added in v0.9.0

func (rn RootNode) Structs() []*StructNode

func (RootNode) Type added in v0.5.0

func (rn RootNode) Type() NodeType

type ServiceNode added in v0.5.0

type ServiceNode struct {
	// contains filtered or unexported fields
}

func (*ServiceNode) Children added in v0.5.0

func (n *ServiceNode) Children() []Node

func (ServiceNode) Comment added in v0.14.3

func (sn ServiceNode) Comment() string

func (*ServiceNode) End added in v0.5.0

func (n *ServiceNode) End() int

func (*ServiceNode) Filter added in v0.5.0

func (n *ServiceNode) Filter(nt NodeType) []Node

func (ServiceNode) Methods added in v0.5.0

func (sn ServiceNode) Methods() []*MethodNode

func (ServiceNode) Name added in v0.5.0

func (sn ServiceNode) Name() *TokenNode

func (*ServiceNode) Push added in v0.5.0

func (n *ServiceNode) Push(child Node)

func (*ServiceNode) Start added in v0.5.0

func (n *ServiceNode) Start() int

func (ServiceNode) Type added in v0.5.0

func (sn ServiceNode) Type() NodeType

type StructNode added in v0.9.0

type StructNode struct {
	// contains filtered or unexported fields
}

func (*StructNode) Children added in v0.9.0

func (n *StructNode) Children() []Node

func (*StructNode) Comment added in v0.14.3

func (mn *StructNode) Comment() string

func (*StructNode) End added in v0.9.0

func (n *StructNode) End() int

func (*StructNode) Fields added in v0.9.0

func (mn *StructNode) Fields() []*DefinitionNode

func (*StructNode) Filter added in v0.9.0

func (n *StructNode) Filter(nt NodeType) []Node

func (StructNode) Name added in v0.9.0

func (mn StructNode) Name() *TokenNode

func (*StructNode) Push added in v0.9.0

func (n *StructNode) Push(child Node)

func (*StructNode) Start added in v0.9.0

func (n *StructNode) Start() int

func (*StructNode) Type added in v0.9.0

func (mn *StructNode) Type() NodeType

type TokenNode added in v0.5.0

type TokenNode struct {
	// contains filtered or unexported fields
}

func (*TokenNode) Children added in v0.5.0

func (n *TokenNode) Children() []Node

func (*TokenNode) End added in v0.5.0

func (n *TokenNode) End() int

func (*TokenNode) Filter added in v0.5.0

func (n *TokenNode) Filter(nt NodeType) []Node

func (*TokenNode) Push added in v0.5.0

func (n *TokenNode) Push(child Node)

func (*TokenNode) Start added in v0.5.0

func (n *TokenNode) Start() int

func (TokenNode) String added in v0.5.0

func (tn TokenNode) String() string

func (TokenNode) Type added in v0.5.0

func (tn TokenNode) Type() NodeType

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL