Documentation
¶
Overview ¶
Package example contains code generation algorithms to produce an example server and client implementation for the transports defined in the design.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Servers = make(ServersData)
Servers holds the server data needed to generate the example service and client. It is computed from the Server expressions in the service design.
Functions ¶
func CLIFiles ¶
func CLIFiles(genpkg string, root *expr.RootExpr) []*codegen.File
CLIFiles returns example client tool main implementation for each server expression in the design.
func ServerFiles ¶
func ServerFiles(genpkg string, root *expr.RootExpr) []*codegen.File
ServerFiles returns an example server main implementation for every server expression in the service design.
Types ¶
type Data ¶
type Data struct {
// Name is the server name.
Name string
// Description is the server description.
Description string
// Services is the list of services supported by the server.
Services []string
// Schemes is the list of supported schemes by the server.
Schemes []string
// Hosts is the list of hosts defined in the server.
Hosts []*HostData
// Variables is the list of URL parameters defined in every host.
Variables []*VariableData
// Transports is the list of transports defined in the server.
Transports []*TransportData
// Dir is the directory name for the generated client and server examples.
Dir string
}
Data contains the data about a single server.
func (*Data) AvailableHosts ¶
func (s *Data) AvailableHosts() []string
AvailableHosts returns a list of available host names.
func (*Data) DefaultHost ¶
func (s *Data) DefaultHost() *HostData
DefaultHost returns the first host defined in the server expression.
func (*Data) DefaultTransport ¶
func (s *Data) DefaultTransport() *TransportData
DefaultTransport returns the default transport for the given server. If multiple transports are defined, HTTP transport is used as the default.
func (*Data) HasTransport ¶
func (s *Data) HasTransport(transport Transport) bool
HasTransport checks if the server supports the given transport.
type HostData ¶
type HostData struct {
// Name is the host name.
Name string
// Description is the host description.
Description string
// Schemes is the list of schemes supported by the host. It is computed
// from the URI expressions defined in the Host.
// Possible values are http, https, grpc, grpcs.
Schemes []string
// URIs is the list of URLs defined in the host.
URIs []*URIData
// Variables is the list of URL parameters.
Variables []*VariableData
}
HostData contains the data about a single host in a server.
func (*HostData) DefaultURL ¶
func (h *HostData) DefaultURL(transport Transport) string
DefaultURL returns the first URL defined for the given transport in a host.
type ServersData ¶
type ServersData map[string]*Data
ServersData holds the server data from the service design indexed by server name.
type Transport ¶
type Transport string
Transport is a type for supported goa transports.
const (
// TransportHTTP is the HTTP transport.
TransportHTTP Transport = "http"
// TransportGRPC is the gRPC transport.
TransportGRPC = "grpc"
)
type TransportData ¶
type TransportData struct {
// Type is the transport type.
Type Transport
// Name is the transport name.
Name string
// Services is the list of services supported by the transport.
Services []string
}
TransportData contains the data about a transport (http or grpc).
type URIData ¶
type URIData struct {
// URL is the underlying URL.
URL string
// Scheme is the URL scheme.
Scheme string
// Port is the default port for the scheme.
// http - 80, https - 443, grpc - 8080, grpcs - 8443
Port string
// Transport is the transport type for the URL.
Transport *TransportData
}
URIData contains the data about a URL.
type VariableData ¶
type VariableData struct {
// Name is the name of the variable.
Name string
// Description is the variable description.
Description string
// VarName is the variable name used in generating flag variables.
VarName string
// DefaultValue is the default value for the variable. It is set to the
// default value defined in the variable attribute if exists, or else set
// to the first value in the enum expression.
DefaultValue string
// Values is the list of allowed values for the variable. The values can
// only be primitives. We convert the primitives into string type so that
// we could use them to replace the URL variables in the example
// generation.
Values []string
}
VariableData contains the data about a URL variable.