smithy

package module
v1.22.1 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2024 License: Apache-2.0 Imports: 4 Imported by: 2,386

README

Smithy Go

Go Build StatusCodegen Build Status

Smithy code generators for Go and the accompanying smithy-go runtime.

The smithy-go runtime requires a minimum version of Go 1.20.

WARNING: All interfaces are subject to change.

Can I use the code generators?

In order to generate a usable smithy client you must provide a protocol definition, such as AWS restJson1, in order to generate transport mechanisms and serialization/deserialization code ("serde") accordingly.

The code generator does not currently support any protocols out of the box other than the new smithy.protocols#rpcv2Cbor, therefore the useability of this project on its own is currently limited. Support for all AWS protocols exists in aws-sdk-go-v2. We are tracking the movement of those out of the SDK into smithy-go in #458, but there's currently no timeline for doing so.

Plugins

This repository implements the following Smithy build plugins:

ID GAV prefix Description
go-codegen software.amazon.smithy.go:smithy-go-codegen Implements Go client code generation for Smithy models.
go-server-codegen software.amazon.smithy.go:smithy-go-codegen Implements Go server code generation for Smithy models.

NOTE: Build plugins are not currently published to mavenCentral. You must publish to mavenLocal to make the build plugins visible to the Smithy CLI. The artifact version is currently fixed at 0.1.0.

go-codegen

Configuration

GoSettings contains all of the settings enabled from smithy-build.json and helper methods and types. The up-to-date list of top-level properties enabled for go-client-codegen can be found in GoSettings::from().

Setting Type Required Description
service string yes The Shape ID of the service for which to generate the client.
module string yes Name of the module in generated.json (and go.mod if generateGoMod is enabled) and doc.go.
generateGoMod boolean Whether to generate a default go.mod file. The default value is false.
goDirective string Go directive of the module. The default value is the minimum supported Go version.
Supported protocols
Protocol Notes
smithy.protocols#rpcv2Cbor Event streaming not yet implemented.
Example

This example applies the go-codegen build plugin to the Smithy quickstart example created from smithy init:

{
  "version": "1.0",
  "sources": [
    "models"
  ],
  "maven": {
    "dependencies": [
      "software.amazon.smithy.go:smithy-go-codegen:0.1.0"
    ]
  },
  "plugins": {
    "go-codegen": {
      "service": "example.weather#Weather",
      "module": "github.com/example/weather",
      "generateGoMod": true,
      "goDirective": "1.20"
    }
  }
}

go-server-codegen

This plugin is a work-in-progress and is currently undocumented.

License

This project is licensed under the Apache-2.0 License.

Documentation

Overview

Package smithy provides the core components for a Smithy SDK.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError interface {
	error

	// ErrorCode returns the error code for the API exception.
	ErrorCode() string
	// ErrorMessage returns the error message for the API exception.
	ErrorMessage() string
	// ErrorFault returns the fault for the API exception.
	ErrorFault() ErrorFault
}

APIError provides the generic API and protocol agnostic error type all SDK generated exception types will implement.

type CanceledError

type CanceledError struct {
	Err error
}

CanceledError is the error that will be returned by an API request that was canceled. API operations given a Context may return this error when canceled.

func (*CanceledError) CanceledError

func (*CanceledError) CanceledError() bool

CanceledError returns true to satisfy interfaces checking for canceled errors.

func (*CanceledError) Error

func (e *CanceledError) Error() string

func (*CanceledError) Unwrap

func (e *CanceledError) Unwrap() error

Unwrap returns the underlying error, if there was one.

type DeserializationError

type DeserializationError struct {
	Err      error //  original error
	Snapshot []byte
}

DeserializationError provides a wrapper for an error that occurs during deserialization.

func (*DeserializationError) Error

func (e *DeserializationError) Error() string

Error returns a formatted error for DeserializationError

func (*DeserializationError) Unwrap

func (e *DeserializationError) Unwrap() error

Unwrap returns the underlying Error in DeserializationError

type Document deprecated

type Document interface {
	UnmarshalDocument(interface{}) error
	GetValue() (interface{}, error)
}

Document provides access to loosely structured data in a document-like format.

Deprecated: See the github.com/aws/smithy-go/document package.

type ErrorFault

type ErrorFault int

ErrorFault provides the type for a Smithy API error fault.

const (
	FaultUnknown ErrorFault = iota
	FaultServer
	FaultClient
)

ErrorFault enumeration values

func (ErrorFault) String

func (f ErrorFault) String() string

type GenericAPIError

type GenericAPIError struct {
	Code    string
	Message string
	Fault   ErrorFault
}

GenericAPIError provides a generic concrete API error type that SDKs can use to deserialize error responses into. Should be used for unmodeled or untyped errors.

func (*GenericAPIError) Error

func (e *GenericAPIError) Error() string

func (*GenericAPIError) ErrorCode

func (e *GenericAPIError) ErrorCode() string

ErrorCode returns the error code for the API exception.

func (*GenericAPIError) ErrorFault

func (e *GenericAPIError) ErrorFault() ErrorFault

ErrorFault returns the fault for the API exception.

func (*GenericAPIError) ErrorMessage

func (e *GenericAPIError) ErrorMessage() string

ErrorMessage returns the error message for the API exception.

type InvalidParamError

type InvalidParamError interface {
	error

	// Field name the error occurred on.
	Field() string

	// SetContext updates the context of the error.
	SetContext(string)

	// AddNestedContext updates the error's context to include a nested level.
	AddNestedContext(string)
}

An InvalidParamError represents an invalid parameter error type.

type InvalidParamsError

type InvalidParamsError struct {
	// Context is the base context of the invalid parameter group.
	Context string
	// contains filtered or unexported fields
}

An InvalidParamsError provides wrapping of invalid parameter errors found when validating API operation input parameters.

func (*InvalidParamsError) Add

Add adds a new invalid parameter error to the collection of invalid parameters. The context of the invalid parameter will be updated to reflect this collection.

func (*InvalidParamsError) AddNested

func (e *InvalidParamsError) AddNested(nestedCtx string, nested InvalidParamsError)

AddNested adds the invalid parameter errors from another InvalidParamsError value into this collection. The nested errors will have their nested context updated and base context to reflect the merging.

Use for nested validations errors.

func (InvalidParamsError) Error

func (e InvalidParamsError) Error() string

Error returns the string formatted form of the invalid parameters.

func (InvalidParamsError) Errs

func (e InvalidParamsError) Errs() []error

Errs returns a slice of the invalid parameters

func (*InvalidParamsError) Len

func (e *InvalidParamsError) Len() int

Len returns the number of invalid parameter errors

type OperationError

type OperationError struct {
	ServiceID     string
	OperationName string
	Err           error
}

OperationError decorates an underlying error which occurred while invoking an operation with names of the operation and API.

func (*OperationError) Error

func (e *OperationError) Error() string

func (*OperationError) Operation

func (e *OperationError) Operation() string

Operation returns the name of the API operation the error occurred with.

func (*OperationError) Service

func (e *OperationError) Service() string

Service returns the name of the API service the error occurred with.

func (*OperationError) Unwrap

func (e *OperationError) Unwrap() error

Unwrap returns the nested error if any, or nil.

type ParamRequiredError

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

An ParamRequiredError represents an required parameter error.

func NewErrParamRequired

func NewErrParamRequired(field string) *ParamRequiredError

NewErrParamRequired creates a new required parameter error.

func (*ParamRequiredError) AddNestedContext

func (e *ParamRequiredError) AddNestedContext(ctx string)

AddNestedContext prepends a context to the field's path.

func (ParamRequiredError) Error

func (e ParamRequiredError) Error() string

Error returns the string version of the invalid parameter error.

func (ParamRequiredError) Field

func (e ParamRequiredError) Field() string

Field Returns the field and context the error occurred.

func (*ParamRequiredError) SetContext

func (e *ParamRequiredError) SetContext(ctx string)

SetContext updates the base context of the error.

type Properties added in v1.14.0

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

Properties provides storing and reading metadata values. Keys may be any comparable value type. Get and Set will panic if a key is not comparable.

The zero value for a Properties instance is ready for reads/writes without any additional initialization.

func (*Properties) Get added in v1.14.0

func (m *Properties) Get(key any) any

Get attempts to retrieve the value the key points to. Returns nil if the key was not found.

Panics if key type is not comparable.

func (*Properties) Has added in v1.14.0

func (m *Properties) Has(key any) bool

Has returns whether the key exists in the metadata.

Panics if the key type is not comparable.

func (*Properties) Set added in v1.14.0

func (m *Properties) Set(key, value any)

Set stores the value pointed to by the key. If a value already exists at that key it will be replaced with the new value.

Panics if the key type is not comparable.

func (*Properties) SetAll added in v1.17.0

func (m *Properties) SetAll(other *Properties)

SetAll accepts all of the given Properties into the receiver, overwriting any existing keys in the case of conflicts.

func (*Properties) Values added in v1.21.0

func (m *Properties) Values() map[any]any

Values returns a shallow clone of the property set's values.

type PropertiesReader added in v1.14.0

type PropertiesReader interface {
	Get(key any) any
}

PropertiesReader provides an interface for reading metadata from the underlying metadata container.

type SerializationError

type SerializationError struct {
	Err error // original error
}

SerializationError represents an error that occurred while attempting to serialize a request

func (*SerializationError) Error

func (e *SerializationError) Error() string

Error returns a formatted error for SerializationError

func (*SerializationError) Unwrap

func (e *SerializationError) Unwrap() error

Unwrap returns the underlying Error in SerializationError

Directories

Path Synopsis
Package auth defines protocol-agnostic authentication types for smithy clients.
Package auth defines protocol-agnostic authentication types for smithy clients.
bearer
Package bearer provides middleware and utilities for authenticating API operation calls with a Bearer Token.
Package bearer provides middleware and utilities for authenticating API operation calls with a Bearer Token.
codegen module
container
private/cache
Package cache defines the interface for a key-based data store.
Package cache defines the interface for a key-based data store.
private/cache/lru
Package lru implements cache.Cache with an LRU eviction policy.
Package lru implements cache.Cache with an LRU eviction policy.
Package document provides interface definitions and error types for document types.
Package document provides interface definitions and error types for document types.
cbor
Package cbor implements reflective encoding of Smithy documents for CBOR-based protocols.
Package cbor implements reflective encoding of Smithy documents for CBOR-based protocols.
json
Package json provides a document Encoder and Decoder implementation that is used to implement Smithy document types for JSON based protocols.
Package json provides a document Encoder and Decoder implementation that is used to implement Smithy document types for JSON based protocols.
cbor
Package cbor implements partial encoding/decoding of concise binary object representation (CBOR) described in [RFC 8949].
Package cbor implements partial encoding/decoding of concise binary object representation (CBOR) described in [RFC 8949].
xml
Package xml holds the XMl encoder utility.
Package xml holds the XMl encoder utility.
internal
Package io provides utilities for Smithy generated API clients.
Package io provides utilities for Smithy generated API clients.
Package metrics defines the metrics APIs used by Smithy clients.
Package metrics defines the metrics APIs used by Smithy clients.
Package middleware provides transport agnostic middleware for decorating SDK handlers.
Package middleware provides transport agnostic middleware for decorating SDK handlers.
private
requestcompression
Package requestcompression implements runtime support for smithy-modeled request compression.
Package requestcompression implements runtime support for smithy-modeled request compression.
Package ptr provides utilities for converting scalar literal type values to and from pointers inline.
Package ptr provides utilities for converting scalar literal type values to and from pointers inline.
Package rand provides utilities for creating and working with random value generators.
Package rand provides utilities for creating and working with random value generators.
Package testing provides utilities for testing smith clients and protocols.
Package testing provides utilities for testing smith clients and protocols.
xml
package xml is xml testing package that supports xml comparison utility.
package xml is xml testing package that supports xml comparison utility.
Package tracing defines tracing APIs to be used by Smithy clients.
Package tracing defines tracing APIs to be used by Smithy clients.
transport
http
Package http provides the HTTP transport client and request/response types needed to round trip API operation calls with an service.
Package http provides the HTTP transport client and request/response types needed to round trip API operation calls with an service.

Jump to

Keyboard shortcuts

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