Documentation
¶
Overview ¶
Package api represents API abstractions for rendering service generated files.
Index ¶
- Constants
- func ParamsStructFromJSON(value interface{}, shape *Shape, prefixPackageName bool) string
- type API
- func (a *API) APIGoCode() string
- func (a *API) Attach(filename string)
- func (a *API) AttachDocs(filename string)
- func (a *API) AttachPaginators(filename string)
- func (a *API) AttachString(str string)
- func (a *API) AttachWaiters(filename string)
- func (a *API) ExampleGoCode() string
- func (a *API) ExportableName(name string) string
- func (a *API) InterfaceGoCode() string
- func (a *API) InterfacePackageName() string
- func (a *API) NewAPIGoCodeWithPkgName(cfg string) string
- func (a *API) NiceName() string
- func (a *API) OperationHasOutputPlaceholder() bool
- func (a *API) OperationList() []*Operation
- func (a *API) OperationNames() []string
- func (a *API) PackageName() string
- func (a *API) ProtocolPackage() string
- func (a *API) ServiceGoCode() string
- func (a *API) Setup()
- func (a *API) ShapeList() []*Shape
- func (a *API) ShapeNames() []string
- func (a *API) StructName() string
- func (a *API) UseInitMethods() bool
- func (a *API) WaitersGoCode() string
- type HTTPInfo
- type Metadata
- type Operation
- type Paginator
- type Shape
- func (s *Shape) Docstring() string
- func (s *Shape) EnumName(n int) string
- func (s *Shape) GoCode() string
- func (s *Shape) GoCodeStringers() string
- func (s *Shape) GoStructType(name string, ref *ShapeRef) string
- func (s *Shape) GoTags(root, required bool) string
- func (s *Shape) GoType() string
- func (s *Shape) GoTypeElem() string
- func (s *Shape) GoTypeWithPkgName() string
- func (s *Shape) IsEnum() bool
- func (s *Shape) IsInternal() bool
- func (s *Shape) IsRequired(member string) bool
- func (s *Shape) MemberNames() []string
- func (s *Shape) NestedShape() *Shape
- func (s *Shape) Rename(newName string)
- type ShapeRef
- type ShapeTag
- type ShapeTags
- type ShapeValidation
- type ShapeValidationType
- type ShapeValidations
- type WaitAcceptor
- type Waiter
- type XMLInfo
Constants ¶
const (
// ShapeValidationRequired states the shape must be set
ShapeValidationRequired = iota
// ShapeValidationMinVal states the shape must have at least a number of
// elements, or for numbers a minimum value
ShapeValidationMinVal
// ShapeValidationNested states the shape has nested values that need
// to be validated
ShapeValidationNested
)
Variables ¶
This section is empty.
Functions ¶
func ParamsStructFromJSON ¶ added in v1.1.21
func ParamsStructFromJSON(value interface{}, shape *Shape, prefixPackageName bool) string
ParamsStructFromJSON returns a JSON string representation of a structure.
Types ¶
type API ¶
type API struct {
Metadata Metadata
Operations map[string]*Operation
Shapes map[string]*Shape
Waiters []Waiter
Documentation string
// Set to true to avoid removing unused shapes
NoRemoveUnusedShapes bool
// Set to true to avoid renaming to 'Input/Output' postfixed shapes
NoRenameToplevelShapes bool
// Set to true to ignore service/request init methods (for testing)
NoInitMethods bool
// Set to true to ignore String() and GoString methods (for generated tests)
NoStringerMethods bool
// Set to true to not generate API service name constants
NoConstServiceNames bool
// Set to true to not generate validation shapes
NoValidataShapeMethods bool
SvcClientImportPath string
// contains filtered or unexported fields
}
An API defines a service API's definition. and logic to serialize the definition.
func Load ¶
func Load(api, docs, paginators, waiters string) *API
Load takes a set of files for each filetype and returns an API pointer. The API will be initialized once all files have been loaded and parsed.
Will panic if any failure opening the definition JSON files, or there are unrecognized exported names.
func (*API) APIGoCode ¶
func (a *API) APIGoCode() string
APIGoCode renders the API in Go code. Returning it as a string
func (*API) Attach ¶
func (a *API) Attach(filename string)
Attach opens a file by name, and unmarshal its JSON data. Will proceed to setup the API if not already done so.
func (*API) AttachDocs ¶
func (a *API) AttachDocs(filename string)
AttachDocs attaches documentation from a JSON filename.
func (*API) AttachPaginators ¶
func (a *API) AttachPaginators(filename string)
AttachPaginators attaches pagination configuration from filename to the API.
func (*API) AttachString ¶
func (a *API) AttachString(str string)
AttachString will unmarshal a raw JSON string, and setup the API if not already done so.
func (*API) AttachWaiters ¶ added in v0.10.3
func (a *API) AttachWaiters(filename string)
AttachWaiters reads a file of waiter definitions, and adds those to the API. Will panic if an error occurs.
func (*API) ExampleGoCode ¶
func (a *API) ExampleGoCode() string
ExampleGoCode renders service example code. Returning it as a string.
func (*API) ExportableName ¶
func (a *API) ExportableName(name string) string
ExportableName a name which is exportable as a value or name in Go code
func (*API) InterfaceGoCode ¶
func (a *API) InterfaceGoCode() string
InterfaceGoCode returns the go code for the service's API operations as an interface{}. Assumes that the interface is being created in a different package than the service API's package.
func (*API) InterfacePackageName ¶
func (a *API) InterfacePackageName() string
InterfacePackageName returns the package name for the interface.
func (*API) NewAPIGoCodeWithPkgName ¶
func (a *API) NewAPIGoCodeWithPkgName(cfg string) string
NewAPIGoCodeWithPkgName returns a string of instantiating the API prefixed with its package name. Takes a string depicting the Config.
func (*API) NiceName ¶
func (a *API) NiceName() string
NiceName returns the human friendly API name.
func (*API) OperationHasOutputPlaceholder ¶ added in v1.1.1
func (a *API) OperationHasOutputPlaceholder() bool
OperationHasOutputPlaceholder returns if any of the API operation input or output shapes are place holders.
func (*API) OperationList ¶
func (a *API) OperationList() []*Operation
OperationList returns a slice of API operation pointers
func (*API) OperationNames ¶
func (a *API) OperationNames() []string
OperationNames returns a slice of API operations supported.
func (*API) ProtocolPackage ¶
func (a *API) ProtocolPackage() string
ProtocolPackage returns the package name of the protocol this API uses.
func (*API) ServiceGoCode ¶
func (a *API) ServiceGoCode() string
ServiceGoCode renders service go code. Returning it as a string.
func (*API) ShapeList ¶
func (a *API) ShapeList() []*Shape
ShapeList returns a slice of shape pointers used by the API.
func (*API) ShapeNames ¶
func (a *API) ShapeNames() []string
ShapeNames returns a slice of names for each shape used by the API.
func (*API) StructName ¶
func (a *API) StructName() string
StructName returns the struct name for a given API.
func (*API) UseInitMethods ¶
func (a *API) UseInitMethods() bool
UseInitMethods returns if the service's init method should be rendered.
func (*API) WaitersGoCode ¶ added in v0.10.3
func (a *API) WaitersGoCode() string
WaitersGoCode generates and returns Go code for each of the waiters of this API.
type HTTPInfo ¶
type HTTPInfo struct {
Method string
RequestURI string
ResponseCode uint
}
A HTTPInfo defines the method of HTTP request for the Operation.
type Metadata ¶
type Metadata struct {
APIVersion string
EndpointPrefix string
SigningName string
ServiceAbbreviation string
ServiceFullName string
SignatureVersion string
JSONVersion string
TargetPrefix string
Protocol string
}
A Metadata is the metadata about an API's definition.
type Operation ¶
type Operation struct {
API *API `json:"-"`
ExportedName string
Name string
Documentation string
HTTP HTTPInfo
InputRef ShapeRef `json:"input"`
OutputRef ShapeRef `json:"output"`
Paginator *Paginator
Deprecated bool `json:"deprecated"`
AuthType string `json:"authtype"`
}
An Operation defines a specific API Operation.
func (*Operation) Example ¶
func (o *Operation) Example() string
Example returns a string of the rendered Go code for the Operation
func (*Operation) ExampleInput ¶
func (o *Operation) ExampleInput() string
ExampleInput return a string of the rendered Go code for an example's input parameters
func (*Operation) GoCode ¶
func (o *Operation) GoCode() string
GoCode returns a string of rendered GoCode for this Operation
func (*Operation) HasInput ¶
func (o *Operation) HasInput() bool
HasInput returns if the Operation accepts an input paramater
func (*Operation) HasOutput ¶
func (o *Operation) HasOutput() bool
HasOutput returns if the Operation accepts an output parameter
func (*Operation) InterfaceSignature ¶
func (o *Operation) InterfaceSignature() string
InterfaceSignature returns a string representing the Operation's interface{} functional signature.
type Paginator ¶
type Paginator struct {
InputTokens interface{} `json:"input_token"`
OutputTokens interface{} `json:"output_token"`
LimitKey string `json:"limit_key"`
MoreResults string `json:"more_results"`
}
Paginator keeps track of pagination configuration for an API operation.
func (*Paginator) InputTokensString ¶
func (p *Paginator) InputTokensString() string
InputTokensString returns output tokens formatted as a list
func (*Paginator) OutputTokensString ¶
func (p *Paginator) OutputTokensString() string
OutputTokensString returns output tokens formatted as a list
type Shape ¶
type Shape struct {
API *API `json:"-"`
ShapeName string
Documentation string
MemberRefs map[string]*ShapeRef `json:"members"`
MemberRef ShapeRef `json:"member"`
KeyRef ShapeRef `json:"key"`
ValueRef ShapeRef `json:"value"`
Required []string
Payload string
Type string
Exception bool
Enum []string
EnumConsts []string
Flattened bool
Streaming bool
Location string
LocationName string
IdempotencyToken bool `json:"idempotencyToken"`
XMLNamespace XMLInfo
Min float64 // optional Minimum length (string, list) or value (number)
Max float64 // optional Maximum length (string, list) or value (number)
// Defines if the shape is a placeholder and should not be used directly
Placeholder bool
Deprecated bool `json:"deprecated"`
Validations ShapeValidations
// contains filtered or unexported fields
}
A Shape defines the definition of a shape type
func (*Shape) Docstring ¶
func (s *Shape) Docstring() string
Docstring returns the godocs formated documentation
func (*Shape) EnumName ¶
func (s *Shape) EnumName(n int) string
EnumName returns the Nth enum in the shapes Enum list
func (*Shape) GoCode ¶
func (s *Shape) GoCode() string
GoCode returns the rendered Go code for the Shape.
func (*Shape) GoCodeStringers ¶ added in v1.1.21
func (s *Shape) GoCodeStringers() string
GoCodeStringers renders the Stringers for API input/output shapes
func (*Shape) GoStructType ¶ added in v1.1.21
func (s *Shape) GoStructType(name string, ref *ShapeRef) string
GoStructType returns the type of a struct field based on the API model definition.
func (*Shape) GoTags ¶ added in v1.1.21
func (s *Shape) GoTags(root, required bool) string
GoTags returns the struct tags for a shape.
func (*Shape) GoTypeElem ¶
func (s *Shape) GoTypeElem() string
GoTypeElem returns the Go type for the Shape. If the shape type is a pointer just the type will be returned minus the pointer *.
func (*Shape) GoTypeWithPkgName ¶
func (s *Shape) GoTypeWithPkgName() string
GoTypeWithPkgName returns a shape's type as a string with the package name in <packageName>.<type> format. Package naming only applies to structures.
func (*Shape) IsEnum ¶
func (s *Shape) IsEnum() bool
IsEnum returns whether this shape is an enum list
func (*Shape) IsInternal ¶
func (s *Shape) IsInternal() bool
IsInternal returns whether the shape was defined in this package
func (*Shape) IsRequired ¶
func (s *Shape) IsRequired(member string) bool
IsRequired returns if member is a required field.
func (*Shape) MemberNames ¶
func (s *Shape) MemberNames() []string
MemberNames returns a slice of struct member names.
func (*Shape) NestedShape ¶ added in v1.1.21
func (s *Shape) NestedShape() *Shape
NestedShape returns the shape pointer value for the shape which is nested under the current shape. If the shape is not nested nil will be returned.
strucutures, the current shape is returned map: the value shape of the map is returned list: the element shape of the list is returned
type ShapeRef ¶
type ShapeRef struct {
API *API `json:"-"`
Shape *Shape `json:"-"`
Documentation string
ShapeName string `json:"shape"`
Location string
LocationName string
QueryName string
Flattened bool
Streaming bool
XMLAttribute bool
XMLNamespace XMLInfo
Payload string
IdempotencyToken bool `json:"idempotencyToken"`
Deprecated bool `json:"deprecated"`
}
A ShapeRef defines the usage of a shape within the API.
func (*ShapeRef) Docstring ¶
func (ref *ShapeRef) Docstring() string
Docstring returns the godocs formated documentation
func (*ShapeRef) GoTags ¶
func (ref *ShapeRef) GoTags(toplevel bool, isRequired bool) string
GoTags returns the rendered tags string for the ShapeRef
func (*ShapeRef) GoType ¶
func (ref *ShapeRef) GoType() string
GoType returns a shape ref's Go type.
func (*ShapeRef) GoTypeElem ¶
func (ref *ShapeRef) GoTypeElem() string
GoTypeElem returns the Go type for the Shape. If the shape type is a pointer just the type will be returned minus the pointer *.
func (*ShapeRef) GoTypeWithPkgName ¶
func (ref *ShapeRef) GoTypeWithPkgName() string
GoTypeWithPkgName returns a shape's type as a string with the package name in <packageName>.<type> format. Package naming only applies to structures.
type ShapeTag ¶ added in v1.1.1
type ShapeTag struct {
Key, Val string
}
ShapeTag is a struct tag that will be applied to a shape's generated code
type ShapeTags ¶ added in v1.1.1
type ShapeTags []ShapeTag
ShapeTags is a collection of shape tags and provides serialization of the tags in an ordered list.
type ShapeValidation ¶ added in v1.1.21
type ShapeValidation struct {
// Name of the shape to be validated
Name string
// Reference to the shape within the context the shape is referenced
Ref *ShapeRef
// Type of validation needed
Type ShapeValidationType
}
A ShapeValidation contains information about a shape and the type of validation that is needed
type ShapeValidationType ¶ added in v1.1.21
type ShapeValidationType int
A ShapeValidationType is the type of validation that a shape needs
type ShapeValidations ¶ added in v1.1.21
type ShapeValidations []ShapeValidation
A ShapeValidations is a collection of shape validations needed nested within a parent shape
type WaitAcceptor ¶ added in v0.10.3
type WaitAcceptor struct {
Expected interface{}
Matcher string
State string
Argument string
}
A WaitAcceptor is an individual wait acceptor definition.
func (*WaitAcceptor) ExpectedString ¶ added in v0.10.3
func (a *WaitAcceptor) ExpectedString() string
ExpectedString returns the string that was expected by the WaitAcceptor