Documentation ¶
Overview ¶
Package dsl コード生成用の定義DSL
Index ¶
- Constants
- Variables
- func IDAndSuffixPathFormat(suffix string) string
- type Argument
- func (a *Argument) ArgName() string
- func (a *Argument) ImportStatements() []string
- func (a *Argument) MapConvTagSrc() string
- func (a *Argument) PackageName() string
- func (a *Argument) PathFormatName() string
- func (a *Argument) TypeName() string
- func (a *Argument) ZeroInitializer() string
- func (a *Argument) ZeroValueOnSource() string
- type Arguments
- type ConstFieldDesc
- type EnvelopePayloadDesc
- type EnvelopeType
- type FieldDesc
- type FieldTags
- type MethodDesc
- type Model
- func (m *Model) FieldModels() []*Model
- func (m *Model) GoImportPath() string
- func (m *Model) GoPkg() string
- func (m *Model) GoType() string
- func (m *Model) GoTypeSourceCode() string
- func (m *Model) HasNakedType() bool
- func (m *Model) ImportStatements(additionalImports ...string) []string
- func (m *Model) ImportStatementsForModelDef(additionalImports ...string) []string
- func (m *Model) Type() meta.Type
- func (m *Model) ZeroInitializeSourceCode() string
- func (m *Model) ZeroValueSourceCode() string
- type Models
- type Operation
- func (o *Operation) GetPathFormat() string
- func (o *Operation) HasRequestEnvelope() bool
- func (o *Operation) HasResponseEnvelope() bool
- func (o *Operation) HasResults() bool
- func (o *Operation) ImportStatements(additionalImports ...string) []string
- func (o *Operation) IsRequestPlural() bool
- func (o *Operation) IsRequestSingular() bool
- func (o *Operation) IsResponsePlural() bool
- func (o *Operation) IsResponseSingular() bool
- func (o *Operation) MethodName() string
- func (o *Operation) Models() Models
- func (o *Operation) RequestEnvelopeStructName() string
- func (o *Operation) RequestPayloads() []*EnvelopePayloadDesc
- func (o *Operation) ResponseEnvelopeStructName() string
- func (o *Operation) ResponsePayloads() []*EnvelopePayloadDesc
- func (o *Operation) ResultTypeName() string
- func (o *Operation) ResultsAssignStatement() string
- func (o *Operation) ResultsStatement() string
- func (o *Operation) ResultsTypeInfo() []*ResultTypeInfo
- func (o *Operation) ReturnErrorStatement() string
- func (o *Operation) ReturnStatement() string
- func (o *Operation) StubFieldDefines() []string
- func (o *Operation) StubReturnStatement(receiverName string) string
- type Operations
- type OperationsDefineFunc
- type PayloadForm
- type Resource
- type Resources
- type Result
- func (r *Result) GoImportPath() string
- func (r *Result) GoPkg() string
- func (r *Result) GoType() string
- func (r *Result) GoTypeSourceCode() string
- func (r *Result) ImportStatements(additionalImports ...string) []string
- func (r *Result) TagString() string
- func (r *Result) Type() meta.Type
- func (r *Result) ZeroInitializeSourceCode() string
- func (r *Result) ZeroValueSourceCode() string
- type ResultType
- func (r *ResultType) GoImportPath() string
- func (r *ResultType) GoPkg() string
- func (r *ResultType) GoType() string
- func (r *ResultType) GoTypeSourceCode() string
- func (r *ResultType) Type() meta.Type
- func (r *ResultType) ZeroInitializeSourceCode() string
- func (r *ResultType) ZeroValueSourceCode() string
- type ResultTypeInfo
- type Results
Constants ¶
const ( // DefaultPathFormat デフォルトのパスフォーマット DefaultPathFormat = "{{.rootURL}}/{{.zone}}/{{.pathSuffix}}/{{.pathName}}" // CloudAPISuffix IaaSリソースでのAPIサフィックス CloudAPISuffix = "api/cloud/1.1" // BillingAPISuffix 課金関連でのAPIサフィックス BillingAPISuffix = "api/system/1.0" // WebAccelAPISuffix ウェブアクセラレータ関連でのAPIサフィックス WebAccelAPISuffix = "api/webaccel/1.0" )
Variables ¶
var ( // ArgumentID 引数でのIDを示すValue ArgumentID = &Argument{ Name: "id", Type: meta.TypeID, } )
var ( // DefaultPathFormatWithID デフォルトのパス+IDのパスフォーマット DefaultPathFormatWithID = fmt.Sprintf("%s/{{.%s}}", DefaultPathFormat, ArgumentID.ArgName()) )
var IsOutOfSacloudPackage = false
IsOutOfSacloudPackage コード生成時、*Modelがパッケージ名を付与すべきかの判定に利用するフラグ
var PayloadForms = struct { Singular PayloadForm Plural PayloadForm }{ Singular: PayloadForm(0), Plural: PayloadForm(1), }
PayloadForms ペイロードの形体
Functions ¶
func IDAndSuffixPathFormat ¶
IDAndSuffixPathFormat デフォルトのパス+ID+指定のサフィックスのパスフォーマット
Types ¶
type Argument ¶
type Argument struct { Name string // パラメータ名、引数名に利用される Type meta.Type // パラメータの型情報 PathFormatAlias string // リクエストパス組み立て時に利用するパラメータ名のエイリアス 省略時はNameとなる MapConvTag string }
Argument 引数の型情報
func MappableArgument ¶
MappableArgument 引数定義の追加
func PassthroughModelArgument ¶
PassthroughModelArgument 引数定義の追加
func (*Argument) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Argument) MapConvTagSrc ¶
MapConvTagSrc コード上でのmapconvタグの文字列表現。コード生成時に利用する
func (*Argument) PackageName ¶
PackageName インポートパスからパッケージ名を取得する
func (*Argument) PathFormatName ¶
PathFormatName リクエストパス組み立て時に利用するパラメータ名の
func (*Argument) ZeroInitializer ¶
ZeroInitializer 値を0初期化する文のコードの文字列表現、コード生成で利用される
func (*Argument) ZeroValueOnSource ¶
ZeroValueOnSource コード上でのゼロ値の文字列表現。コード生成時に利用する
type ConstFieldDesc ¶
type ConstFieldDesc struct { Name string Tags *FieldTags Type meta.Type Description string // TODO 現在は未使用 Value string }
ConstFieldDesc 固定値フィールド記述
func (*ConstFieldDesc) TagString ¶
func (f *ConstFieldDesc) TagString() string
TagString タグのソースコード上での表現を返す
func (*ConstFieldDesc) TypeName ¶
func (f *ConstFieldDesc) TypeName() string
TypeName フィールドの型を返す、コード生成で利用される
type EnvelopePayloadDesc ¶
type EnvelopePayloadDesc struct { Name string // ペイロードのフィールド名 Type meta.Type // ペイロードの型情報 Tags *FieldTags }
EnvelopePayloadDesc エンベロープに含まれるペイロードの情報
func (*EnvelopePayloadDesc) TagString ¶
func (d *EnvelopePayloadDesc) TagString() string
TagString タグの文字列表現
func (*EnvelopePayloadDesc) TypeName ¶
func (d *EnvelopePayloadDesc) TypeName() string
TypeName ペイロードの型定義
type EnvelopeType ¶
type EnvelopeType struct { Form PayloadForm // ペイロードの形体(単数/複数) Payloads []*EnvelopePayloadDesc }
EnvelopeType Modelを用いてAPIとやりとりする際のリクエスト/レスポンスのエンベロープ
func RequestEnvelope ¶
func RequestEnvelope(descs ...*EnvelopePayloadDesc) *EnvelopeType
RequestEnvelope リクエストのエンベロープを作成する
func RequestEnvelopeFromModel ¶
func RequestEnvelopeFromModel(model *Model) *EnvelopeType
RequestEnvelopeFromModel モデル定義からリクエストのエンベロープを作成する
func ResponseEnvelope ¶
func ResponseEnvelope(sourceFields ...*EnvelopePayloadDesc) *EnvelopeType
ResponseEnvelope エンベロープから抽出するレスポンス定義の追加
func ResponseEnvelopePlural ¶
func ResponseEnvelopePlural(sourceFields ...*EnvelopePayloadDesc) *EnvelopeType
ResponseEnvelopePlural エンベロープから抽出するレスポンス定義の追加(複数形)
type FieldDesc ¶
type FieldDesc struct { Name string Tags *FieldTags Type meta.Type Description string // TODO 現在は未使用 Methods []*MethodDesc DefaultValue string // デフォルト値、コード生成時にソースコードに直接転記される }
FieldDesc フィールド記述
type FieldTags ¶
type FieldTags struct { // JSON jsonタグ JSON string // YAML yamlタグ YAML string // Structs structsタグ Structs string // MapConv mapconvタグ MapConv string // Validate validateタグ Validate string }
FieldTags フィールドに付与するタグ
type MethodDesc ¶
type MethodDesc struct { // Name メソッドの名称 Name string // AccessorFuncName sacloud/accessor配下に定義されている、accessorを実装するオブジェクトを // 第1引数にとる、exportされているfuncの名称 // // 省略した場合はNameが利用される AccessorFuncName string // Description 拡張アクセサのgodoc用コメント Description string // Arguments メソッド引数 省略可能 Arguments Arguments // ResultTypes 戻り値 ResultTypes []meta.Type }
MethodDesc モデルにメソッドを持たせるための定義
type Model ¶
type Model struct { Name string // 型名 Fields []*FieldDesc // フィールド定義 ConstFields []*ConstFieldDesc // 定数フィールド Methods []*MethodDesc // アクセサ NakedType meta.Type // 対応するnaked型の情報 IsArray bool }
Model APIのリクエスト/レスポンスなどのデータ型を示すモデル
func (*Model) FieldModels ¶
FieldModels フィールド定義に含まれる*Model(FieldDesc.Type)を取得
func (*Model) GoTypeSourceCode ¶
GoTypeSourceCode ソースコードでの型表現
func (*Model) HasNakedType ¶
HasNakedType 対応するnaked型の情報が登録されているか
func (*Model) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Model) ImportStatementsForModelDef ¶
ImportStatementsForModelDef モデルのフィールドを含めたimport文を生成する
func (*Model) ZeroInitializeSourceCode ¶
ZeroInitializeSourceCode 型に応じたzero値での初期化コード
func (*Model) ZeroValueSourceCode ¶
ZeroValueSourceCode 型に応じたzero値コード
type Models ¶
type Models []*Model
Models APIのリクエスト/レスポンスなどのデータ型を示すモデル
func (Models) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
type Operation ¶
type Operation struct { ResourceName string Name string // 操作名、メソッド名となる Method string // HTTPリクエストメソッド GET/POST/PUT/DELETE PathFormat string // パスのフォーマット、省略した場合はDefaultPathFormatが設定される Arguments Arguments // 引数の定義 Results Results // レスポンス RequestEnvelope *EnvelopeType // リクエスト時のエンベロープ ResponseEnvelope *EnvelopeType // レスポンス時のエンベロープ UseWrappedResult bool // trueの場合APIからの戻り値としてラッパー型(xxxResult)を返す }
Operation リソースへの操作
func (*Operation) GetPathFormat ¶
GetPathFormat パスのフォーマット
func (*Operation) HasRequestEnvelope ¶
HasRequestEnvelope リクエストエンベロープが設定されているか
func (*Operation) HasResponseEnvelope ¶
HasResponseEnvelope レスポンスエンベロープが設定されているか
func (*Operation) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Operation) IsRequestPlural ¶
IsRequestPlural リクエストが複数形か
func (*Operation) IsRequestSingular ¶
IsRequestSingular リクエストが単数系か
func (*Operation) IsResponsePlural ¶
IsResponsePlural レスポンスが複数形か
func (*Operation) IsResponseSingular ¶
IsResponseSingular レスポンスが単数系か
func (*Operation) MethodName ¶
MethodName コード生成時に利用する、メソッド名を出力する
func (*Operation) RequestEnvelopeStructName ¶
RequestEnvelopeStructName エンベロープのstruct名(camel-case)
func (*Operation) RequestPayloads ¶
func (o *Operation) RequestPayloads() []*EnvelopePayloadDesc
RequestPayloads リクエストペイロードを取得
func (*Operation) ResponseEnvelopeStructName ¶
ResponseEnvelopeStructName エンベロープのstruct名(camel-case)
func (*Operation) ResponsePayloads ¶
func (o *Operation) ResponsePayloads() []*EnvelopePayloadDesc
ResponsePayloads レスポンスペイロードを取得
func (*Operation) ResultTypeName ¶
ResultTypeName API戻り値の型名
func (*Operation) ResultsAssignStatement ¶
ResultsAssignStatement API戻り値を変数にアサインする場合の変数部分のソースを出力、主にtraceで利用する
func (*Operation) ResultsStatement ¶
ResultsStatement 戻り値定義部のソースを出力
func (*Operation) ResultsTypeInfo ¶
func (o *Operation) ResultsTypeInfo() []*ResultTypeInfo
ResultsTypeInfo 戻り値の型情報(error型を含まない)
func (*Operation) ReturnErrorStatement ¶
ReturnErrorStatement コード生成時に利用する、エラーをreturnする文を生成する
func (*Operation) ReturnStatement ¶
ReturnStatement コード生成時に利用するreturn部分を生成する
func (*Operation) StubFieldDefines ¶
StubFieldDefines スタブ生成時のフィールド定義文を全フィールド分出力
func (*Operation) StubReturnStatement ¶
StubReturnStatement スタブ生成時のreturn文
type OperationsDefineFunc ¶
OperationsDefineFunc リソースに対するオペレーション定義用Func
type Resource ¶
type Resource struct { Name string // リソース名 e.g.: Server PathName string // リソースのパス名 APIのURLで利用される e.g.: server 省略した場合はNameを小文字にしたものとなる PathSuffix string // APIのURLで利用されるプレフィックス e.g.: api/cloud/1.1 IsGlobal bool // 全ゾーンで共通リソース(グローバルリソース) Operations []*Operation // このリソースに対する操作、OperationsDefineFuncが設定されている場合はそちらを呼び出して設定される }
Resource APIで操作する対象のリソース
func (*Resource) FileSafeName ¶
FileSafeName スネークケースにしたResourceの名前、コード生成時の保存先ファイル名に利用される
func (*Resource) GetPathName ¶
GetPathName リソースのパス名 APIのエンドポイントURLの算出で利用される 例: server
省略した場合はNameをスネークケース(小文字+アンダーバー)に変換したものが利用される
func (*Resource) GetPathSuffix ¶
GetPathSuffix PathSuffixの取得
func (*Resource) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
type Resources ¶
type Resources []*Resource
Resources []*Resourceのエイリアス
func (Resources) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (Resources) ImportStatementsForModelDef ¶
ImportStatementsForModelDef Resources配下に含まれる全てのモデルのフィールドを含めたimport文を生成する
type Result ¶
type Result struct { SourceField string // エンベロープのフィールド名 DestField string // xxxResultでのフィールド名 IsPlural bool Model *Model // パラメータの型情報 Tags *FieldTags }
Result Operationでの戻り値定義
func (*Result) GoTypeSourceCode ¶
GoTypeSourceCode ソースコードでの型表現
func (*Result) ImportStatements ¶
ImportStatements コード生成時に利用するimport文を生成する
func (*Result) ZeroInitializeSourceCode ¶
ZeroInitializeSourceCode 型に応じたzero値での初期化コード
func (*Result) ZeroValueSourceCode ¶
ZeroValueSourceCode 型に応じたzero値コード
type ResultType ¶
type ResultType struct {
// contains filtered or unexported fields
}
ResultType Operationからの戻り値の型情報
func (*ResultType) GoTypeSourceCode ¶
func (r *ResultType) GoTypeSourceCode() string
GoTypeSourceCode ソースコードでの型表現
func (*ResultType) ZeroInitializeSourceCode ¶
func (r *ResultType) ZeroInitializeSourceCode() string
ZeroInitializeSourceCode 型に応じたzero値での初期化コード
func (*ResultType) ZeroValueSourceCode ¶
func (r *ResultType) ZeroValueSourceCode() string
ZeroValueSourceCode 型に応じたzero値コード